CircosHeatmap-aardio/dist/lib/r-library/RInno/app/html/assumption_curve_info.html
2025-01-12 04:36:52 +08:00

158 lines
2.2 MiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />
<title></title>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4zIHwgKGMpIDIwMDUsIDIwMTUgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMyIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSkrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwib2JqZWN0IiE9PW0udHlwZShhKXx8YS5ub2RlVHlwZXx8bS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYoay5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZtLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UobywibXMtIikucmVwbGFjZShwLHEpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cihhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShuLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihyKE9iamVjdChhKSk/bS5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXIoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9ZiksbS5pc0Z1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG0uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omt9KSxtLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHIoYSl7dmFyIGI9Imxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPW0udHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iPT09Y3x8bS5pc1dpbmRvdyhhKT8hMToxPT09YS5ub2RlVHlwZSYmYj8hMDoiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgcz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9MTw8MzEsRD17fS5oYXNPd25Qcm9wZXJ0eSxFPVtdLEY9RS5wb3AsRz1FLnB1c2gsSD1FLnB1c2gsST1FLnNsaWNlLEo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2Q+YztjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LEs9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixMPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixNPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTj1NLnJlcGxhY2UoInciLCJ3IyIpLE89IlxcWyIrTCsiKigiK00rIikoPzoiK0wrIiooWypeJHwhfl0/PSkiK0wrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitOKyIpKXwpIitMKyIqXFxdIixQPSI6KCIrTSsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrTysiKSopfC4qKVxcKXwpIixRPW5ldyBSZWdFeHAoTCsiKyIsImciKSxSPW5ldyBSZWdFeHAoIl4iK0wrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTCsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitMKyIqLCIrTCsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTCsiKihbPit+XXwiK0wrIikiK0wrIioiKSxVPW5ldyBSZWdFeHAoIj0iK0wrIiooW15cXF0nXCJdKj8pIitMKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChQKSxXPW5ldyBSZWdFeHAoIl4iK04rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTS5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrTyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1ApLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTCsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTCsiKig/OihbKy1dfCkiK0wrIiooXFxkKyl8KSkiK0wrIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0srIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitMKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0wrIiooKD86LVxcZCk/XFxkKikiK0wrIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYT0vWyt+XS8sYmE9Lyd8XFwvZyxjYT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0wrIj98KCIrTCsiKXwuKSIsImlnIiksZGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGVhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChmYSl7SD17YXBwbHk6RS5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3LHg7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4sZD1kfHxbXSxrPWIubm9kZVR5cGUsInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PWsmJjkhPT1rJiYxMSE9PWspcmV0dXJuIGQ7aWYoIWUmJnApe2lmKDExIT09ayYmKGY9Xy5leGVjKGEpKSlpZihqPWZbMV0pe2lmKDk9PT1rKXtpZihoPWIuZ2V0RWxlbWVudEJ5SWQoaiksIWh8fCFoLnBhcmVudE5vZGUpcmV0dXJuIGQ7aWYoaC5pZD09PWopcmV0dXJuIGQucHVzaChoKSxkfWVsc2UgaWYoYi5vd25lckRvY3VtZW50JiYoaD1iLm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaikpJiZ0KGIsaCkmJmguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNle2lmKGZbMl0pcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChqPWZbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTEhPT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYSwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3JhKG9bbF0pO3c9YWEudGVzdChhKSYmcGEoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBILmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEMpLSh+YS5zb3VyY2VJbmRleHx8Qyk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gaWEoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaWEoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBwYShhKXtyZXR1cm4gYSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZhfWM9Z2Euc3VwcG9ydD17fSxmPWdhLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1nLmRvY3VtZW50RWxlbWVudCxlPWcuZGVmYXVsdFZpZXcsZSYmZSE9PWUudG9wJiYoZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixlYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudCgib251bmxvYWQiLGVhKSkscD0hZihnKSxjLmF0dHJpYnV0ZXM9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChnLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhZy5nZXRFbGVtZW50c0J5TmFtZXx8IWcuZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGMmJmMucGFyZW50Tm9kZT9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2EsZGEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuIHA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZy5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXGZdJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK0wrIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0wrIiooPzp2YWx1ZXwiK0srIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEoZnVuY3Rpb24oYSl7dmFyIGI9Zy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitMKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fHEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9JC50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCJkaXYiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIsUCl9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigifCIpKSxiPSQudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0PWJ8fCQudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ/ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWQ/YT09PWd8fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8tMTpiPT09Z3x8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9KKGssYSktSihrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGU9YS5wYXJlbnROb2RlLGY9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFlfHwhZilyZXR1cm4gYT09PWc/LTE6Yj09PWc/MTplPy0xOmY/MTprP0ooayxhKS1KKGssYik6MDtpZihlPT09ZilyZXR1cm4gbGEoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlpLnVuc2hpZnQoYyk7d2hpbGUoaFtkXT09PWlbZF0pZCsrO3JldHVybiBkP2xhKGhbZF0saVtkXSk6aFtkXT09PXY/LTE6aVtkXT09PXY/MTowfSxnKTpufSxnYS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdhKGEsbnVsbCxudWxsLGIpfSxnYS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksYj1iLnJlcGxhY2UoVSwiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFwfHxyJiZyLnRlc3QoYil8fHEmJnEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkQuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpYLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoY2EsZGEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGNhLGRhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8Z2EuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZ2EuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFguQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVi50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrTCsiKSIrYSsiKCIrTCsifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShRLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoO2lmKHEpe2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmcyl7az1xW3VdfHwocVt1XT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLG09alswXT09PXcmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5cGUmJisrbSYmbD09PWIpe2tbYV09W3csbixtXTticmVha319ZWxzZSBpZihzJiYoaj0oYlt1XXx8KGJbdV09e30pKVthXSkmJmpbMF09PT13KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK20mJihzJiYoKGxbdV18fChsW3VdPXt9KSlbYV09W3csbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxtPT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVt1XT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9pYShmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SihhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDppYShmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aWEoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksYlswXT1udWxsLCFjLnBvcCgpfX0pLGhhczppYShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGdhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKGNhLGRhKSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVy50ZXN0KGF8fCIiKXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoY2EsZGEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBaLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBZLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om9hKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpvYShmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6b2EoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPmM/YytiOmNdfSksZXZlbjpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLG9kZDpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0Om9hKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6b2EoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPW1hKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPW5hKGIpO2Z1bmN0aW9uIHFhKCl7fXFhLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgcWEsZz1nYS50b2tlbml6ZT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9elthKyIgIl07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXsoIWN8fChlPVMuZXhlYyhoKSkpJiYoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1ULmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFIsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1YW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiByYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHNhKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj14Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W3csZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbdV18fChiW3VdPXt9KSwoaD1pW2RdKSYmaFswXT09PXcmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiB0YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB1YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB2YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYmKGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHdhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXdhKGQpKSxlJiYhZVt1XSYmKGU9d2EoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dWEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6dmEocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXZhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9KKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj12YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SC5hcHBseShnLHIpfSl9ZnVuY3Rpb24geGEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1zYShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9c2EoZnVuY3Rpb24oYSl7cmV0dXJuIEooYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2Y+aTtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bc2EodGEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHdhKGk+MSYmdGEobSksaT4xJiZyYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFIsIiQxIiksYyxlPmkmJnhhKGEuc2xpY2UoaSxlKSksZj5lJiZ4YShhPWEuc2xpY2UoZSkpLGY+ZSYmcmEoYSkpfW0ucHVzaChjKX1yZXR1cm4gdGEobSl9ZnVuY3Rpb24geWEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbSxvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1qLHU9Znx8ZSYmZC5maW5kLlRBRygiKiIsayksdj13Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD11Lmxlbmd0aDtmb3IoayYmKGo9ZyE9PW4mJmcpO3EhPT14JiZudWxsIT0obD11W3FdKTtxKyspe2lmKGUmJmwpe209MDt3aGlsZShvPWFbbSsrXSlpZihvKGwsZyxoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXYpfWMmJigobD0hbyYmbCkmJnAtLSxmJiZyLnB1c2gobCkpfWlmKHArPXEsYyYmcSE9PXApe209MDt3aGlsZShvPWJbbSsrXSlvKHIscyxnLGgpO2lmKGYpe2lmKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09Ri5jYWxsKGkpKTtzPXZhKHMpfUguYXBwbHkoaSxzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz12LGo9dCkscn07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eGEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHlhKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGUsZil7dmFyIGksaixrLGwsbSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG89IWYmJmcoYT1uLnNlbGVjdG9yfHxhKTtpZihlPWV8fFtdLDE9PT1vLmxlbmd0aCl7aWYoaj1vWzBdPW9bMF0uc2xpY2UoMCksai5sZW5ndGg+MiYmIklEIj09PShrPWpbMF0pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbalsxXS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNhLGRhKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO24mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGouc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWk9WC5uZWVkc0NvbnRleHQudGVzdChhKT8wOmoubGVuZ3RoO3doaWxlKGktLSl7aWYoaz1qW2ldLGQucmVsYXRpdmVbbD1rLnR5cGVdKWJyZWFrO2lmKChtPWQuZmluZFtsXSkmJihmPW0oay5tYXRjaGVzWzBdLnJlcGxhY2UoY2EsZGEpLGFhLnRlc3QoalswXS50eXBlKSYmcGEoYi5wYXJlbnROb2RlKXx8YikpKXtpZihqLnNwbGljZShpLDEpLGE9Zi5sZW5ndGgmJnJhKGopLCFhKXJldHVybiBILmFwcGx5KGUsZiksZTticmVha319fXJldHVybihufHxoKGEsbykpKGYsYiwhcCxlLGFhLnRlc3QoYSkmJnBhKGIucGFyZW50Tm9kZSl8fGIpLGV9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIiKS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnREZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4uY3JlYXRlRWxlbWVudCgiZGl2IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6YS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGN8fCJpbnB1dCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEssZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDphW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTttLmZpbmQ9cyxtLmV4cHI9cy5zZWxlY3RvcnMsbS5leHByWyI6Il09bS5leHByLnBzZXVkb3MsbS51bmlxdWU9cy51bmlxdWVTb3J0LG0udGV4dD1zLmdldFRleHQsbS5pc1hNTERvYz1zLmlzWE1MLG0uY29udGFpbnM9cy5jb250YWluczt2YXIgdD1tLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHU9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyx2PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gdyhhLGIsYyl7aWYobS5pc0Z1bmN0aW9uKGIpKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZih2LnRlc3QoYikpcmV0dXJuIG0uZmlsdGVyKGIsYSxjKTtiPW0uZmlsdGVyKGIsYSl9cmV0dXJuIG0uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBtLmluQXJyYXkoYSxiKT49MCE9PWN9KX1tLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9tLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOm0uZmluZC5tYXRjaGVzKGEsbS5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxtLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9dGhpcyxlPWQubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobShhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobS5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyltLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9tLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcisiICIrYTphLGN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhdyh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmdC50ZXN0KGEpP20oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgeCx5PWEuZG9jdW1lbnQsej0vXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEE9bS5mbi5pbml0PWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZighYSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGM9IjwiPT09YS5jaGFyQXQoMCkmJiI+Ij09PWEuY2hhckF0KGEubGVuZ3RoLTEpJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOnouZXhlYyhhKSwhY3x8IWNbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHx4KS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihjWzFdKXtpZihiPWIgaW5zdGFuY2VvZiBtP2JbMF06YixtLm1lcmdlKHRoaXMsbS5wYXJzZUhUTUwoY1sxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8Yjp5LCEwKSksdS50ZXN0KGNbMV0pJiZtLmlzUGxhaW5PYmplY3QoYikpZm9yKGMgaW4gYiltLmlzRnVuY3Rpb24odGhpc1tjXSk/dGhpc1tjXShiW2NdKTp0aGlzLmF0dHIoYyxiW2NdKTtyZXR1cm4gdGhpc31pZihkPXkuZ2V0RWxlbWVudEJ5SWQoY1syXSksZCYmZC5wYXJlbnROb2RlKXtpZihkLmlkIT09Y1syXSlyZXR1cm4geC5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1kfXJldHVybiB0aGlzLmNvbnRleHQ9eSx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0uaXNGdW5jdGlvbihhKT8idW5kZWZpbmVkIiE9dHlwZW9mIHgucmVhZHk/eC5yZWFkeShhKTphKG0pOih2b2lkIDAhPT1hLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLG0ubWFrZUFycmF5KGEsdGhpcykpfTtBLnByb3RvdHlwZT1tLmZuLHg9bSh5KTt2YXIgQj0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxDPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O20uZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9YVtiXTt3aGlsZShlJiY5IT09ZS5ub2RlVHlwZSYmKHZvaWQgMD09PWN8fDEhPT1lLm5vZGVUeXBlfHwhbShlKS5pcyhjKSkpMT09PWUubm9kZVR5cGUmJmQucHVzaChlKSxlPWVbYl07cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksbS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYixjPW0oYSx0aGlzKSxkPWMubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZD5iO2IrKylpZihtLmNvbnRhaW5zKHRoaXMsY1tiXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9dC50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/bShhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbS5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP20udW5pcXVlKGYpOmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/bS5pbkFycmF5KHRoaXNbMF0sbShhKSk6bS5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhtLnVuaXF1ZShtLm1lcmdlKHRoaXMuZ2V0KCksbShhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBEKGEsYil7ZG8gYT1hW2JdO3doaWxlKGEmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1tLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50Om0ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPW0ubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9bS5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKENbYV18fChlPW0udW5pcXVlKGUpKSxCLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIEU9L1xTKy9nLEY9e307ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBtLmVhY2goYS5tYXRjaChFKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1tLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9GW2FdfHxHKGEpOm0uZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGYsZyxoPVtdLGk9IWEub25jZSYmW10saj1mdW5jdGlvbihsKXtmb3IoYz1hLm1lbW9yeSYmbCxkPSEwLGY9Z3x8MCxnPTAsZT1oLmxlbmd0aCxiPSEwO2gmJmU+ZjtmKyspaWYoaFtmXS5hcHBseShsWzBdLGxbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2M9ITE7YnJlYWt9Yj0hMSxoJiYoaT9pLmxlbmd0aCYmaihpLnNoaWZ0KCkpOmM/aD1bXTprLmRpc2FibGUoKSl9LGs9e2FkZDpmdW5jdGlvbigpe2lmKGgpe3ZhciBkPWgubGVuZ3RoOyFmdW5jdGlvbiBmKGIpe20uZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bS50eXBlKGMpOyJmdW5jdGlvbiI9PT1kP2EudW5pcXVlJiZrLmhhcyhjKXx8aC5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PWQmJmYoYyl9KX0oYXJndW1lbnRzKSxiP2U9aC5sZW5ndGg6YyYmKGc9ZCxqKGMpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGgmJm0uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxjKXt2YXIgZDt3aGlsZSgoZD1tLmluQXJyYXkoYyxoLGQpKT4tMSloLnNwbGljZShkLDEpLGImJihlPj1kJiZlLS0sZj49ZCYmZi0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9tLmluQXJyYXkoYSxoKT4tMTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGU9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9aT1jPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGk9dm9pZCAwLGN8fGsuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFpfSxmaXJlV2l0aDpmdW5jdGlvbihhLGMpe3JldHVybiFofHxkJiYhaXx8KGM9Y3x8W10sYz1bYSxjLnNsaWNlP2Muc2xpY2UoKTpjXSxiP2kucHVzaChjKTpqKGMpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGsuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFkfX07cmV0dXJuIGt9LG0uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixtLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixtLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIG0uRGVmZXJyZWQoZnVuY3Rpb24oYyl7bS5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1tLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/bS5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixtLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWQuY2FsbChhcmd1bWVudHMpLGU9Yy5sZW5ndGgsZj0xIT09ZXx8YSYmbS5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZTowLGc9MT09PWY/YTptLkRlZmVycmVkKCksaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9kLmNhbGwoYXJndW1lbnRzKTplLGM9PT1pP2cubm90aWZ5V2l0aChiLGMpOi0tZnx8Zy5yZXNvbHZlV2l0aChiLGMpfX0saSxqLGs7aWYoZT4xKWZvcihpPW5ldyBBcnJheShlKSxqPW5ldyBBcnJheShlKSxrPW5ldyBBcnJheShlKTtlPmI7YisrKWNbYl0mJm0uaXNGdW5jdGlvbihjW2JdLnByb21pc2UpP2NbYl0ucHJvbWlzZSgpLmRvbmUoaChiLGssYykpLmZhaWwoZy5yZWplY3QpLnByb2dyZXNzKGgoYixqLGkpKTotLWY7cmV0dXJuIGZ8fGcucmVzb2x2ZVdpdGgoayxjKSxnLnByb21pc2UoKX19KTt2YXIgSDttLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBtLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9LG0uZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP20ucmVhZHlXYWl0Kys6bS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMD8hLS1tLnJlYWR5V2FpdDohbS5pc1JlYWR5KXtpZigheS5ib2R5KXJldHVybiBzZXRUaW1lb3V0KG0ucmVhZHkpO20uaXNSZWFkeT0hMCxhIT09ITAmJi0tbS5yZWFkeVdhaXQ+MHx8KEgucmVzb2x2ZVdpdGgoeSxbbV0pLG0uZm4udHJpZ2dlckhhbmRsZXImJihtKHkpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLG0oeSkub2ZmKCJyZWFkeSIpKSl9fX0pO2Z1bmN0aW9uIEkoKXt5LmFkZEV2ZW50TGlzdGVuZXI/KHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSiwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixKLCExKSk6KHkuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSiksYS5kZXRhY2hFdmVudCgib25sb2FkIixKKSl9ZnVuY3Rpb24gSigpeyh5LmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWV2ZW50LnR5cGV8fCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpJiYoSSgpLG0ucmVhZHkoKSl9bS5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe2lmKCFIKWlmKEg9bS5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpc2V0VGltZW91dChtLnJlYWR5KTtlbHNlIGlmKHkuYWRkRXZlbnRMaXN0ZW5lcil5LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSk7ZWxzZXt5LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsSik7dmFyIGM9ITE7dHJ5e2M9bnVsbD09YS5mcmFtZUVsZW1lbnQmJnkuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGQpe31jJiZjLmRvU2Nyb2xsJiYhZnVuY3Rpb24gZSgpe2lmKCFtLmlzUmVhZHkpe3RyeXtjLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7cmV0dXJuIHNldFRpbWVvdXQoZSw1MCl9SSgpLG0ucmVhZHkoKX19KCl9cmV0dXJuIEgucHJvbWlzZShiKX07dmFyIEs9InVuZGVmaW5lZCIsTDtmb3IoTCBpbiBtKGspKWJyZWFrO2sub3duTGFzdD0iMCIhPT1MLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxtKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09SyYmKGIuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWIub2Zmc2V0V2lkdGgsYSYmKGMuc3R5bGUuem9vbT0xKSksYy5yZW1vdmVDaGlsZChkKSl9KSxmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2goYil7ay5kZWxldGVFeHBhbmRvPSExfX1hPW51bGx9KCksbS5hY2NlcHREYXRhPWZ1bmN0aW9uKGEpe3ZhciBiPW0ubm9EYXRhWyhhLm5vZGVOYW1lKyIgIikudG9Mb3dlckNhc2UoKV0sYz0rYS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PWMmJjkhPT1jPyExOiFifHxiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifTt2YXIgTT0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE49LyhbQS1aXSkvZztmdW5jdGlvbiBPKGEsYixjKXtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSl7dmFyIGQ9ImRhdGEtIitiLnJlcGxhY2UoTiwiLSQxIikudG9Mb3dlckNhc2UoKTtpZihjPWEuZ2V0QXR0cmlidXRlKGQpLCJzdHJpbmciPT10eXBlb2YgYyl7dHJ5e2M9InRydWUiPT09Yz8hMDoiZmFsc2UiPT09Yz8hMToibnVsbCI9PT1jP251bGw6K2MrIiI9PT1jPytjOk0udGVzdChjKT9tLnBhcnNlSlNPTihjKTpjfWNhdGNoKGUpe31tLmRhdGEoYSxiLGMpfWVsc2UgYz12b2lkIDB9cmV0dXJuIGN9ZnVuY3Rpb24gUChhKXt2YXIgYjtmb3IoYiBpbiBhKWlmKCgiZGF0YSIhPT1ifHwhbS5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmInRvSlNPTiIhPT1iKXJldHVybiExOwoKcmV0dXJuITB9ZnVuY3Rpb24gUShhLGIsZCxlKXtpZihtLmFjY2VwdERhdGEoYSkpe3ZhciBmLGcsaD1tLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9tLmNhY2hlOmEsaz1pP2FbaF06YVtoXSYmaDtpZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWEoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYSgpe3JldHVybiExfWZ1bmN0aW9uIGNhKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2EoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWE6YmEpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJhLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJhLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFhLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmE7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRhKGEpe3ZhciBiPWVhLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYT0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmE9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYT1uZXcgUmVnRXhwKCI8KD86IitlYSsiKVtcXHMvPl0iLCJpIiksaGE9L15ccysvLGlhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamE9LzwoW1x3Ol0rKS8sa2E9Lzx0Ym9keS9pLGxhPS88fCYjP1x3KzsvLG1hPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2E9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBhPS9edHJ1ZVwvKC4qKS8scWE9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJhPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2E9ZGEoeSksdGE9c2EuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmEub3B0Z3JvdXA9cmEub3B0aW9uLHJhLnRib2R5PXJhLnRmb290PXJhLmNvbGdyb3VwPXJhLmNhcHRpb249cmEudGhlYWQscmEudGg9cmEudGQ7ZnVuY3Rpb24gdWEoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWEoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZhKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdhKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWEoYSl7dmFyIGI9cGEuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YShhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGEoYikudGV4dD1hLnRleHQseWEoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRhLmlubmVySFRNTD1hLm91dGVySFRNTCx0YS5yZW1vdmVDaGlsZChmPXRhLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YShmKSxoPXVhKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmEoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWEoYSksZD1kfHx1YShmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFhKGUsZFtnXSk7ZWxzZSBBYShhLGYpO3JldHVybiBkPXVhKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnphKGQsIWkmJnVhKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYShiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYS50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamEuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJhW2ldfHxyYS5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYSwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhhLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2EudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYS50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHVhKHAsImlucHV0IiksdmEpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXVhKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnphKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2EudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13YSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWEoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6YSh1YShjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHVhKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmEsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWEudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2EudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoYSl8fHJhWyhqYS5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGlhLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWEodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5hLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YShpLCJzY3JpcHQiKSx4YSksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWEoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWEpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYS50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWEsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENhLERhPXt9O2Z1bmN0aW9uIEVhKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYShhKXt2YXIgYj15LGM9RGFbYV07cmV0dXJuIGN8fChjPUVhKGEsYiksIm5vbmUiIT09YyYmY3x8KENhPShDYXx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2FbMF0uY29udGVudFdpbmRvd3x8Q2FbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWEoYSxiKSxDYS5kZXRhY2goKSksRGFbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYT0vXm1hcmdpbi8sSGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYSxKYSxLYT0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYT1mdW5jdGlvbihiKXtyZXR1cm4gYi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl06dm9pZCAwLGMmJigiIiE9PWd8fG0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoZz1tLnN0eWxlKGEsYikpLEhhLnRlc3QoZykmJkdhLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMD09PWc/ZzpnKyIifSk6eS5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoSWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3VycmVudFN0eWxlfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jW2JdOnZvaWQgMCxudWxsPT1nJiZoJiZoW2JdJiYoZz1oW2JdKSxIYS50ZXN0KGcpJiYhS2EudGVzdChiKSYmKGQ9aC5sZWZ0LGU9YS5ydW50aW1lU3R5bGUsZj1lJiZlLmxlZnQsZiYmKGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxoLmxlZnQ9ImZvbnRTaXplIj09PWI/IjFlbSI6ZyxnPWgucGl4ZWxMZWZ0KyJweCIsaC5sZWZ0PWQsZiYmKGUubGVmdD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ8fCJhdXRvIn0pO2Z1bmN0aW9uIExhKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3ZhciBjPWEoKTtpZihudWxsIT1jKXJldHVybiBjP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0hZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGcsaDtpZihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsZD1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sYz1kJiZkLnN0eWxlKXtjLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsay5vcGFjaXR5PSIwLjUiPT09Yy5vcGFjaXR5LGsuY3NzRmxvYXQ9ISFjLmNzc0Zsb2F0LGIuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixiLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsay5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWIuc3R5bGUuYmFja2dyb3VuZENsaXAsay5ib3hTaXppbmc9IiI9PT1jLmJveFNpemluZ3x8IiI9PT1jLk1vekJveFNpemluZ3x8IiI9PT1jLldlYmtpdEJveFNpemluZyxtLmV4dGVuZChrLHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZyYmaSgpLGd9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmkoKSxmfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmkoKSxlfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWgmJmkoKSxofX0pO2Z1bmN0aW9uIGkoKXt2YXIgYixjLGQsaTtjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlJiYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxkKGQpLmFwcGVuZENoaWxkKGIpLGIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGUiLGU9Zj0hMSxoPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGU9IjElIiE9PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e30pLnRvcCxmPSI0cHgiPT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxpPWIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSksaS5zdHlsZS5jc3NUZXh0PWIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowIixpLnN0eWxlLm1hcmdpblJpZ2h0PWkuc3R5bGUud2lkdGg9IjAiLGIuc3R5bGUud2lkdGg9IjFweCIsaD0hcGFyc2VGbG9hdCgoYS5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHt9KS5tYXJnaW5SaWdodCksYi5yZW1vdmVDaGlsZChpKSksYi5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGk9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxpWzBdLnN0eWxlLmNzc1RleHQ9Im1hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0LGcmJihpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixnPTA9PT1pWzBdLm9mZnNldEhlaWdodCksYy5yZW1vdmVDaGlsZChkKSl9fX0oKSxtLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciBNYT0vYWxwaGFcKFteKV0qXCkvaSxOYT0vb3BhY2l0eVxzKj1ccyooW14pXSopLyxPYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoLiopJCIsImkiKSxRYT1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1MrIikiLCJpIiksUmE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFNhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxUYT1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFVhKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1UYS5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VGFbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gVmEoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlUoZCkmJihmW2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIsRmEoZC5ub2RlTmFtZSkpKSk6KGU9VShkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZtLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzptLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFdhKGEsYixjKXt2YXIgZD1QYS5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFhhKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1tLmNzcyhhLGMrVFtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gWWEoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPUlhKGEpLGc9ay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1KYShhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLEhhLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK1hhKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1tLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPUphKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ay5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1tLmNzc1Byb3BzW2hdfHwobS5jc3NQcm9wc1toXT1VYShpLGgpKSxnPW0uY3NzSG9va3NbYl18fG0uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVFhLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobS5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG0uY3NzTnVtYmVyW2hdfHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpO3JldHVybiBiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVVhKGEuc3R5bGUsaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSxnJiYiZ2V0ImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUphKGEsYixkKSksIm5vcm1hbCI9PT1mJiZiIGluIFNhJiYoZj1TYVtiXSksIiI9PT1jfHxjPyhlPXBhcnNlRmxvYXQoZiksYz09PSEwfHxtLmlzTnVtZXJpYyhlKT9lfHwwOmYpOmZ9fSksbS5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGM/T2EudGVzdChtLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0aD9tLnN3YXAoYSxSYSxmdW5jdGlvbigpe3JldHVybiBZYShhLGIsZCl9KTpZYShhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJklhKGEpO3JldHVybiBXYShhLGMsZD9YYShhLGIsZCxrLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksay5vcGFjaXR5fHwobS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTmEudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW0uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1tLnRyaW0oZi5yZXBsYWNlKE1hLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPU1hLnRlc3QoZik/Zi5yZXBsYWNlKE1hLGUpOmYrIiAiK2UpfX0pLG0uY3NzSG9va3MubWFyZ2luUmlnaHQ9TGEoay5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bS5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LEphLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxtLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStUW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LEdhLnRlc3QoYSl8fChtLmNzc0hvb2tzW2ErYl0uc2V0PVdhKX0pLG0uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG0uaXNBcnJheShiKSl7Zm9yKGQ9SWEoYSksZT1iLmxlbmd0aDtlPmc7ZysrKWZbYltnXV09bS5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP20uc3R5bGUoYSxiLGMpOm0uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1UodGhpcyk/bSh0aGlzKS5zaG93KCk6bSh0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBaYShhLGIsYyxkLGUpewpyZXR1cm4gbmV3IFphLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bS5Ud2Vlbj1aYSxaYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlphLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChtLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOlphLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPVphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9Yj1tLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmEucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVphLnByb3RvdHlwZSxaYS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFphLnByb3BIb29rcy5zY3JvbGxUb3A9WmEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYS5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRhLF9hLGFiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2I9L3F1ZXVlSG9va3MkLyxkYj1baWJdLGViPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJiLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJiLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGE9dm9pZCAwfSksJGE9bS5ub3coKX1mdW5jdGlvbiBnYihhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYihhLGIsYyl7Zm9yKHZhciBkLGU9KGViW2JdfHxbXSkuY29uY2F0KGViWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmEoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmEoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYi5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYShhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYihxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpiKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2IoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGIubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGF8fGZiKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYXx8ZmIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpiKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kYltmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGIsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYix7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlYltjXT1lYltjXXx8W10sZWJbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYi51bnNoaWZ0KGEpOmRiLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2IudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2IoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdiKCJzaG93Iiksc2xpZGVVcDpnYigiaGlkZSIpLHNsaWRlVG9nZ2xlOmdiKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGE9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYT12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYXx8KF9hPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2EpLF9hPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYj0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGIsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYixuYixvYj1tLmV4cHIuYXR0ckhhbmRsZSxwYj0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFiPWsuZ2V0U2V0QXR0cmlidXRlLHJiPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25iOm1iKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYiYmcWJ8fCFwYi50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFiP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYiYmcWJ8fCFwYi50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYiYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2JbYl18fG0uZmluZC5hdHRyO29iW2JdPXJiJiZxYnx8IXBiLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9iW2JdLG9iW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvYltiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmImJnFifHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1iJiZtYi5zZXQoYSxiLGMpfX0pLHFifHwobWI9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYi5pZD1vYi5uYW1lPW9iLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWIuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWIuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yj0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2IudGVzdChhLm5vZGVOYW1lKXx8dGIudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWI9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHViLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZiPW0ubm93KCksd2I9L1w/Lyx4Yj0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YixmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHliLHpiLEFiPS8jLiokLyxCYj0vKFs/Jl0pXz1bXiZdKi8sQ2I9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYj0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYj0vXig/OkdFVHxIRUFEKSQvLEZiPS9eXC9cLy8sR2I9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGI9e30sSWI9e30sSmI9IiovIi5jb25jYXQoIioiKTt0cnl7emI9bG9jYXRpb24uaHJlZn1jYXRjaChLYil7emI9eS5jcmVhdGVFbGVtZW50KCJhIiksemIuaHJlZj0iIix6Yj16Yi5ocmVmfXliPUdiLmV4ZWMoemIudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYihhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emIsdHlwZToiR0VUIixpc0xvY2FsOkRiLnRlc3QoeWJbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05iKE5iKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5iKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxiKEhiKSxhamF4VHJhbnNwb3J0OkxiKEliKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNiLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpiKSsiIikucmVwbGFjZShBYiwiIikucmVwbGFjZShGYix5YlsxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdiLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWJbMV0mJmNbMl09PT15YlsyXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWJbM118fCgiaHR0cDoiPT09eWJbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWIoSGIsayxiLHYpLDI9PT10KXJldHVybiB2O2g9bS5ldmVudCYmay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWIudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdiLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJiLnRlc3QoZSk/ZS5yZXBsYWNlKEJiLCIkMV89Iit2YisrKTplKyh3Yi50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmIrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0piKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYihJYixrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9iKGssdixjKSksdT1QYihrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYj0vJTIwL2csUmI9L1xbXF0kLyxTYj0vXHI/XG4vZyxUYj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZiKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJiLnRlc3QoYSk/ZChhLGUpOlZiKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYihhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZiKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFiLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYiwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2IsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmIoKXx8JGIoKX06WmI7dmFyIFdiPTAsWGI9e30sWWI9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhiKVhiW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYiYmIndpdGhDcmVkZW50aWFscyJpbiBZYixZYj1rLmFqYXg9ISFZYixZYiYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYjtpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhiW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGJbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmIoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGIoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2I9W10sYWM9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2IucG9wKCl8fG0uZXhwYW5kbysiXyIrdmIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWMudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2IucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmM9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiYylyZXR1cm4gYmMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2M9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGMoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRjKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjYzt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjY30pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGMoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYShrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYShhLGIpLEhhLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWM9YS5qUXVlcnksZmM9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmMpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVjKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="data:text/css;charset=utf-8,html%7Bfont%2Dfamily%3Asans%2Dserif%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%7Dbody%7Bmargin%3A0%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cmenu%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%2Dcolor%3Atransparent%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Cstrong%7Bfont%2Dweight%3A700%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dh1%7Bmargin%3A%2E67em%200%3Bfont%2Dsize%3A2em%7Dmark%7Bcolor%3A%23000%3Bbackground%3A%23ff0%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bposition%3Arelative%3Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D%2E5em%7Dsub%7Bbottom%3A%2D%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7Bheight%3A0%3B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7Dpre%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2Cmonospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bmargin%3A0%3Bfont%3Ainherit%3Bcolor%3Ainherit%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3Dbutton%5D%2Cinput%5Btype%3Dreset%5D%2Cinput%5Btype%3Dsubmit%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bpadding%3A0%3Bborder%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3Dcheckbox%5D%2Cinput%5Btype%3Dradio%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%3B%2Dwebkit%2Dappearance%3Atextfield%7Dinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bpadding%3A%2E35em%20%2E625em%20%2E75em%3Bmargin%3A0%202px%3Bborder%3A1px%20solid%20silver%7Dlegend%7Bpadding%3A0%3Bborder%3A0%7Dtextarea%7Boverflow%3Aauto%7Doptgroup%7Bfont%2Dweight%3A700%7Dtable%7Bborder%2Dspacing%3A0%3Bborder%2Dcollapse%3Acollapse%7Dtd%2Cth%7Bpadding%3A0%7D%40media%20print%7B%2A%2C%3Aafter%2C%3Abefore%7Bcolor%3A%23000%21important%3Btext%2Dshadow%3Anone%21important%3Bbackground%3A0%200%21important%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%21important%3Bbox%2Dshadow%3Anone%21important%7Da%2Ca%3Avisited%7Btext%2Ddecoration%3Aunderline%7Da%5Bhref%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28href%29%20%22%29%22%7Dabbr%5Btitle%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28title%29%20%22%29%22%7Da%5Bhref%5E%3D%22javascript%3A%22%5D%3Aafter%2Ca%5Bhref%5E%3D%22%23%22%5D%3Aafter%7Bcontent%3A%22%22%7Dblockquote%2Cpre%7Bborder%3A1px%20solid%20%23999%3Bpage%2Dbreak%2Dinside%3Aavoid%7Dthead%7Bdisplay%3Atable%2Dheader%2Dgroup%7Dimg%2Ctr%7Bpage%2Dbreak%2Dinside%3Aavoid%7Dimg%7Bmax%2Dwidth%3A100%25%21important%7Dh2%2Ch3%2Cp%7Borphans%3A3%3Bwidows%3A3%7Dh2%2Ch3%7Bpage%2Dbreak%2Dafter%3Aavoid%7D%2Enavbar%7Bdisplay%3Anone%7D%2Ebtn%3E%2Ecaret%2C%2Edropup%3E%2Ebtn%3E%2Ecaret%7Bborder%2Dtop%2Dcolor%3A%23000%21important%7D%2Elabel%7Bborder%3A1px%20solid%20%23000%7D%2Etable%7Bborder%2Dcollapse%3Acollapse%21important%7D%2Etable%20td%2C%2Etable%20th%7Bbackground%2Dcolor%3A%23fff%21important%7D%2Etable%2Dbordered%20td%2C%2Etable%2Dbordered%20th%7Bborder%3A1px%20solid%20%23ddd%21important%7D%7D%40font%2Dface%7Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%20format%28%27embedded%2Dopentype%27%29%2Curl%28data%3Aapplication%2Fx%2Dfont%2Dwoff%3Bbase64%2Cd09GRgABAAAAAFuAAA8AAAAAsVwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAcbSqX3EdERUYAAAF0AAAAHwAAACABRAAET1MvMgAAAZQAAABFAAAAYGe5a4ljbWFwAAAB3AAAAsAAAAZy2q3jgWN2dCAAAAScAAAABAAAAAQAKAL4Z2FzcAAABKAAAAAIAAAACP%2F%2FAANnbHlmAAAEqAAATRcAAJSkfV3Cb2hlYWQAAFHAAAAANAAAADYFTS%2FYaGhlYQAAUfQAAAAcAAAAJApEBBFobXR4AABSEAAAAU8AAAN00scgYGxvY2EAAFNgAAACJwAAAjBv%2B5XObWF4cAAAVYgAAAAgAAAAIAFqANhuYW1lAABVqAAAAZ4AAAOisyygm3Bvc3QAAFdIAAAELQAACtG6o%2BU1d2ViZgAAW3gAAAAGAAAABsMYVFAAAAABAAAAAMw9os8AAAAA0HaBdQAAAADQdnOXeNpjYGRgYOADYgkGEGBiYGRgZBQDkixgHgMABUgASgB42mNgZulmnMDAysDCzMN0gYGBIQpCMy5hMGLaAeQDpRCACYkd6h3ux%2BDAoPD%2FP%2FOB%2FwJAdSIM1UBhRiQlCgyMADGWCwwAAAB42u2UP2hTQRzHf5ekaVPExv6JjW3fvTQ0sa3QLA5xylBLgyBx0gzSWEUaXbIoBBQyCQGHLqXUqYNdtIIgIg5FHJxEtwqtpbnfaV1E1KFaSvX5vVwGEbW6OPngk8%2FvvXfv7pt3v4SImojIDw6BViKxRgIVBaZwVdSv%2BxvXA%2BIuzqcog2cOkkvDNE8Lbqs74k64i%2B5Sf3u8Z2AnIRLbyVCyTflVSEXVoEqrrMqrgiqqsqqqWQ5xlAc5zWOc5TwXucxVnuE5HdQhHdFRHdNJndZZndeFLc%2FzsKJLQ%2FWV6BcrCdWkwspVKZVROaw0qUqqoqZZcJhdTnGGxznHBS5xhad5VhNWCuturBTXKZ3RObuS98pb9c57k6ql9rp2v1as5deb1r6s9q1GV2IrHSt73T631424YXzjgPwqt%2BRn%2BVG%2BlRvyirwsS%2FKCPCfPytPypDwhj8mjctRZd9acF86y89x55jxxHjkPnXstXfbt%2FpNjj%2FnwXW%2BcHa6%2FSYvZ7yEwbDYazDcIgoUGzY3h2HtqgUcs1AFPWKgTXrRQF7xkoQhRf7uF9hPFeyzUTTSwY6EoUUJY6AC8bSGMS4Ys1Au3WaiPSGGsMtkdGH2rzJgYHAaYjxIwQqtB1CnYkEZ9BM6ALOpROAfyqI%2FDBQudgidBETXuqRIooz4DV0AV9UV4GsyivkTEyMMmw1UYGdhkuAYjA5sMGMvIwCbDDRgZeAz1TXgcmDy3YeRhk%2BcOjCxsMjyAkYFNhscwMrDJ8BQ2886gXoaRhedQvyTSkDZ7uA6HLLQBI5vGntAbGHugTc53cMxC7%2BE4SKL%2BACOzNpk3YWTWJid%2BiRo5NXIKM3fBItAPW55FdJLY3FeHBDr90606JCIU9Jk%2BMs3%2FY%2F8L8jUq3y79bJ%2F0%2F%2BROoP4v9v%2F4%2Fmj%2Bi7HBXUd0%2FelU6IHfHt8Aj9EPGAAoAvgAAAAB%2F%2F8AAnjaxb0JfBvVtTA%2BdxaN1hltI1m2ZVuSJVneLVlSHCdy9oTEWchqtrBEJRAgCYEsQNhC2EsbWmpI2dqkQBoSYgKlpaQthVL0yusrpW77aEubfq%2Fly%2BujvJampSTW5Dvnzmi1E%2Bjr%2F%2F3%2BXmbu3Llz77nnbuece865DMu0MAy5jGtiOEZkOp8lTNeUwyLP%2FDH%2BrEH41ZTDHAtB5lkOowWMPiwayNiUwwTjE46AI5xwhFrINPXYn%2F7ENY0dbWHfZAiTZbL8ID%2FInAd5xz2NpIH4STpDGonHIJNE3OP1KG4ISaSNeBuITAyRLgIxoiEUhFAnmUpEiXSRSGqAQEw0kuyFUIb0k2gnGSApyBFi0il2SI5YLGb5MdFjXCey4mNHzQ7WwLGEdZiPPgYR64we8THZHAt%2BwnT84D%2Fx8YTpGPgheKH4CMEDVF9xBOIeP3EbQgGH29BGgpGkIxCMTCW9qUTA0Zsir%2BQUP1mt%2BP2KusevwIO6Bx%2FIaj8%2FOD5O0VNrZW2EsqZBWbO1skRiEKE0DdlKKaSVO5VAuRpqk8VQJAqY7ydxaK44YJvrO2EWjOoDBoFYzQbDNkON%2BUbiKoRkywMWWf1j4bEY2iIY1AeMgvmEz%2FkVo9v4FSc%2FaMZMrFbjl4zWLL0%2BY5FlyzNlEVYDudJohg8gPUP7kcB%2Fmn%2BG6cd%2B5PV4Q72dXCgocWJADBgUuDTwiXiGSyZo14HOEQ2lE6k0XDIEusexDzZOMXwt1Dutz%2BtqmxTvlskNWXXUQIbhaurum9GrePqm9Yaeabjkiqf%2BbUvzDOvb2Y1E%2BEX2DnemcTP%2FzLcuu7xjQXdAtjR0Lo5n4%2FHs%2FGtntMlysHt%2B29NXbH6se%2F%2FWbFcyu%2Br28H0MwzI30DYeYTLMXIA2EG8QlHpAsyS0EfEToR0a3utIxFPJ3kiIHCCrZ66b0e2xEmL1dM9YN%2FMwS5p01N5jMX%2FBLKt%2F1R83l0LyC29M6%2BiYxo%2FUNg%2FEF7c2WyyW5tYl8WnhWg2%2FhyySbD5UhnDyS7OcU0dnrFw%2BDfGdI7v4QfYIIzOMq9hFtY55gmvC7jZ2FK7sEdrn6IXBuucYhjsGdQ8z0yEbWkkczjjsE5hNAIZrPx2zOLZDmKNXcXtg7EMqidAEEWg%2BSJCBBNwxvxJfc%2FbZa%2BKKf%2BxoKZybnq5vaqpPTye7CiF%2BZFjxZ8%2F7Qij0hfOG%2FcowPA1rT1l4ymWnrKmxxqfErTVrpgwPlz1kC%2BOy8NMDz6c%2BIO38K%2Fx0xkPnLW8Kx6qGAoQdL%2BTD9V9rb%2B%2Fctn%2F%2Ftrxz8dUrZrD%2Fzk%2FferF0cNt1BzctmX2FZPXt%2FjnFCQNz4Ah%2FiKllGiCMs1w5Lkg0kiEwj6VTXCDKsX9rMpnvIj9pcDecXAIXMnqn2dTUbN6w0XQ9ue6FV%2FnnXCH7S3lPWGltVcLsH75ub3ab7A8M28caNrIeOr3o5Q0yFsYL80xaa0EY%2FUEczV7icUMY5pnelAkmUAXmHYjvFWFGxuqlSaow3OM%2B%2FiYY7%2Fl%2FhVELF4EjRqNR%2FbvRbOY%2BDUGzGR%2FOh3EqmE%2FugIQQguGt%2FeMYz%2F%2BL0cimjeZfQDI3phXMbMQsqH%2BCjwVz%2Fhf4idHovgVmB8gLvjbicDcC%2FNypP536E%2F9N%2FpuMibExdohBmNwyiaZdJGoigos7GpF222xrfnZhML%2F7Z%2BylaqP63Hr%2Bm7bdUkQ6%2F2cXqdfmvwixY%2Bs2ksXFeXcE%2BiX0Z%2BIow76DBNgjJ7TOdUK18iPsPflfQD%2BDPsZG2Aj9VmKMMJ4fYRrhIaxhTDR0Elh2vA6h%2FAE6xUb29mj3sjmL72petXjejPy%2Boel60M99tFduCI59N3221xe7apOvxs6aHs7vab1IqY2tv7q2xsHeHGml%2FcV06u%2F8S%2FxTjJ%2BJYc0bWEX0ukW6YmIbGkJRMdjJ9mYIH5QIdJF4hvRGyK7cC7ctImQRcUET99fGXOoft35GYLMQu%2Bg2smnkgZUrH8AL%2F9Si217IssJ916nv14ZrJrvdxLkQvrvtBcjgPC0NXOicO8Qf4mcxPqh3hgUw3DDfdvLJXngg7N3dN2zbPJSaed3OfZnMU7dvmznp3C3bruO%2BNmue0LFsy7S%2B6265%2BfCKFYdvvuW6vmlblnUI8xCXp37CrOZv4B9gauDBlYp7adcUXB5DNCwYImlXOJJKkAdvExXxVvKEYnCo%2B3eIskP9qrrfIYs71CccBjfXRC52udTHHdaP1A1ui%2FVvH1otbrLrpNXBsGX5B89QghDyimlvNB2KfkxZ5C9%2Fem3%2Bd1%2Bd%2F%2FIfFp2%2B2Oxn%2Fs%2B9n%2F79p39S3s8idN6g0yZObwJOgKUpNB3GyU0Ls0PbRzIRq4lcarLKOJBkLRzJQD4j2090XrbA7DW8K3jNF5hlGS5e4V2D17zgss4T20egOJte5iD0bReM9yjTxnQxCRj3c5kFzGJmGbNKmwGw39IJDJcXJZGMkaAB4jyJAKw0jt5IAuIE%2BA%2BU3cVAZZrq9zhDyBrU8oosuxcGNTzCKJfla7JjNVmuSb%2F%2BtuzN2H%2BX4vlB%2BPpdfMXXmuVsNiub1T34SFbjYw5itEvVi0K0Nt9pNJUMI7SLGRhf2xipfCYf8z5OdlGKayOucFeVPeS%2Fdbo3lBrbSMmwUiQN5%2Fed7g0Ds1s17IuZC5kNzM3MZ6EWCa0DtekdJfAxz%2BR%2FOX28sND7yRMTBcf%2B%2Bs8mQCQWHya4qBv%2FufeMoWyslPA9DtMxUknxkH%2FyfTnm2CMYzs%2BCq3r7PxY%2FMXomrvTEsRpfEGHa%2BWN8E1AHjElb7d06ddA7oK%2F%2B5Mdsv9EtPms0jv0Z5kf1FqPxWdFtfFr0kHfgDX0Y%2B5PRSG7RUj0tQr7rmfX8DH4G5W28kKeJLtmQsQkuwMP1pk16EV4sl7vrMJATfyUWo%2FGwEco4rh4XFQgaiUX9qxZHrMQqKnz%2Fc2d8b9TysYrAuXpP%2FRf%2FGr8b1qwwc5a%2BeuLa6S6sneNXToG2XrEJi4R5SGs8Sq2S3d97bsfCRaTdaLwKClRHt37mkudvXbjwVrLhuYeGhh56bvfQkHpk2CwvwClqgWwuBfndC3c8dwmstj81KkagcUgbfPY8Zje0W%2F82VPWJHmSq6pP8hPWpotc%2FEexDOK3qU%2BwngPhOCiO9MJRm8TJefjelrzoKnG2Bn%2B1NCUmPE4gHFmBN9jrTigRIpsACrc9Gstg58ULkp9467%2BGf%2FeFnD5%2F31lNrt2967dhrm7bzI%2BVT5m%2BfzKhvf2MzpICEm79Bopkn07lt1762adNr127LwVqQLdJ5%2BlpQDcvHPQtVY5knhYrK6q8%2FJsiP6EuhGZdFdaNszjvpqvc%2BPI0CdjN0AXsFOC3ZfALDJwr4q2Xq%2BGF%2BGNbsxUg5NLLIEXi8otcDQcUts0D8eQ1iVDRAMBTsYiNdRIxE09EIBJO9A2xqgERTaW86BUFn0OD2xFO97FAgFhF6OoQ7prYt4XwSeUgQHiJyDbeke9IdQntciLQ1FlJMaYcUNvZBg%2BFB1ubjlnRNvl3o6IEU2w7fdNPhm%2Fhh%2BFLysUu6%2B%2BDLHkOkrSHYEjH0tEPe7WdD3uyDgvAgK%2Fm4szFFR7ch0toUgBTdWHr7EpaWru6%2B6dmbbnqWEbV2EtxAsXiZAPTtGPSbHsotI2leoM8TePEqgSQprs7AGFf8kuOkPdZPXGb55POAW1d%2FjLST9v5YflasP6v%2FCO7%2BGNAPC2BMZWmsOjp2NNbfHwMCJD%2BLPVL%2BD%2FOYlWEEI%2F9jpPddOFkB5d1GSuKZYggmCCd7JUxD7EXAzxyirYnNDLdDZoFdx14kivkvGc3579Jm36reTTvDgBnaO6vzyQ6chQmlsMoIkIQ2%2BbBDWBud1Va4pcCn8CPqxlh%2FfgtG8IPaPH8C5wk6%2FnZDv69jurV5QhtwE0x2iqOsj9Mx8B9%2F0EaUdiPfOYYDCi%2Fq9jhWRuupMDEU0%2BCtX0sDFxv07T%2FK5niBPqN9%2BtQjgEc31NGCXFeMcCEuQBIc%2FBK4CO78u7EPYvl3yaEfK3vcb6qP1R2tI7vUjVDDUdKubsSrNjYKY1qBEa2P50SJoaXiksIoLiCwnxS6EBuBde87botNfdEWwYvF%2FR0%2Fu5yCqhGeEOR2ynSeyXjt6ka7neyye8kryBSWE52y%2BRBgogrXPZ8E1yIHoHIFUM%2BAbJhE7lbMtt8ApL%2BxmZW7PwbjAO0fAVoXQOuiSP%2FksIVdFZ0aulsamKUzwPZ%2FNYDMJRBPCxsBqLzqHyneXF6Ej9HlIFo7%2Bpg%2BjUb3unRmGpstGkm6etOuDBGA5wCMefp1gTHcdZlvPBXlOslvYTp1cd8UjYLVd%2FJ5awNrIOKLnIt9MD9qdrKrWCvA6ALm3QV9VrsPm60Q7%2BRHJHP%2B2hqfugo%2FMvI2H%2Fmqr4b9tFnKSRY1Y5Ek80Nm%2FWIhr1ikKnxGz9TWXrokf9xwujfvcOTtNTWnxd0F37Y2W79tteBqZ4G5qLCuomw%2BnSr28QESCRVLTyYKILGJOPfcnaIFOsewhRdvv%2BrWa%2FWih0vlbX6Zb75T5C0qNKVFvH1QL%2FvazSWgC2s6oWXXIuUxQelKiJbowuJDQViatLmLijg9CQBMg8WiPgiw3LEeYRmm5f%2BXdnvkDnxLLjMLxtvX74C3OlwPQqx4xwIdpPx38LrlDphiyWUWHWKAzzxurS%2FxTo%2BP5wGFak62ap1PVFFN4v%2Fy%2BxuR39WnIO7lsWfwgVsK17wxrs9K8ltIKuhkw7f%2F6dhK6gQokFKhWX3urrjk%2FrnI0pgfpGMeuQIUaEM7%2BGF5q2iMkCaMQwxxOzcvU0eXbsnS9XknXvP7Gtw5dwPXlFu2ecvSHEZgNDsU6x%2FGdXBYXyOQjzZReSedeEPY6nEv9gJR4oBQJtFO6Kd0fwC6BO4LNHDeBujB6dSNcUQC9zIv2LnAzGk99bUDrdFY%2B9yGFQtEo0GQPNv6vS2drj4%2B1jHbv3aJSMUWP%2BQTZrmbNTjU8wyG%2FiXNNpskybLcJ3CiTF5Ir%2BJYzmJwE0mSVhlxbtbmvweB3ulB6Til5UuUZydpgiFVeobhU0WaBqpJ198d%2B%2FXeNRTZ9%2F1OPfG7%2B2hwzd5W3D%2BhmyjsRcUg%2F%2BCavb%2B%2BVh2ls3L7zT%2FetOnHNxeerv313vzLVqPai4nJv%2BK1FC6040%2F4udw7sAb3laSg0XCkAAs0npBO6VJabS4Elk%2FU%2BD4gTXW%2Bj0wnrMlqNamq4tMIYB87tE10i0FR3LZNhJsb7%2FR561btmes8YBCRkhYNByRtKd55mqTas9FYhJnbRGHuOh3M4QTdgQSqmgRxuzGdSvZGcbMxNQGk5C3ebLjoXIOFM4l%2BWKHmLTJwRv9E8GWJ6dYvf%2FFmEyEGr%2Bgyrr1p5zrgkz0Cw2j94Hv8Jdx7dIVegBSNtgsqGsRQEYiIBoXwD0LNvQ5d7s5Z00QzwNhqZA0b%2BtMG1tQq5nd84uq8R0zPvX35G8uRaze4jcOHzz0w1%2BQ2BIRvf6J6Kgatnrbiem%2BCFvAxfkrndzD9MFPP1GWTUHclpASUkCNAQkpCCcCgDSUDAhDZ%2BCuEkgn8J7i9nMA7pA4lISappxILKfAeSAbIcSDuN2bJcfZILqeO5rLs0MnngSHYRdrHjmaz7JEsEPw51ZqDJDmUIOZIe34WaQeegNsJn1qz8AIpT3yCjyEih%2FxELkuJ0lEMYTLVCiWpo5oYMleMH6USyYJcD%2BuOe%2BkWKpn1Qns34iyYDjkSLvgnZXcgVQNeqINXr48m3iS7cjm8tedyY0f1QvTnHHdsrKby%2F%2BSSbPY8%2FNH6vpl%2FEsq3Ae4ZU1HC44KFiI9o7CEgab%2FRqHbj7s5KAg06s39ZP%2FzxI%2FmVuF%2FTbTSy%2B3Fb8If9%2Fcv7%2Bwt91yy8RfP1QXtW5RzQn7qIiZyuFM5QfJ5E9uVnqT85TanFx0lkP3ukBAMprvsRyi%2FC8NAJL1xbIIirSvnSj4O5netb4JxmNANHPssHAcHMHsFRgEug816gDBeMbdfiuRcghqYcm0%2BXxx%2F5IAEtN3fqFF3LzAXqwoT0PN0OVTNqxo8sxMkd5Ig6k79Zk7VxxX6gMLOZFQgvpW2RrMW1D0BDihaXQ9wVRoBxPLfpknmkeMtoB%2FqM9cRc9IqmMD2XUmdZ7GSRKPUZvChf8BoykriM2MnKYbOHX8R7cLdNCxSFFVQqoYswnlWtlFS2mNkhswVpZiQW1J%2FUKFfipHGlUkM6UKBhMz1istELIHJLMSctu3ugzfaVSOjKvUgc%2FTHK4Sdg2Wscz69leKIkkrwuuWiOe9yGYKQXRumkC3qbRcMwrvhjNXgdZk3RxAUEhuSPvn3nnd%2B%2BU%2F3vlVOmrJzCD8JLxV1OHRjrZifbcFDOuRNTGqdgQm1tSNJ2OcQ04YiEXuxtII1ECSQRoQGYioEsgCfchB4ghAtw7FfJre4WZ9hkVi9MtjuWqtdNDlpMrfEG9fOT6q21okg%2Be4As38MfGquNt7oUws6Ysarj1%2FefE%2Byst86YUVNvDdts3Pv5c8m%2FaP0C%2Bf8%2FQb%2BIMnGq09BgwN01oIOAnAdagI8mBSrqk1gxTDUBOtk2ousEtBH2z4Ir2d3f6k8PXXVlt2qN9RODxRuoJT%2Fv27wm09jRYVc%2Fe%2B%2Biyx2tyzJb%2Fn3J0htXP87eSsQaf2Ly0s6Zmxela88REy1cf4273mI3iXNJ7KxrZibOm9xm6rl4fqy%2Ft27smU8tOfdW2ucBzg2UfmOIVyLIl3kpYlwphDISTXJXsctmiDtN7fNV6zelgxwnWxsVr83Aj%2FS5ki1jL%2Fa0GC6%2B2L6Um%2BaoddlNFuj%2BbJ8mH%2FiaLh8I0%2FU51NspIEfq0dohwyFXKgm4NggwQ4rRhCOUFtxxo8XnitT4cnGfT93IS8FaT85XE3H5LMY4zIEPL1hw443wz%2B1UmhTJyJGxZzw%2BwsKkKZgUiVtKOKMEb2AKHTv61FNc01PQFwKnvsZ%2F9pPA4RKTASWahmh%2B8MxwzHxKy74IRn5LGRjsPUUwTu64UYNY38caqd7HKucZ%2FtHnODtENw%2F2UfHRMaq1UUPDJQ0OKkWCeet5fYOhII1VRz8%2B%2FElg5j4Gxur3J8o2PJ4rg%2B2d08T%2FfwEzSVbyZ9XPro95T477lRKqUSRXQnauHNsISAl27oWi6Fv9z48JMv8r%2FaMMj8onCP%2FDuDZOuN%2BGPPr%2F%2Bp7bx%2B7JlbYdppcNhzKU%2F1Px5aiaGDn%2Fs1iGMaBcleKUo%2Fv9rcxkZj7DBEKOfrayytXNLYiUdBY%2BpleQXdnscKlQcpzuWluxsieeyuXIK6SdxozitWyGOV3vOHHjguyCQ6fpIYy2JwvrQEF%2FQa9Pdf%2FQqOSqCiE%2FEE1%2FXIVKTc2tzWbHnimrEd%2BVyz311Ml3P0GVTj7PD5aDnsvCvH36alEaPMePcMegXs7x8igTu4B9v7G9vTHvhCu%2FkzIdx%2BBxC0ay9zRSvoS0F2lIxI%2BX7klU63I40gLQ3w5ep5na%2BSFnba3z5D64zv%2BQtM4n4ffG3tq4aNHGRfxgrXPMim%2B5487abL7xhdseIRn1KDl%2B7aINixdv0OD%2BJSPwKf5%2BxoP6aiTeQIDVlIhMcL1H5R9PYXvprs3fv2bO7MOplCmweuiq2JRZ1zz%2B9a%2Fv2PH1Hfz9236w%2BZrPXvWfAxlj4NLLHpq3c%2FPQ3uvmvbrjG7fe%2Bo2y%2FcLdtE6VUlXi0ASb1VLUBVSUWSU4HdvAraTyS8xzM8NxvxFkXV6pUVRiJwcgC5zEeht4rwcp7ki0k41G0qlQhG1Vzlq8alEmnFi58caB5Q9vn988MLhqyVlHvLEWjtQFeupdiocF%2FtkkOGPW2ibWaBTkeZ%2FdvPWazXfOnnvL6jkRXpi85sFzZt%2B55ZptW3bl1cCCHZPD06MhySha7UFzjcjbp8fOecFCirzAG%2FyVjBX6OFIaadSjQq1nNhyIe8tVbaaSdHlXIWKacMeuZA1uxS95zILhyrxAdsXTL6m7kNQlx2P9uZf2qhufePFFbpI6%2FOU0WcP99RrCsrwseVot5mtytpf6Y0gm9sdeyKnPQ7onyK4nXlR%2Frg7H95M1upzu89DH6pgUcikoiihJ6NJKmRxV1x%2BMJiOA3YwhDRQrWU0u%2F0rvq0VYXnyCwsLeTJYBq3dAtJDavuzyoVpzZ99Z0%2Ba0uoiFH%2FxcqgDR7rUFeOrUn6Cywb8ZeNMbhLV5ugP9l0zv9UN5b5mFkjzxUcpPJCn3V402pRxtJd2GrnLdhtVk9ZSZh9W91fCSH5B7ofxPiWL%2Bj3D%2FuwhBRdyAyozeZwvQzs79soi%2BBKSnafLviZCcfrpBpLyimfLfTyJtbyruIQKD01tUwJyKEo%2FybaxkSNFUMdMkhQoJyRBQFhnUkDQSXhTM%2B3NmY0EDM7ffLIjqWEGt8lCO6mLia3PukFnghosJD5p5SIho%2FVDkzQfLE%2BIrYoJXkD19pdP7OwG%2FvoIUtagiWiZ4PAFTHHlTVhRZ7dYmPar%2BNJ%2B8JhmR6DFK5DV1foHoLNO%2FpHrvZfmWZ15RQlwvoVDKhCWNK3CCch9lfFBuAqUgpFSShmNaPj%2Bi5%2B%2BWZfKeViJfW5HnUakVL4UCNVkA4%2BETfIqx4B5xSaP2L1yn0zn2ltPn4%2BOqZGmwwEVCaCSqG53ldtL1oLGAhdMLd09MpCCF6tD6ZnAZBY9hDaYsP0jzZ0j5ZjKsF4i1UmLuhbJMCnYJPt5VwFNvmZawXjEvLJqIH8STonZjq7BZ8gKgR20C9MDFqJAX1H64QW2NEup6qgzLP8cvppL%2FNNTOBTCJABOHeWoXzLhw4Wuy7gaBtjKr9kgKq8ZlRYBS32Lpxc8vIhpNDTfyNXWybMJbn2RyQ5EmWc2QF9wmSZ0KYCE%2BcPuYO6b15Uotj2Kd4MItLS7gtFbkTdrFND6pvEZqv5Yv7jXAus7Pg7avo7KDot50NX3CPkP%2BKps8J9%2F3mGQIteY%2FLGPC%2BL7872SPR2br5fy8MtKBMHedGuM28%2FMZmPJMrGgi3Gb1S%2BSi1%2FL%2FzrZwO9XH1ce%2Fz7ZQ1WSoY%2F%2BpMb5FT4ua0Wm%2BJf%2F298nFmChEQ%2BTi71est4mq9VYI6RsymoRJKYidElT2FGnDTZvqtfhGAFTbeqEw68GqtfmbVa%2F1IFO1%2FjdWr%2F8BDRRtQh9XNjubEm4aWVpVonpTGR7PVGc%2BKJNoBIWF7kYi4gUV3r1U6723i6TxUl3n3%2FtM27aZfKb7THiHW9VzFSwHJ05VfK6Ar7kaB0XgPPE0BSkSFKsBUpaLihEWoA9wBt8qirh2VSOkZwXEwyrxZ5jyt2rJmSo9gX7cg6jsEUGJU9z9xJPOEM3uQQxKgkh35DNATnVyrmJ3mbCNyIB%2Fyox4wH1bg2DwN7q9kov4pFqny8oSm3RQbGgJ1QQTs6ZMLilOVYJ9v6Wha3HcJ9jddsXp9YhGUXLXt%2FqMDnvLpPNTXfNa60z5%2FyjXQOMq%2BlNmwh5egpYrdfZQZV9rI47xlRkuyTjpzsmCBSWNkAXVoK8sgYWqQJWbo1RLo6QH0YW6pxqfCnRgkd%2BRiFjUQUQ7poIaYoakgXxwFd9BuuI38H1xBxXSFb%2FpBDIKQFn7YB3dB36l7sG1FLaKiBdp1KxLvfswap%2F30lnVESgNnvjbUoT6w9N%2BXoio0qcYOIM%2Bheg940YimsucQVvli9NEcft2UZwGQwLuilj1fFr1i3NP94X%2BPE7Hpvtj6lBJfJ4R6NvWiaL6MgzWHxiN66DExa%2BdAdAbMYX6HVF8A%2B7rjEZIXAVbDe7PVI9rmN69JOLV1DOSvRPxWNPZBZf%2FNf%2BNy65BhYxxxV%2B77XJ2wfQ389%2FIQPgajXbwMsuAz%2F0IaQcXJavKbRqR2IqyZruXjVC2%2Bhdee%2F5vdnYOedpmVtR3NGXldxSzDSIiBVpkGb9by89UpEPKrSLZmyFDzMab%2FwXl2CNe7s%2FqCtTvWgG5kpBmCBlSzDS%2Fr8N4uwBwohRW63JTS1y32f0TQsPfXVGEHQrV8%2FNCfiOUVirYcBbIeA2%2BiF68rQIo3B%2FS628vYESr79ehzS7Q9LEL9UXmik9XVHb1yBO3Ngvt5935%2Bk1efkV51mzzrM0LL3%2F20avnwMeKuWyOUZg2TasSqZ%2BKcZQiOn1Iu2Vh497ALUVZiCKt%2Fgh6IvTIj1ZLRjWAkpHKOKovNwp00eqPROiAbiNEKieXwMLcXhVJ1%2FuzmLP4tfxaHR59cBdJVG1kTAgl9ze9QKUEQ946Hkb%2BokJ5JRDyf54Axur1D%2BWS49cLr0tTPEu7UmXrxcSr3XNvumv4yXzInXKH4F7Tc7p17Zt%2Bt%2FqW2%2B93k063X7VW6lALxTY7i1nBXMxcxmzQbabxz%2BtJo%2BwijYaIGMNS8AoSMgAPt84DdHOoMPfjXhF%2BkuH1tZvuFQrRCN07xGcXRX9MYxYchDe5BcHj%2BZ4i%2B42WyPc8Xofi7bbZJN5nJLJ5qr6IqRtzqNlM17SpFsnkEyTWoABEjz4JXOQvzWYuwdnV5LNGOwTM5v9r4RpQ8ZXsYodks3o31JBlzbYtNotisnm22MxiwGFXam5oN1n0TA%2FhRvshvTSDwHff4nNzRo9Dum6PaJbMXzDz%2Bx%2BFkj4L4bFNBb1asqsgH7Dyh4DvbkPtf5yMDKzEwyoaESMSNS9P9gJVA3%2FRTlwoMwZvxECFWxIPNw9gi01nOHjP32esZTtmXHnxvZd8ZtakqQ7ekajbXetpNa6ocTVxJtY%2BuSe69OLz77zh5bDR3xjZMzUz6fxrz1nqrZGcHQHfPVefN%2BfiK86LeXj%2BSc5lPKy%2Bk%2FvCUI%2FDaLFYCWHr6nbXuILTIsb5imNKY%2FrCm28fSMxPhkN1XbNMNZGuqwOBhtTSxWuTk6bw0ZaG86b1hKddePOKuBvmiguYBn4T%2FyOqOyGRBt7bKUI1GjioBC8aUKwF7Q319UgcmtFGIzCJGBqwQij0ynDsfdFGc3TS3BlNfJ25xmzniMkpXXTPvCaD3ZaZvyzjmZdudBostmhb0ORZNN2sJBeed1HXkrUsywueQH%2BL0eCPxmsa5ZpgRJSDZ11yDv%2Bjmbd86vxZfc1WcZJ3UkMq1BOOOVtvu%2F%2BpB%2Ben186d3GTwWAw2jheaJs09%2F%2BLNfZft37DALyrNj1wABMuUKbODyTVnT%2FKYbJ3Tpq8IrNh92dkxOj5P%2FYpZx4%2FycyiVcDYdn4JbEoKdQi9054iBKsygLW46FRGxAb0NPNCm8BSNCPjoKcj6EAus4SuP3rB%2BcV99%2FeTF6294dA8%2BTK6v74MHVpYNRt%2FI30e8QGTOOdfGWzzxcy%2B87a7bLjw37rHw1nPzp0KyyRSeZO%2BQQhInt3dYgvycjrPOv%2BT8s1rptaP84VeywdWX2T4ysr0%2F7TLIs6%2Bx9zib56ye1dM9e%2FXsZmePY3NDs9zlnNVt4%2BWgHJbbz3Livg4P9WWgviOMm4kCRT6I8vw0NbUUEnFvOuFKoxQW1gTsvFirsF5pb7qTUCx4i7VmtToveaDxvK9uOaedVvPRpVOnNz0Q6bry7uiSdQ8t7Vy4JQKVS%2BXPplV2ts4bvCwZu%2BKzgITtxepaPRzWdpv74muvv6RO0SorX6cu%2FdqKn%2FXWnrtp%2FZragz13DUCl5myiFW2Ycvb0PtsXnU%2Btx8pvLFbUspLX68mdegwmOif%2FNPDONajTGoUh6tU56HBJCTBASVvNUB5VIiKpc9kd7kludodSFz7xQbiOmMk5dOYk56gzL6uaf7N8a6MQOHm0ae6snZpFDfuT3%2FjdYzjzwkXXIVHoXNuCfQslQZqBZjTsoHMqrkE4jaYdgkGz2ATOgB3cPkSukD01DnV3ttb1wx%2B6arPqbkcNAHoFPzKUUQ%2BqL0k97pjbZv1I%2FegC9zTFbrrlFpNdmea%2BgIgfWW3wqkcis8ky5FAcRd1If5nNZrl2FFpungc8wpoCl1BpQV%2FScS%2BzjlASyUTVv%2FAJ46gkJI4bHX4lTnloctxPZE1ckS3%2BjG2fKIjkQFyzuo8jvYQG1OrGvJPSTu%2FnSp9PHNTl4z5hK%2F8gtXVKF6gEKiglgcKiRlCESsQCV5QIlKWKpr34lt%2FwkSx%2FJCmP5%2FcBKQfl%2F5gd%2BrOS%2F%2Bp91%2F%2BYCg5CXK2W4M9fu%2B%2F6xxX%2BvnelVuldIDCG0VQTpU9Dw4pRfei%2B6zWx0MLie0gPbyrkmRU7OwT16JGeyXLHqOLqAfVN1GPlBzWtFNzj0TRTCjogtP1NjIvu5habN5Aoa1k66wGpqriVetJgiGdwDZtKhnN0y4n9sXYnsqGmZfDSR15%2B5NLBlhoDaedEm7sxmpqRija6ZEEg2EAnTiAC8IrmFbGz1q08P9PSkjl%2F5bqzYqT9hMmptEXDgTqP3Wiye%2BsD4Wir4jCeoHbbp5hRfpB7BakUIppIlPCD30dR1GtslDz8OsqbXmejFC%2Fv8wu5X2myq7SJ8Avzv9DFUJySf5uNvq4%2BTi7W9D%2FOZrLChdwxmPNiBRqVjnpK%2FaGxRCDspVYKAW9AN1JANoo8wP4BJUlGqdgw6m1qPQ2QW3%2BOfU5%2FieLS%2FNuKpDU3uf8bcAXyBal5jMR2NEAbPAZt0K3hvxHBEDlUxfIGcD%2BN2gNSNx36nfqlAYow0puatNpRz0e4W2oahKzQHsjf2c16ad%2F3t2KTtPobnX6D8C8pd0MDP%2BKx7wnXqGGlLQcvikMErm6TmfsuxJXbSAxqNjOogJLQBLiKEHAE%2BJGTS3JoEhTrz8%2FCB%2B5YlupJ58aOat8Kv4JvregxwcU5Cp8GFAFm1FyOfto6GS2m1NGTS6CPNKkbsTdCBlnN9onMho55BX8IJZtEQ35lk%2BhtwN5A0V3RCPoD%2FyXAcv6pAtbZczRUA64JmcUf4q7Q89ZHLeJVZ5D1Ps%2Ft%2B0iCT3AHVtZC7JDCXfR7OSb%2FXja5H3zQbZL1B%2BULX1BMTEk3AseSpmnKEK4T9ekMIidUCRQFfcbj7z8gNLvzF7mbhQN8h6ZbRset%2BnQWdS%2FZX3k7WpS8P9sfo0iGS64wV516pOhjI6TZ2dApgI5%2BLhxywYoWxKUrykKJsIoDsR4mSrCTg0egMPnLW%2F3Q5Nn8BZEuzqEI7HK3n0%2BzFmuO3TtWQ5WJoG9YqCD6Gc32SxnbnVPfsxvrFXK2dILl7bLthDp6glhcsfp4bYvbSmj%2FmQ94uBTw0E73x2jbNRCvC6VL6GCFDwU7eWQDcC5FY5s0slieRDwtAbRsbLXbaXAuu14e2OJw1dc6jQ3ZdY8v7rv2%2FBWZLqvFWVvvcmwZkK9f5jS4muO9yR5res4kfkRxhV03L1RfPOiPtYi8pd7jNEsOpyTwxpaY%2FyCZu%2FAmd5Or9uS3DYaeqVOhH7gZN%2F8I%2Fwi1fEuLXvyNivibjuKvN%2B1Nc01HF%2F3h%2Bef%2FsOhox8MPd5SFucPjorQwXT%2BytA8EmA5mamHNFDVhBI5pjZbQpugBNkO8MvRub8KVDKST1Wag7D3xlin1ZF7LFP%2F79nbvCXFOY%2BPUjrT7%2FotsPXXZ4exdPzuhZuL5LUXVAn7k7PbhG89uz3b41X01gbjP1xwlu5rrvvf9%2Bpbs6E%2FVu7Nk642%2FPYRaAiUBdrmO6CDTBLPQFA1ur0uXoBR1INDMkypKpoTqnSMx5GiEdTEaSHLs0Alvu%2F19%2F5QW9Rv1U1ridT22i%2B53pzumbs%2BXFFXYC%2B%2BCGsTj5JUT%2FGCgRt3n78i2n71FHG4%2Fu6X%2B%2B9%2Braya7os3ZbDmgWfXun44e%2Bu2NZKuGZ0HiF8M4TlMPR%2BEU6rPKRJ8wOU2RFUFLex3egEsz3YqEAq0cqhAAW19dBZIlVzR61tuIdTnpXH7l%2BuXrbjPUyep%2B8cl6aXKWhPHpDcXl9KiTWDNr4mBQc8Tq%2BNzK%2FOKSbsfl79o9G20R%2BbrBXYvUg0rLHhtrc4TN81TTOWSZ0gL1ZVlOYH2ery%2F7XVUjFMbzYpg7UswcqJPQwBd0LKLabJ8IaCr2otcjSkIrGwootKECaUd4XH1%2BSdazRrfddkBU98t1htvWrbjqSqjaCguxrffM%2F5zDCpBALUycmajhd%2BR6ww4SWafuZ5eU%2BtPid4lgd3gt%2Bb%2FY9rQoZNmiXYPXyRHbRs8zX%2Ff4WIFjWZJtUdSD55AP3xtXH%2BZipC0EqdBGDA4CoYEU6gRLGPU11QhkLTBiEYPiqOeQgwTCl9aok1Qr5pFf71qEeNxjy%2F8F0GoqYPv75Yh9j3x4DuJ%2BuEzHRpAq2lMqb%2BqfTdiq6kGtzfOWsv0c7lSeMXDHBDe1MT%2BLUgx0Pg%2Fp87u2UicdIvqQi8DkxhcUwUXCedMpb4NQjwY3npTmgsURJavLwCRyEcN2HfWsDVGfv%2Fu9ZUWUx%2BPYFueUKwaNvbtu%2BXps3eVWbN1GcgVrdMnWJ7WmJz9SD66EBidag0NF1Ukep0t5A7sFCWdhzvYwHv6L%2FBehXuHqfaBwBEU7hfVLcXvS4VQv%2BT%2FvaSIl7cbeMc7ekv9i8S3e1L5xxpvMGcu1EYPbKyCiijjGXcDKckm43PqU2qNWlXusZMiqF82cuVzolUHN9NNR0HZPxFPV9V0wLtvq%2Bk4DqOwVWDlzuQLVdqFiP08cRX7aRlBVfR8cb55bWe5LExnlcsDp1vAP8Q9BucPMk1Ulh4GnN0SAdxcNHv3q9ohx1Ati4S%2FtkWjIDe3hQdkUGrGRaFBiUdiTSkI41UkMuuQHP%2BEaSQYlPQTFWJF03BNPpTu5KFAdkWgDukzsZKMG0Q1TAQQglScOaP%2FdsZ8%2BfP75D%2F9Uu5Gs3FY%2F2SxPld0DHOciXI9gqjcEidXjE%2B3BLosy0OcX3T7O5g65ROGyzQ2BZs7WbZVnO5ydLe32hMwTQ4wnnKXW6XW5LAa7oaXOIHoUl0FgLQLH2by8wSTWeAx2Y5PDazK3BqZbeJZwXGPaYhX87ZNszoDdaRxotXO1nNlpdvAPFWHDm8PqEE0sZxDEqGzxisFNnuCWetPcGrObN0p23tTZwMuRVodSV8%2BLTrOV3eRvzjQZiSjaLYS1WEJe0kNsJlZu9LFun7%2B%2BwW4gRDRbaxw2nrOGm%2BxOj9cmtbp9ZqeTM1m8UXfQQCSTVSQox6pvtjot%2FFpHvIUjJovFEoYvHYV9C5Y%2FxN9OfcalvII37UEhTbTg%2FAQIaPb4Vz6j5u8%2FaViycMod%2FfkDcpu8QZbZoeBi%2FvbzP3XPsZvOubMtaPHkD9jt6%2BU2O7vqU%2F9C9SMvgrXpQNG%2FE0oJxun%2BCiElUa0IKQSUwERxOntKSV7ekcuh9VBZBBo3VUcB58ofKBHCwLyf9qFosz9Ibf8dGqwaBMjRig4SGOZ2UkWI7UiO9OfUPdxOYFApUZyfpY7mgEc5rtNGGk2H1lPhAk1Hp%2FVAMqQEHEUfEYkkUQq1JMdzsX7kklRrTrUi1wMcDjmu1YYfATj7Y%2BpGpPEBXuoQIj8rR9mgCl4C9yqmF7xnVWxGVniNqtpVmXBvQ6iwni5YQ8a1jYrXtc2J13HvgkvqWxuva1sbr%2BP2S5ceKGyBwDv2DbrToe1u6BkAJV7xnVLUaq0sJB8pFqcUIPi3yuwxi4JuLr%2BP30f3OkPQ72aO0xYo3%2FEsmO3QO5qEF8S0qQH0UsKXv0brnl9%2B8M7jF174%2BDsfvPOl1au%2FRL5%2F9DsbNnwHL2pHR1NTRxMZhJtHktOOxLxErPF6YlLvpC9YP73x%2B4ofw%2B3xVdrHcDE0dQQCmCRgvt9b35xINDf1CDcRSfJ%2BpYl%2BSf8YcurfmXP5F%2Fkj6J82jNsrkWiEuhVlgFfyNkB3S5MUzLhoNiwSCYcxQ7Ui4J0Xh7fmqRbaPa1tzujxkBRlsEHy0%2FOM4pYLPb7g9O6BQJN6l9zQ0OGyCaZz0vMTbHOzXfQ7a2tsterTcqxeInODoemdktw%2B1SbVhKwtW9ffe8VKadK0OVuC3bWzyKm5LeddsWTeorWyY9IMtUFutdu5g%2BRn533qkocdvLs2HmhU75br%2FMmWtD8zA3OP2t1ea636jEzqYxJZGAwFiDEd61oTsrRuW3%2F3pYNi3bS%2BRd%2BGjOfVpAPNd6y64Gsz1GaZleWIPoYL%2Fv9mTeQBENVEguiF1aC4YeXxFETw6QyPfn0m9g8IrMFAvKM1EI11DARnbqibHk%2FIojy5rSdgCyZi06y8sS024PeuO4MfwQ5Y9yKRZCqyYaF30vzeHlmUprR21tR0t0yz8KZY66zWuGvxVQB%2F36kP%2BK38t2Hu6NQ9SFJfw0AdpqPEK2qTMpf2VCqJwqPoJezTL824b8akoL%2Bx03nhh%2BoNo5e77psxg9Q5LzebIKD%2BfsY34f2MtB9fk9v5b8PT6tYrgv4kRPwd0q9z3gdJSJ0653KjCYPwCaR5aUY63eW48O%2Fkdo33yxX9wCiMv2QTrk8eGSI6Ag6moG9t2P%2FF7GRNlDjl0gw7pJ5aOXXqyqn8SENnXBmbSwUYLyqJjv3UmY1nKr4t80no0faXsaIEiF%2FBRaIBnItSce4OUif7W6Vm9T9H1X9Vj71BEm%2BRdmIJQST%2FZfVdudUvh9S%2FqqNvqT98g9SQ3lHibZY0mRVHooyDN%2FFHmTgzjdozKw28NwQ0hwN6BCoPKaEk3YtKwNhwRLXuk076CGoZNXDQcRwZvreTZY9EZi%2Bd0s4%2Bztv8iei04JQl6ZbDD2eHV7X4uHuFVfPrOmcs6m6Kr7hssr%2B1VZFcEZ%2FPdJkn1hOs8SXS%2FNFFgqt94PIZzZ3tdaL6Q5vo6piSzdy737pwsX1VyxUrF15iJ4uNkq%2Brbyg1Z%2BO8VsNC1UmcvORPRfxtPrfRwL2p%2FoA1eZp6Z%2FaGffoewaXcA%2FxBlKlQLfhQL%2FoPgBGP3qsA7IQS8qDVNswHKRSheDUvA3Q7MZoRcJMxlEygujn1QdyzfPfq3dEp%2FbXh5e5YXW2Ngfvza0ZF6UgFL%2FE0fTq4LBlvTE2qb%2FKuuzYSXVnjTfM1osvqMHVbm9950quIZlbqaL6YP7jk3kUtA0GnX2nvq53f3WoSsvEdDRnULgo2fN7lNZJgI8%2FVWi33c3bBZnGY05%2Bdm%2B3qc7fNmj4YGKLj2nfqFP%2Bg7jdDlxEV5XsJQZP6hYrS1l0VQr4c69Xueixp90gnZPmE5OF22j%2BSYEWHlZ0K%2FHgsh%2FZtsbh6h2DNRlvv6jJh9XaJaHCZDiUDKNTMkvb8vsqCyf3ZNdSmO0fa0Y4baJTtpbKzuVzeeSI7fCKr2Z0WypapnXJ4gnoWy3PoUIlIQ1TXdqhQJIXp9Wx5fYdpeWh2TY5D%2BYVyKd0jw3iumwi%2FBC3cEy4o83QlZnW79MrCgCjbhWXBlRZVVZZv4rIKpXC01HFlHdHLoeWVl6UVc%2FJ5uGm6CViW5mulYMk%2BHqNYr0AyUPivLg2oMs2MPqtuhHyRyiwvNJej1Br%2BfcLyoAyu8D9B7bgmzUqfFobF5nKnK4%2Bt8MPJkI%2FxHUNWk117jugWF%2BxazTAALQn6%2BUE9lhoI5ApGA%2FiuJOsrlNP28SVVuBVajXmircLel46w2bJS1Q0Ft0KDuikDFL%2F3pYrid1Q4FvofwRIo4R9h2ftSwc6jHAMqLcCql8YPHtlzGoByNXYN6v8hXnRaOhUvx0sVLCexwupGDR4NOYC7PePa5keIPACnuAdD7dEadRuTIiS6Lb7uskb381My5yjzF8lGCjBRqdwrWJCagfB3yCy7XT1i92hbcZ5Ci1FJkgYMDf6n%2BjspIsHFjJrTOdzSMuOa9DbDcj%2FnH9N9bIoGVgzHPWIQuFuYtaMRaq8eCKI0gEF6lPOZjBz3EEvaaxwSUT9U%2F8JbJZPJJLBLolH1La%2FRbF9AbC8JJjv%2FmMnssKjLRBJyqj9QXxNko0Ux%2FX79epfiXkm6fmKwF%2Fen1HLc6LxloXWKvGa5rVCVL83VuiPcDEX%2FK5pTXOxHfx6HHB0t2FI0qI2rCZFTrvPWU67zVuS%2FkTsLnc7IKhFg30e4FOkqNSfH5PtkmUy6Cpiv%2F36k2sbqCeCFNa%2BURpoY0sZoYmCgCr3qgZz6s8I0gP1bYiR%2BD79H56NOz0EVWCTy2%2FfffvSCCx59W7uRV9995eqrX8GLesOXNm360iZ%2BT%2FEl3uZqL%2BFyzSZ8XxpTiI%2FG0nkT4zznFZ0t4ipMz5v4q9ssqbdKUZt6u82knPCrt6PZwsnn0XySVnyPR1ZXAn72yx48bWJsu7apnI3Hy8bygUK5Js32qcytapqgmn95uexccj205vGgJ%2BeuOeG2SORmKZr%2FqKzcx9SFctMJdwMUFZDJITs7dnOp1EKZCxg304Cevyfya%2BvlKqv6aXK1qIj3imL%2BL6hL%2ByvUlFfE0VKZ7E8gBY3M%2F8VoJCFgizH1W6VyC76nH6b7jiibYVxUmVIEspry%2FLgZIlCeP11Z4zs%2FAwvVwtGFEut5S1JY4lfyT0N%2FevOLo%2BrUEgjcqc9IkGpQbv3iW7Co5b%2BKgjvpzYdH85PLcc4X21ouwEGl%2FS4qnUAvoSlXUUhR1eKr2VWFTB%2BGMl6FsiQsVD1R3urlAAIoSn7JQkmiVVCHSpCwDH%2FqPepXQ0Db77CJOAImohB%2BRPWr31ev5g%2FkE%2BzTa4lbvZo8xdWPffQu9yJTPCNB66s%2BzXoJt%2F0L6hSoCuBIoK8fnBGG87OoRckJpLqyWe4YbpGi50g0%2B3I3UD85Oa0fzubfoXxPLbW3FDWzigmyJeM0tQkax7PqTy80%2BUxfUHPlBZIRVNQ%2Bv0xRm8REKPoLmNr0%2BUo48v9GFbXPKylqQ2IKm00QddgyWGMROCTxdLB9nCY8P7j2DjlsV%2F%2Bmfr0C0r%2FNkeXbbpPlOTBBwT0mVz1zx9S%2FwJecBF9Wgv3p032iP2v4VSgfgW2G%2BHUEdEXU6iq4CtpLJfIN9XQG8dwa1VoO8XC2SrPDDyCOQptXgbcPvlAgBfxBoGwftQKeKFrNTASPt3pGGqDt%2FQRasn2kri%2BH6L80MJRsmVYJrAKyDItpJUy3%2F15WYIJqcJ9Q5N%2FLFJ4c3dc1URpWl9hW6mu50MUIelg4ucTPf15zs5DFo1c0VSp1tKB9jkwIyuM45kb%2BIP8gHed%2B6jO3v0KbIknzLy636E8KPTdCuUpB0wLo9JKnAO6pv0vS31EtBha%2FfJemkgLVVnd8KCk4qBTpQ5m7FbifBKrPJcq0pZAFVG%2FXbOFz%2BTcq2MLrcmV28Nmi%2FOHskh82bau0k8eWCaPijQPWQ5lUvslwVCfHkXBMIehqUgtDNLeauH1huvZTbYmw%2BluPjyWoNGEuxRLR7LK5fSyXFUyK7PURQv2v8D3XOt2NJ6liBbmPGOsakw1kbeOs%2B31Wm5qpH%2BiJWSzqdPr2O7zc2TmtnrzCig6bBd%2FvgQmzOlz0STWIlmZEQfupogOZFHUZ7EkUnMn0RrpIMqAgHRJAOjIJ3yGw1I%2FMAp9q9S3Q%2FclADNm1wEeO%2Bxbwg5OIYHZLY3ehG5lJk2xhco%2B6JWybpEVz2wrR6hZyD0QXZbeDVB%2BonmlimpkWprdAs4WEZDSQppsDlcdCBJJESIYFuAtUnC4GIF2C3Uu2Kv7L1bdz6FxtqxpG4TqQOqOUNAJ2HLvPWA2GgDy4O4vaDrtyl6P%2B1fAll%2BSyFcQ28GHqh7fvvf37udylf0fNwhzgz87Y%2Bcf5x9GnF6ygHu18sAbipWeF0YPBgp2GaKeQduxxdEr3SgbH1kvH7tvqSLhedomOvZyts2dw8acu3dY%2Ff%2BucuMtCuP%2Fe4zC4XnH3OLZ8ZuxTWxy8dJfU5dhDeKPSlJy5pn%2F%2B7u3XrJhmr9C5CuleGflGQocKnlAUaRKp0BAHV0ZwUt9VCqk6zYOgRIuMfePJzdmBdpPJ7%2F6B23%2Bf%2Bsp9NMDZevovvfYHG5dGPISQq1DojqNckchVrCcCYz%2FQ0hI0m3NKDRfkgsrnamo%2Bp0CAq1FyvC3a3Nak%2Fs5VX282x9Ufy3E39VAx6o7LpCvO2wK%2Bch9jNqpJCutcIOooKnYWtDK8gTRVYygRQfwgzKM5%2BjP2jOZdx3r32Py7rQUPOzAnoRs95NvRAR0qLGU11Taqu1bUYSzMcWjMEir067JQQHfIrLBHsrgv00%2FWavd8HRLMEEYFSW3HCSNQehnrHztKqHcDyo4VfZ6gPKCR%2BgufwA8GegxUEo4A%2Bgd0BASHiH6jYMLIsUdQJTs%2FC641KN4oCHWolCMLlMfIdtWKScjx7SM5LD9HnfmhrGI0S139UWfUnxgOXdJFW%2BAMcGjKr6eHAttHF5sUoeArYKDcxMSYcKA%2FxUDhPiEOEAPafSIUFArN0r24ynI91EPARDXvIDYyvqZaWeroBOUABQA%2FE%2BDXC7PWafDLQY2oiwpUEyj4RQtVlUp1GrM7In2p2A7VuiOW6otMiGOo5Mrp05ejVuTy6dNX%2Fk%2F7mybZQ0nUmfrbx3U4KueDnlHm5wdh8FFeKnoaKKh%2FTK18StOPhwG9Xo5mqXAxvw%2F79YQwwDR%2BnAKQQ4izVXioB84qcppWB7IqjU45z4CE17OvF1Dw%2BoTFqxtz8dxwtogBnF9MjIl%2Fin%2BK8s3hM9laIn0TiCbTAXL0T798bPXqx36p3chrv0O%2BGC9Xaj48Ecv8U8UEeBvUEsDlTepiU5OvlpeNGvpnKF0RvUooWhIjnx6GeBapXCQYTw9DNg6%2FOC3gZjp76oNTj9Kz6Jqobxb9NDqc08vcKReOpcsQV2K8InXFaXW3aI6Ofr1k48rp7CX7rx%2Bv1UKPsfvzQU0Kc83i2VdILmd2%2FyX55zT9luN2%2BCu4nKfwPcK%2FCvDVU%2BpHh8%2BLaldIf1fA5h3ndT6Fln9%2FW%2F9Ce1vndfvJtnPVO2xhm3qbafHVCN1X363UXHq9xuVD8OSD29Z8pZ5cZrern9cAdGW%2Fuib%2Fud%2BVK0L9a42r6C90kL8KzxwLQw9NkIQJL0ASU8M%2BVG0KsUdgdvpgP%2F6NqqP0%2FgHZFUfGEijZLHpiIgvV5%2FBltrj8Qd7XQd5p4P%2B7tJo30NMO6VGBwahSPMYiaaBYoLY6uEnciyhhh1Z%2FvvacG%2Frjpsvnpzs0B1Id6fmX8119l88XnOxe%2FuGrzzHcdu7UtY3%2B2vmXN5zUyj3ZcPl8p1sZSs6%2FnGXtwrV7Ka0XZdz83fwjjINpZWYw85lL8BRK4nGyIir2RiOsEyipuEcIakpGjWgBjLiHWOgj0Yi34gW1kKPxHt2Na5q%2Blwg1RdRSpFDNzosb44YJXnAfoEOpZW%2F%2F6u1lhYA6leevezbI26zNHO811M2dc5HFxpk4i1jPC0s21%2FBWW5DnPQbn2X1WK43%2FaM2n18DfSoybbNHijFpamzXI31eRibGUOxSu%2FlT96YZlq1Yt20DaSBuG6knw2eusHs5EPBfNmVvHKdaQzcDfz9ZsXmLDWGXy2U5OsYSsIn8CS12jQIyD12KKqZrLPy7mSPdICmd6WGHG8NDZkkHuE4h9TU8FpmUO%2FVjC%2FEinToFyoNDz2p9XD6g78WgQdPG7Z3R0T%2FZ5dTM9lsL8Ktek7szl2L%2BgQwGgwkZHc2g5Su7NvVqwGy2Ua4KSXUwt1X4PaM5paaEu6jQ5zVFyNabxvUksVt2T%2F4VeamYPlLtffdQsk%2B2sUTY%2FzDXl%2F05W53%2FBz9UK3p7LjapZ2ZxOm%2BUlZXrL3HHGqO8%2BwVroDaCTTnTxitMxmiAAYQzVJQH%2Bnj3oIHnPaN6Zq6sNSLjBl8tKgVr2mj%2F9CWi9dnKca8rBQBsd5R1tzVlgrl5pbnPw6kZclCr2CHxMnHohLz%2B3KRQokzALyeIKFU1TNCiayJdoHvDYe7K6mZLm8S3uJ9dojuaJ62%2FqN%2FtjQxnSnhnKPw%2BLNrLi8ZKyJ3x1YhiI1aNAtP6NzCGzYv3DmaGh%2FLvQZnt0evgIhTFV0kE%2FPYxAnOHhCQUZdCWY5JWJwMzlAGl1mpNbDU7yyGnhRMILsYhH3VRAijrPcBU8%2FCj1Y9NY6cnGVW0CjTLaz7E3epvaT%2FLtTV72Rs%2B0WVVmd0dz%2FMGTI5F0OsIviaqDlbbO5X6xT3PeXbXHRtf%2Fz%2Bfdka%2BeKPr8KF7IF4vBsT9MFPuPJMBTBMq9hQxXelQ%2Bbewnf18ap4Ib%2BmSMrtDU5zqlD8QANa5MBGh%2FOwOvSDfcV2d66mfEWsbGWmIz6nsyZDWQSmqmxDneYyvjHPmRXHZxeueyRGLZzvRioKnGto9nIPkibAJA16adcOZRQr1iAP3bUyBR7T4RgAWTKxhkCYFwshq%2B7iV9r0whk50cmRcTg4fy5x4OmmNkHndIA2%2BYuMbmE9dwGYB4KFTsvnDE6Ah47r%2FfE3AYI%2BoXADpkdlENcZ8OZEEf8FFGZNxMs6ZLpG3SUFLL7Q2kcFU%2FA%2FJsw%2BvWDa%2F7emewLaoeibaF1B9qUNnuqWK3%2BUfXYVL1v%2FomD15xxeDkPnXTOKSVcCbDGtOu0YQNpGAP7U1HU58UrqGu8xIbHtkQ3LVhb7Dx46ET3Ffcm1q0YcOizNmf3bC3VjWfAcpSv3MyTlgJ23FHQgmgvk%2Bgk8pL0mcCDOn08MDAQlf%2B%2FSlTZ1z12fnqntOhbOTL9%2FZdevbAPN%2Byby1f%2FuUtC%2Fixm8ZBo59LTXEW060hGrTDplNprWd58fwB%2Fb%2FE27BdS%2Fs7U%2BrGVCeQ46nzaw9QccnmZerGZZs3Yw9aVHt%2BKh6HN4ti6lxIhT%2FwahnZtWwzlY9QHQ2c79C%2BdxzvVDKy8GqKWQERO9YAKbpsDUTLdWV5dE8PVPjvj9pqw7ah%2FPFVtkit7aj6G5xY9mfJrCz1j1e0BcnPol4UjtrCdbahIVtd2HaURujnFJR8CuOuUUfhrGhgKKgjCYNSvCc1WKlEp8wHUaAYynFNyzZn%2B2MnYv36dbMDBTonl%2FT%2Fma5IKAyEGz%2B4eRnVtaX6tss2o34u8mWorFtuFgm4A6qK%2Fyp%2FgLEBVat5WnPDdKA574ubuFJ%2FIUfZ%2FY2Nt6mN%2BZNNTSTaeI56gKwkXerTe9DDHUw8%2FH35FY3nNN7GGuBKWhrV9ep%2B0k1WjNWVaHkW1yA%2BQHWNu8rtBw2a5YXuE40rs7%2FGA%2Bj09V3hA98yRnFPOGr8ltGlsFdD%2F7tRce3LH6Trcneuiy7K7J3khKu%2B3qUaXPWaX7T6%2FKfj9BX2eZq2XAcZT79u1ClJzUtHUqfqSMWBcZS43Ena0cUGLgpkKxB1QM%2B0Fxz10wgg6r5rltnFpH05pepUq3Y2HfYqeKRntmUFNz%2BXmcOs1H31U6cC6RTVLfCg7RNBF1UF2%2FwBgu0fFQtPEU1sSg3VcNsR7dWq3af87tUFn1l3ltXpaJxpNvtcZkH2WmMst3JqRpxUH%2BWC0E1qOGtP66s1MYv%2BVLu8%2FXFXvV%2FZbunYYBeVN64ls0ur6NzpV9xzlmQwB5qC4Tq70WC0tk8dWJXeHvkD0h9zJOM0vD86%2F1NJMaIAolctvlByferCsqOKDKceOfUu1PsmoFCamV5mCrMUOCi6V6FJosMF22AcrKJgQDVhfYh6tepp%2FlYgvnCEAbJQ1L0rOpajEmRcasMiPfxhgGoVo4rwreQpV6fUJHH2e8fa1s2c13Apl1b89a58ozdoap2sjgLN9uISl7P1DrulyeIkt0zr6JjWocoPOZsaXPb6jtqBblsgsaRre2xHi4nELm0MhG1%2Bx1SXwLpFi53b%2BaHRYo%2FIrbZtuWAKu5cSEXfybnnmUCaXGTpQr0xK2O2WWY76f%2BnAjNVf7nCZHU5XqIkTnpt6VtvsFlPXg1031g%2FVRdpkkyVpD7jnmax88QwDvg%2F66NnMRdRXTcGTmQc3cuINwN5IQqi0yzb%2BYFVHuVqI5s4ADfg5oE4ybDLd28mFSFmYvRoomsWXEdLU2Wl3GJy93ZNb%2Fd5gqmNaqJZSO1l6PVRy0nZIj%2F45EetjLguh1rLqR%2BSK0hO6NrsqcNX8zoUdjQYDJ7tb4os6%2Bi%2BY0qpY2AWlnLRDWdGFTfGY1gV0zNAtJ7pdo24se0D88AwLY%2FgZmE9iuP4V5v7CSR%2FRThaHLh%2BUeBkXwU6BC7lGOevK65udTv%2BtS%2FPfW7qj3ljTcj3b9OkbV85t8xsMj7Ddj7DGpthZKwKPvso%2Fc%2F1K9aLE12fMWLV1y1D9ua8lyJdWXr%2FbG%2BnoCFutf%2FmLILe39ITUV4igr3876fpX5g2zeB52sWnIL4fXHlgeUzOx5QfIvJQyrKQE9wHUqVq%2BPEaOrz0wVvNbJZVSfsuMzxN4l9PkedFzw9V5Dj%2BnzpgoT4ZxCxJfC5RWLc74YVHxKlExCYt0JAOMatREhHBSCAtSfod6x6Ls8HCWECLwXZ9nd5Dz1T24JUdWs6fU3%2B%2BfcnT49Qe%2BkBs%2BwdsMZgPXMp3U5S958snPP%2FEE7bvkOPCuTUDTUQ%2FUzirLhML9yPahoe1D5Fj5jWsaoveyP00PehdUAHk%2FseDVWsvDWXXXsyn%2F4wfpXc2V3%2FQxli3jl%2F5hj%2F83avSCfpTNxOEKLmTjxOEKuxgNlsQn0xgct724mhynupNW1Ph6o3RYS3%2F%2B2TJrzLlkFz%2Bip3qCHKf6eqW02QJLjBYuuj4sobhCWqa%2FYHGEHpcnumuWSOhxeaL7sOakNR6vvmo%2BYcfFA8UFXEPZf9UjyudIOyNwx%2Fi90DdsujS%2FFX2UAwvWSVK4NxaMhAGw3oowp%2Fuc8CTi7D2rBgZWwb%2F60faR7SPsEbjkXy4G0XaqhXPwe2cePjxjxuHD6ssQuR1fq6PF0E%2Bo2t1nePTn8TUmxz%2FA3crMoCc7egESuoTHYc7mYdg6etORoOhR7BBGD%2BqJopELrl4S6cJNRtEAsLP%2FOdvnJq0Wo0GolY2Et9VFB2Kf%2B4bZvVyxfOMz3WdFfSIryj6DwWghre7aQbdiDrkTL3A3vNDuDpk93HqXwam%2BbWmUJZfNn5ozKV5Pmmq8PF%2FjVY%2B2Tlk2M2RzSXKjmbQ4RZcQavEYrN%2F9rlXwtIQqzxQNMzPPfHYLvuPoO9TbT8bpGw5CQPGd%2BSyX%2FCyf0Vxjd2R9NmsunnXYa8xGHzn%2BsSfM5J0y0DZEXWWxkXjcR75KBLNLHi7XvX2G8VOrf4Ykg0AMdBESIpo7MgAfyakA6rkqpI6UjNs0px7cMV%2BD5BF49Tez1VGnYmq0WIijp985m4Sn2gJR9b07riPPFo97OYbUZbxJCpot7H%2FlpZBicglCPN7WOfJkcHqc3ElWqvvz%2F1E6bIQrG%2Btz6WkM1SM9FBTR7FSs8KyBBytSmNEoquJNFN5EQyTiCrnKDx1h58yxCepPHU5nxGoxEQeeOZi2m80DxNxncVhr6BmEfUarxejw%2BWSiHhWk19bSY7aKR5MsteblJpfTLtjimBouXsm3d3djjYM%2BwEW0El9dM%2FueVRWIsXwe43R7SgbVZqrnqoJ1X%2FkuF7pcgf8duv4q6vayV5U9zMV91GxO59UUjW8rHV6u799WzKMT7umRCXbYUKM%2BfoaCcwgaoqZUtmodV3p%2BX7akb4dnU9B9La38RPFUG2SCC90tVA4XwEFhyOpZZrUCsgWYHsczLFBBVGNtstoN1bw0Z%2BO4fYIbvZVt4EUcJEKOhHeincWqONw%2Bq6w5Go%2BWGOSR7LhKV%2BKBqbBPpfUvOf9QqkpDyVhBeyyZQGMsdA5FBUqvFMtUyGq9vjnsAJU4UcrxldP1CCaofyDkSAifoP5QwWx%2BSyUGxp75BzGAvtG7uQ38LehlyEQMeh0TeE6Bm7tYdXqdkt0uOb3kfYlNwmOdDyacOq%2FqlFo1v%2BPTmTi3E%2FglC9W11b34A22zmLzvb231Q0L2Bgg60OTW4YdstO%2BYOJnO38TtpH7zy9ymokWyA79qlVSn38HtpFlImFnhu3b4boNWXklOXV0Iwo7lQ1hrZyPFcwtjwFP7iEKSHSSJw509kh8kj6pr%2BH1jR7km9vcvqN9657vffefkv%2BfKxge1X%2B7RdjYUPIESN7gTvRkB%2FRMYtEkaVkdHApmdBPpnKmz0n1xSWFOyVIuLrinZwpoCRe6kyiVZoHX088F%2BUX4%2BWKS4iBTP0IWxGtZgOdMaV4KTayqHQF%2FVihBwTbgDXTCmKoOBJeNhwJMzEVjtjIFLuU38fPR7hqNG1JS7g%2FqRCuy3vmQ3W9Vu8qbVbP%2BSzazGRJH83MzP90Ck2m31mMjP8TiLn5uwD2Ugr2PFvPQjB5BnSJvQxGQZZEB%2BLopqzGzDbMmbkAPkZVJjeO5FzOSBKCgJze2ZS4Gemc9twrwY6u9H61iUQTcRvtdT9RW3tRxAWwFs2tcuJRnI6xjmBdWjbgFNRHMHiF1uHYBfUR%2Fut5Ug2jXAaT96%2B9RH%2FFToRwIzGbKmVJ1AZQnoabSB1yyIg7ByAridHApPMjyw0OiV6RjSbCuzwLAvFizBliWJua1tsuAgvNPbmljYbpt8lkWam7b3XZiOiKJskMOtmfScnsbPW208knwjuXrXK4Q1iKIgNyYXXDVT9C2Ye%2F78GQ5BEEXfFdde2RwauOysdJNL5AzCy84ard%2FnGAVN8alecnFdgu5Gbd5DJTL%2BhHZK0vApVy3OfU8XTSJg1TlssivsPYUlIqvn66PzrVTymCc4wgF6SDNR0pDf%2B9Gp%2BVnsUH5WtpHYsuhOaey8zdwLN47V8MTbm78g687%2BP3cx6tcAeNpjYGRgYGBk8s0%2FzBIfz2%2FzlUGeZQNQhOFCWfF0GP0%2F8P8c1jusIkAuBwMTSBQAYwQM6HjaY2BkYGAV%2Bd8KJgP%2FXWG9wwAUQQGLAYqPBl942n1TvUoDQRCe1VM8kWARjNrZGIurBAsRBIuA2vkAFsJiKTYW4guIjT5ARMgTxCLoA1hcb5OgDyGHrY7f7M65e8fpLF%2B%2B2W%2FnZ2eTmGfaIJi5I0qGDlZZcD51QzTTJirZPAI9JIwVA%2BwT8L5nOdMaV0AuMJ%2BicRHq8of6LSD18fzq8ds7xjpwBnQiSI9V5QVl6NwPvgM15NXn%2FAtWZyj3W0HjEXitOc%2FdIdbetPdFTZ%2BP6t%2BX7xU0%2Fk6GJtOe1%2FB3arN0%2Fpmz1J4UZc%2BD6ExwjD7vioeGd5HvhvU%2BR%2BDZcGZ6YBPNfAi0G97iBPwFXqph2cW8%2BD7kjMfwtinHb6kLb6Wygk3cZytSEoptGrlScdHtLPeri1JKueACMZfU1ViJG1Sq5E43dIt7SZZFl1zuRhb%2FGOs44xFVDbrJzB5tYs35OmaXTrEmkv0DajnMWQB42mNgYNCCwk0MLxheMPrhgUuY2JiUmOqY2pjWMD1hdmPOY%2B5hPsLCwWLEksSyiOUOawzrLrYiti%2FsCuxJ7Kc45DiSOPZxmnG2cG7jvMelweXDNYXrEbcBdxf3KR4OngheLd443g18fHwZfFv4NfiX8T8TEBIIEZggsEpQS7BMcJsQl5CFUI3QAWEp4RLhCyJaIldEbURXiJ4RYxEzE0sQ2yD2TzxIfJkEk4SeRJbENIkNEg8k%2FklqSGZITpE8InlL8p2UmVSG1A6pb9Jx0ltkjGSmyDySlZF1kc2RnSK7R%2FaZnJ5cmdwB%2BST5SwpuCvsUjRTLFHcoOShNU9qhzKespGyhXKV8SPmBCpOKgUqcyjSVR6omqgmqe9RE1OrUnqkHqO9R%2F6FholGgsUZzgeYZLTUtL60WbS7tKh0OnQydXTpvdGV0O3S%2F6Gnopekt0ruhz6fvpl%2Bnv0n%2Fh4GdQYvBJUMhwwTDdYYvjFSM4oxmGd0zVjK2M84w3mYiYZJgssLkkqmO6TzTF2Z2ZjVmd8ylzP3MJ5lfsRCwcLJoszhhyWXpZdlhecZKxirHapbVPesF1ndsJGwCbBbZ%2FLA1sn1jZ2XXY3fFXsM%2Bz36V%2FS8HD4cGh2OOTI51ThJOK5zeOUs4OzmXOS9wPuUi4JLgss7lm2uU6zY3NrcSty1u39zN3Mvct7l%2F8xDzMPLw88jyaPM44ynkaeEZ59niucqLyUvPKwgAn3OqOQAAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAHjarZK9TgJBEMf%2Fd6CRaAyRhMLqCgsbL4ciglTGRPEjSiSKlnLycXJ86CEniU%2FhM9jYWPgIFkYfwd6nsDD%2Bd1mBIIUx3mZnfzs3MzszuwDCeIYG8UUwQxmAFgxxPeeuyxrmcaNYxzTuFAewi0fFQSTxqXgM11pC8TgS2oPiCUS1d8Uh8ofiSczpYcVT5LjiCPlY8Qui%2BncOr7D02y6%2FBTCrP%2Fm%2Bb5bdTrPi2I26Z9qNGtbRQBMdXMJBGRW0YOCecxEWYoiTCvxrYBunqHPdoX2bLOyrMKlZg8thDETw5K7Itci1TXlGy0124QRZZLDFU%2FexhxztMozlosTpMH6ZPge0L%2BOKGnFKjJ4WRwppHPL0PP3SI2P9jLQwFOu3GRhDfkeyDo%2F%2FG7IHgzllZQxLdquvrdCyBVvat3seJlYo06gxapUxhU2JWnFygR03sSxnEkvcpf5Y5eibGq315TDp7fKWm8zbUVl71Aqq%2FZtNnlkWmLnQtno9ycvXYbA6W2pF3aKfCayyC0Ja7Fr%2FPW70%2FHO4YM0OKxFvzf0C1MyPjwAAeNpt1VWUU2cYRuHsgxenQt1d8%2F3JOUnqAyR1d%2FcCLQVKO22pu7tQd3d3d3d3d3cXmGzumrWy3pWLs%2FNdPDMpZaWu1783l1Lpf14MnfzO6FbqVupfGkD30iR60JNe9KYP09CXfvRnAAMZxGCGMG3pW6ZjemZgKDMyEzMzC7MyG7MzB3MyF3MzD%2FMyH%2FOzAAuyEAuzCIuyGIuzBGWCRIUqOQU16jRYkqVYmmVYluVYng6GMZwRNGmxAiuyEiuzCquyGquzBmuyFmuzDuuyHuuzARuyERuzCZuyGZuzBVuyFVuzDduyHdszklGMZgd2ZAw7MZZxjGdnJrALu9LJbuzOHkxkT%2FZib%2FZhX%2FZjfw7gQA7iYA7hUA7jcI7gSI7iaI7hWI7jeE7gRE7iZE5hEqdyGqdzBmdyFmdzDudyHudzARdyERdzCZdyGZdzBVdyFVdzDddyHddzAzdyEzdzC7dyG7dzB3dyF3dzD%2FdyH%2FfzAA%2FyEA%2FzCI%2FyGI%2FzBE%2FyFE%2FzDM%2FyHM%2FzAi%2FyEi%2FzCq%2FyGq%2FzBm%2FyFm%2FzDu%2FyHu%2FzAR%2FyER%2FzCZ%2FyGZ%2FzBV%2FyFV%2FzDd%2FyHd%2FzAz%2FyEz%2FzC7%2FyG7%2FzB3%2FyF3%2FzD%2F9mpYwsy7pl3bMeWc%2BsV9Y765NNk%2FXN%2BmX9swHZwGxQNjgb0nPkmInjR0V7Uq%2FOsaPL5Y7ylE3l8tQNN7kVt%2BrmbuHW3LrbcDvam1rtzVvdm50TxrU%2FDBvRtZUY1rV5a3jXFn550Wo%2FXDNWK3dFmh7X9LimxzU9qulRTY9qelTTo5rlKLt2wk7YiaprL%2ByFvbAX9pK9ZC%2FZS%2FaSvWQv2Uv2kr1kr2KvYq9ir2KvYq9ir2KvYq9ir2Kvaq9qr2qvaq9qr2qvaq9qr2qvai%2B3l9vL7eX2cnu5vdxebi%2B3l9sr7BV2CjuFncJOYaewU9gp7NTs1LyrZq9mr2avZq9mr2avZq9mr26vbq9ur26vbq9ur26vbq9ur26vYa9hr2GvYa9hr2GvYa%2FR7oXuQ%2Feh%2B2j%2FUU7e3C3cqc%2FV3fYdof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D92H7kP3ofvQfeg%2BdB%2B6D92H7kP3ofvQfRT29B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6j6nuG3Ya7U5q%2F0hN3nCTW3Grbu4Wrs%2FrP%2Bk%2F6T%2FpP%2Bk%2F6T%2FpP%2Bk%2B6T7pPek86TzpPOk86TzpOuk66TrpOuk66TrpOlWmPu%2F36zrpOuk66TrpOuk66TrpOvl%2FPek76TvpO%2Bk76TvpO%2Bk76TvpO%2Bk76TvpO7V9t%2BqtVs%2FOaOURU6bo6PgPt6rZbwAAAAABVFDDFwAA%29%20format%28%27woff%27%29%2Curl%28data%3Aapplication%2Fx%2Dfont%2Dtruetype%3Bbase64%2CAAEAAAAPAIAAAwBwRkZUTW0ql9wAAAD8AAAAHEdERUYBRAAEAAABGAAAACBPUy8yZ7lriQAAATgAAABgY21hcNqt44EAAAGYAAAGcmN2dCAAKAL4AAAIDAAAAARnYXNw%2F%2F8AAwAACBAAAAAIZ2x5Zn1dwm8AAAgYAACUpGhlYWQFTS%2FYAACcvAAAADZoaGVhCkQEEQAAnPQAAAAkaG10eNLHIGAAAJ0YAAADdGxvY2Fv%2B5XOAACgjAAAAjBtYXhwAWoA2AAAorwAAAAgbmFtZbMsoJsAAKLcAAADonBvc3S6o%2BU1AACmgAAACtF3ZWJmwxhUUAAAsVQAAAAGAAAAAQAAAADMPaLPAAAAANB2gXUAAAAA0HZzlwABAAAADgAAABgAAAAAAAIAAQABARYAAQAEAAAAAgAAAAMEiwGQAAUABAMMAtAAAABaAwwC0AAAAaQAMgK4AAAAAAUAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAFVLV04AQAAg%2F%2F8DwP8QAAAFFAB7AAAAAQAAAAAAAAAAAAAAIAABAAAABQAAAAMAAAAsAAAACgAAAdwAAQAAAAAEaAADAAEAAAAsAAMACgAAAdwABAGwAAAAaABAAAUAKAAgACsAoAClIAogLyBfIKwgvSISIxsl%2FCYBJvonCScP4APgCeAZ4CngOeBJ4FngYOBp4HngieCX4QnhGeEp4TnhRuFJ4VnhaeF54YnhleGZ4gbiCeIW4hniIeIn4jniSeJZ4mD4%2F%2F%2F%2FAAAAIAAqAKAApSAAIC8gXyCsIL0iEiMbJfwmASb6JwknD%2BAB4AXgEOAg4DDgQOBQ4GDgYuBw4IDgkOEB4RDhIOEw4UDhSOFQ4WDhcOGA4ZDhl%2BIA4gniEOIY4iHiI%2BIw4kDiUOJg%2BP%2F%2F%2F%2F%2Fj%2F9r%2FZv9i4Ajf5N%2B132nfWd4F3P3aHdoZ2SHZE9kOIB0gHCAWIBAgCiAEH%2F4f%2BB%2F3H%2FEf6x%2FlH3wfdh9wH2ofZB9jH10fVx9RH0sfRR9EHt4e3B7WHtUezh7NHsUevx65HrMIFQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACjAAAAAAAAAA1AAAAIAAAACAAAAADAAAAKgAAACsAAAAEAAAAoAAAAKAAAAAGAAAApQAAAKUAAAAHAAAgAAAAIAoAAAAIAAAgLwAAIC8AAAATAAAgXwAAIF8AAAAUAAAgrAAAIKwAAAAVAAAgvQAAIL0AAAAWAAAiEgAAIhIAAAAXAAAjGwAAIxsAAAAYAAAl%2FAAAJfwAAAAZAAAmAQAAJgEAAAAaAAAm%2BgAAJvoAAAAbAAAnCQAAJwkAAAAcAAAnDwAAJw8AAAAdAADgAQAA4AMAAAAeAADgBQAA4AkAAAAhAADgEAAA4BkAAAAmAADgIAAA4CkAAAAwAADgMAAA4DkAAAA6AADgQAAA4EkAAABEAADgUAAA4FkAAABOAADgYAAA4GAAAABYAADgYgAA4GkAAABZAADgcAAA4HkAAABhAADggAAA4IkAAABrAADgkAAA4JcAAAB1AADhAQAA4QkAAAB9AADhEAAA4RkAAACGAADhIAAA4SkAAACQAADhMAAA4TkAAACaAADhQAAA4UYAAACkAADhSAAA4UkAAACrAADhUAAA4VkAAACtAADhYAAA4WkAAAC3AADhcAAA4XkAAADBAADhgAAA4YkAAADLAADhkAAA4ZUAAADVAADhlwAA4ZkAAADbAADiAAAA4gYAAADeAADiCQAA4gkAAADlAADiEAAA4hYAAADmAADiGAAA4hkAAADtAADiIQAA4iEAAADvAADiIwAA4icAAADwAADiMAAA4jkAAAD1AADiQAAA4kkAAAD%2FAADiUAAA4lkAAAEJAADiYAAA4mAAAAETAAD4%2FwAA%2BP8AAAEUAAH1EQAB9REAAAEVAAH2qgAB9qoAAAEWAAYCCgAAAAABAAABAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAEAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAL4AAAAAf%2F%2FAAIAAgAoAAABaAMgAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCxAwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIRElMxEjKAFA%2Fujw8AMg%2FOAoAtAAAQBkAGQETARMAFsAAAEyFh8BHgEdATc%2BAR8BFgYPATMyFhcWFRQGDwEOASsBFx4BDwEGJi8BFRQGBwYjIiYvAS4BPQEHDgEvASY2PwEjIiYnJjU0Nj8BPgE7AScuAT8BNhYfATU0Njc2AlgPJgsLCg%2BeBxYIagcCB57gChECBgMCAQIRCuCeBwIHaggWB54PCikiDyYLCwoPngcWCGoHAgee4AoRAgYDAgECEQrgngcCB2oIFgeeDwopBEwDAgECEQrgngcCB2oIFgeeDwopIg8mCwsKD54HFghqBwIHnuAKEQIGAwIBAhEK4J4HAgdqCBYHng8KKSIPJgsLCg%2BeBxYIagcCB57gChECBgAAAAABAAAAAARMBEwAIwAAATMyFhURITIWHQEUBiMhERQGKwEiJjURISImPQE0NjMhETQ2AcLIFR0BXhUdHRX%2Boh0VyBUd%2FqIVHR0VAV4dBEwdFf6iHRXIFR3%2BohUdHRUBXh0VyBUdAV4VHQAAAAABAHAAAARABEwARQAAATMyFgcBBgchMhYPAQ4BKwEVITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ASYnASY2OwEyHwEWMj8BNgM5%2BgoFCP6UBgUBDAoGBngGGAp9ARMKBgZ4BhgKfQ8LlAsP%2Fu0KBgZ4BhgKff7tCgYGeAYYCnYFBv6UCAUK%2BhkSpAgUCKQSBEwKCP6UBgwMCKAIDGQMCKAIDK4LDw8LrgwIoAgMZAwIoAgMDAYBbAgKEqQICKQSAAABAGQABQSMBK4AOwAAATIXFhcjNC4DIyIOAwchByEGFSEHIR4EMzI%2BAzUzBgcGIyInLgEnIzczNjcjNzM%2BATc2AujycDwGtSM0QDkXEys4MjAPAXtk%2FtQGAZZk%2FtQJMDlCNBUWOUA0I64eYmunznYkQgzZZHABBdpkhhQ%2BH3UErr1oaS1LMCEPCx4uTzJkMjJkSnRCKw8PIjBKK6trdZ4wqndkLzVkV4UljQAAAgB7AAAETASwAD4ARwAAASEyHgUVHAEVFA4FKwEHITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ARE0NhcRMzI2NTQmIwGsAV5DakIwFgwBAQwWMEJqQ7ICASAKBgZ4BhgKigsKlQoP%2FvUKBgZ4BhgKdf71CgYGeAYYCnUPtstALS1ABLAaJD8yTyokCwsLJCpQMkAlGmQMCKAIDK8LDg8KrwwIoAgMZAwIoAgMAdsKD8j%2B1EJWVEAAAAEAyAGQBEwCvAAPAAATITIWHQEUBiMhIiY9ATQ2%2BgMgFR0dFfzgFR0dArwdFcgVHR0VyBUdAAAAAgDIAAAD6ASwACUAQQAAARUUBisBFRQGBx4BHQEzMhYdASE1NDY7ATU0NjcuAT0BIyImPQEXFRQWFx4BFAYHDgEdASE1NCYnLgE0Njc%2BAT0BA%2BgdFTJjUVFjMhUd%2FOAdFTJjUVFjMhUdyEE3HCAgHDdBAZBBNxwgIBw3QQSwlhUdZFuVIyOVW5YdFZaWFR2WW5UjI5VbZB0VlshkPGMYDDI8MgwYYzyWljxjGAwyPDIMGGM8ZAAAAAEAAAAAAAAAAAAAAAAxAAAB%2F%2FIBLATCBEEAFgAAATIWFzYzMhYVFAYjISImNTQ2NyY1NDYB9261LCwueKqqeP0ST3FVQgLYBEF3YQ6teHmtclBFaw4MGZnXAAAAAgAAAGQEsASvABoAHgAAAB4BDwEBMzIWHQEhNTQ2OwEBJyY%2BARYfATc2AyEnAwL2IAkKiAHTHhQe%2B1AeFB4B1IcKCSAkCm9wCXoBebbDBLMTIxC7%2FRYlFSoqFSUC6rcQJBQJEJSWEPwecAIWAAAAAAQAAABkBLAETAALABcAIwA3AAATITIWBwEGIicBJjYXARYUBwEGJjURNDYJATYWFREUBicBJjQHARYGIyEiJjcBNjIfARYyPwE2MhkEfgoFCP3MCBQI%2FcwIBQMBCAgI%2FvgICgoDjAEICAoKCP74CFwBbAgFCvuCCgUIAWwIFAikCBQIpAgUBEwKCP3JCAgCNwgK2v74CBQI%2FvgIBQoCJgoF%2FvABCAgFCv3aCgUIAQgIFID%2BlAgKCggBbAgIpAgIpAgAAAAD%2F%2FD%2F8AS6BLoACQANABAAAAAyHwEWFA8BJzcTAScJAQUTA%2BAmDpkNDWPWXyL9mdYCZv4f%2FrNuBLoNmQ4mDlzWYP50%2FZrWAmb8anABTwAAAAEAAAAABLAEsAAPAAABETMyFh0BITU0NjsBEQEhArz6FR384B0V%2Bv4MBLACiv3aHRUyMhUdAiYCJgAAAAEADgAIBEwEnAAfAAABJTYWFREUBgcGLgE2NzYXEQURFAYHBi4BNjc2FxE0NgFwAoUnMFNGT4gkV09IQv2oWEFPiCRXT0hCHQP5ow8eIvzBN1EXGSltchkYEAIJm%2F2iKmAVGilucRoYEQJ%2FJioAAAACAAn%2F%2BAS7BKcAHQApAAAAMh4CFQcXFAcBFgYPAQYiJwEGIycHIi4CND4BBCIOARQeATI%2BATQmAZDItoNOAQFOARMXARY7GikT%2Fu13jgUCZLaDTk6DAXKwlFZWlLCUVlYEp06DtmQCBY15%2Fu4aJRg6FBQBEk0BAU6Dtsi2g1tWlLCUVlaUsJQAAQBkAFgErwREABkAAAE%2BAh4CFRQOAwcuBDU0PgIeAQKJMHt4dVg2Q3mEqD4%2Bp4V4Qzhadnh5A7VESAUtU3ZAOXmAf7JVVbJ%2FgHk5QHZTLQVIAAAAAf%2FTAF4EewSUABgAAAETNjIXEyEyFgcFExYGJyUFBiY3EyUmNjMBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAyABYRMT%2Fp8RDPn%2BbxQLDPb3DAsUAZD7DBEAAv%2FTAF4EewSUABgAIgAAARM2MhcTITIWBwUTFgYnJQUGJjcTJSY2MwUjFwc3Fyc3IycBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAfPwxUrBw0rA6k4DIAFhExP%2BnxEM%2Bf5vFAsM9vcMCxQBkPsMEWSO4ouM5YzTAAABAAAAAASwBLAAJgAAATIWHQEUBiMVFBYXBR4BHQEUBiMhIiY9ATQ2NyU%2BAT0BIiY9ATQ2Alh8sD4mDAkBZgkMDwr7ggoPDAkBZgkMJj6wBLCwfPouaEsKFwbmBRcKXQoPDwpdChcF5gYXCktoLvp8sAAAAA0AAAAABLAETAAPABMAIwAnACsALwAzADcARwBLAE8AUwBXAAATITIWFREUBiMhIiY1ETQ2FxUzNSkBIgYVERQWMyEyNjURNCYzFTM1BRUzNSEVMzUFFTM1IRUzNQchIgYVERQWMyEyNjURNCYFFTM1IRUzNQUVMzUhFTM1GQR%2BCg8PCvuCCg8PVWQCo%2F3aCg8PCgImCg8Pc2T8GGQDIGT8GGQDIGTh%2FdoKDw8KAiYKDw%2F872QDIGT8GGQDIGQETA8K%2B%2BYKDw8KBBoKD2RkZA8K%2FqIKDw8KAV4KD2RkyGRkZGTIZGRkZGQPCv6iCg8PCgFeCg9kZGRkZMhkZGRkAAAEAAAAAARMBEwADwAfAC8APwAAEyEyFhURFAYjISImNRE0NikBMhYVERQGIyEiJjURNDYBITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NjIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR39vQGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHQRMHRX%2BcBUdHRUBkBUdHRX%2BcBUdHRUBkBUd%2FagdFf5wFR0dFQGQFR0dFf5wFR0dFQGQFR0AAAkAAAAABEwETAAPAB8ALwA%2FAE8AXwBvAH8AjwAAEzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2MsgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR0ETB0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHf5wHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0ABgAAAAAEsARMAA8AHwAvAD8ATwBfAAATMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYyyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHQRMHRXIFR0dFcgVHR0VyBUdHRXIFR3%2BcB0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHQAAAAABACYALAToBCAAFwAACQE2Mh8BFhQHAQYiJwEmND8BNjIfARYyAdECOwgUB7EICPzxBxUH%2FoAICLEHFAirBxYB3QI7CAixBxQI%2FPAICAGACBQHsQgIqwcAAQBuAG4EQgRCACMAAAEXFhQHCQEWFA8BBiInCQEGIi8BJjQ3CQEmND8BNjIXCQE2MgOIsggI%2FvUBCwgIsggVB%2F70%2FvQHFQiyCAgBC%2F71CAiyCBUHAQwBDAcVBDuzCBUH%2FvT%2B9AcVCLIICAEL%2FvUICLIIFQcBDAEMBxUIsggI%2FvUBDAcAAwAX%2F%2BsExQSZABkAJQBJAAAAMh4CFRQHARYUDwEGIicBBiMiLgI0PgEEIg4BFB4BMj4BNCYFMzIWHQEzMhYdARQGKwEVFAYrASImPQEjIiY9ATQ2OwE1NDYBmcSzgk1OASwICG0HFQj%2B1HeOYrSBTU2BAW%2BzmFhYmLOZWFj%2BvJYKD0sKDw8KSw8KlgoPSwoPDwpLDwSZTYKzYo15%2FtUIFQhsCAgBK01NgbTEs4JNWJmzmFhYmLOZIw8KSw8KlgoPSwoPDwpLDwqWCg9LCg8AAAMAF%2F%2FrBMUEmQAZACUANQAAADIeAhUUBwEWFA8BBiInAQYjIi4CND4BBCIOARQeATI%2BATQmBSEyFh0BFAYjISImPQE0NgGZxLOCTU4BLAgIbQcVCP7Ud45itIFNTYEBb7OYWFiYs5lYWP5YAV4KDw8K%2FqIKDw8EmU2Cs2KNef7VCBUIbAgIAStNTYG0xLOCTViZs5hYWJizmYcPCpYKDw8KlgoPAAAAAAIAFwAXBJkEsAAPAC0AAAEzMhYVERQGKwEiJjURNDYFNRYSFRQOAiIuAjU0EjcVDgEVFB4BMj4BNTQmAiZkFR0dFWQVHR0BD6fSW5vW6tabW9KnZ3xyxejFcnwEsB0V%2FnAVHR0VAZAVHeGmPv7ZuHXWm1tbm9Z1uAEnPqY3yHh0xXJyxXR4yAAEAGQAAASwBLAADwAfAC8APwAAATMyFhURFAYrASImNRE0NgEzMhYVERQGKwEiJjURNDYBMzIWFREUBisBIiY1ETQ2BTMyFh0BFAYrASImPQE0NgQBlgoPDwqWCg8P%2Ft6WCg8PCpYKDw%2F%2B3pYKDw8KlgoPD%2F7elgoPDwqWCg8PBLAPCvuCCg8PCgR%2BCg%2F%2BcA8K%2FRIKDw8KAu4KD%2F7UDwr%2BPgoPDwoBwgoPyA8K%2BgoPDwr6Cg8AAAAAAgAaABsElgSWAEcATwAAATIfAhYfATcWFwcXFh8CFhUUDwIGDwEXBgcnBwYPAgYjIi8CJi8BByYnNycmLwImNTQ%2FAjY%2FASc2Nxc3Nj8CNhIiBhQWMjY0AlghKSYFMS0Fhj0rUAMZDgGYBQWYAQ8YA1AwOIYFLDIFJisfISkmBTEtBYY8LFADGQ0ClwYGlwINGQNQLzqFBS0xBSYreLJ%2BfrJ%2BBJYFmAEOGQJQMDmGBSwxBiYrHiIoJgYxLAWGPSxRAxkOApcFBZcCDhkDUTA5hgUtMAYmKiAhKCYGMC0Fhj0sUAIZDgGYBf6ZfrF%2BfrEABwBkAAAEsAUUABMAFwAhACUAKQAtADEAAAEhMhYdASEyFh0BITU0NjMhNTQ2FxUhNQERFAYjISImNREXETMRMxEzETMRMxEzETMRAfQBLCk7ARMKD%2Fu0DwoBEzspASwBLDsp%2FUQpO2RkZGRkZGRkBRQ7KWQPCktLCg9kKTtkZGT%2B1PzgKTs7KQMgZP1EArz9RAK8%2FUQCvP1EArwAAQAMAAAFCATRAB8AABMBNjIXARYGKwERFAYrASImNREhERQGKwEiJjURIyImEgJsCBUHAmAIBQqvDwr6Cg%2F%2B1A8K%2BgoPrwoFAmoCYAcH%2FaAICv3BCg8PCgF3%2FokKDw8KAj8KAAIAZAAAA%2BgEsAARABcAAAERFBYzIREUBiMhIiY1ETQ2MwEjIiY9AQJYOykBLB0V%2FOAVHR0VA1L6FR0EsP5wKTv9dhUdHRUETBUd%2FnAdFfoAAwAXABcEmQSZAA8AGwAwAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBTMyFhURMzIWHQEUBisBIiY1ETQ2AePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnL%2BfDIKD68KDw8K%2BgoPDwSZW5vW6tabW1ub1urWmztyxejFcnLF6MUNDwr%2B7Q8KMgoPDwoBXgoPAAAAAAL%2FnAAABRQEsAALAA8AACkBAyMDIQEzAzMDMwEDMwMFFP3mKfIp%2FeYBr9EVohTQ%2Fp4b4BsBkP5wBLD%2B1AEs%2FnD%2B1AEsAAAAAAIAZAAABLAEsAAVAC8AAAEzMhYVETMyFgcBBiInASY2OwERNDYBMzIWFREUBiMhIiY1ETQ2OwEyFh0BITU0NgImyBUdvxQLDf65DSYN%2FrkNCxS%2FHQJUMgoPDwr75goPDwoyCg8DhA8EsB0V%2Fj4XEP5wEBABkBAXAcIVHfzgDwr%2BogoPDwoBXgoPDwqvrwoPAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUzMhYVETMyFgcDBiInAyY2OwERNDYB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv58lgoPiRUKDd8NJg3fDQoViQ8EmVub1urWm1tbm9bq1ps7csXoxXJyxejFDQ8K%2Fu0XEP7tEBABExAXARMKDwAAAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiUTFgYrAREUBisBIiY1ESMiJjcTNjIB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv7n3w0KFYkPCpYKD4kVCg3fDSYEmVub1urWm1tbm9bq1ps7csXoxXJyxejFAf7tEBf%2B7QoPDwoBExcQARMQAAAAAAIAAAAABLAEsAAZADkAABMhMhYXExYVERQGBwYjISImJyY1EzQ3Ez4BBSEiBgcDBhY7ATIWHwEeATsBMjY%2FAT4BOwEyNicDLgHhAu4KEwO6BwgFDBn7tAweAgYBB7kDEwKX%2FdQKEgJXAgwKlgoTAiYCEwr6ChMCJgITCpYKDAJXAhIEsA4K%2FXQYGf5XDB4CBggEDRkBqRkYAowKDsgOC%2F4%2BCw4OCpgKDg4KmAoODgsBwgsOAAMAFwAXBJkEmQAPABsAJwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUXFhQPAQYmNRE0NgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJy%2Fov9ERH9EBgYBJlbm9bq1ptbW5vW6tabO3LF6MVycsXoxV2%2BDCQMvgwLFQGQFQsAAQAXABcEmQSwACgAAAE3NhYVERQGIyEiJj8BJiMiDgEUHgEyPgE1MxQOAiIuAjQ%2BAjMyA7OHBwsPCv6WCwQHhW2BdMVycsXoxXKWW5vW6tabW1ub1nXABCSHBwQL%2FpYKDwsHhUxyxejFcnLFdHXWm1tbm9bq1ptbAAAAAAIAFwABBJkEsAAaADUAAAE3NhYVERQGIyEiJj8BJiMiDgEVIzQ%2BAjMyEzMUDgIjIicHBiY1ETQ2MyEyFg8BFjMyPgEDs4cHCw8L%2FpcLBAeGboF0xXKWW5vWdcDrllub1nXAnIYHCw8LAWgKBQiFboJ0xXIEJIcHBAv%2BlwsPCweGS3LFdHXWm1v9v3XWm1t2hggFCgFoCw8LB4VMcsUAAAAKAGQAAASwBLAADwAfAC8APwBPAF8AbwB%2FAI8AnwAAEyEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0NgczMhYdARQGKwEiJj0BNDYzITIWHQEUBiMhIiY9ATQ2BzMyFh0BFAYrASImPQE0NjMhMhYdARQGIyEiJj0BNDYHMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0Nn0EGgoPDwr75goPDwPA%2FK4KDw8KA1IKDw%2F9CDIKDw8KMgoPD9IBwgoPDwr%2BPgoPD74yCg8PCjIKDw%2FSAcIKDw8K%2Fj4KDw%2B%2BMgoPDwoyCg8P0gHCCg8PCv4%2BCg8PvjIKDw8KMgoPD9IBwgoPDwr%2BPgoPDwSwDwr7ggoPDwoEfgoPyA8K%2FK4KDw8KA1IKD2QPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKDwAAAAACAAAAAARMBLAAGQAjAAABNTQmIyEiBh0BIyIGFREUFjMhMjY1ETQmIyE1NDY7ATIWHQEDhHVT%2FtRSdmQpOzspA4QpOzsp%2FageFMgUHgMgyFN1dlLIOyn9qCk7OykCWCk7lhUdHRWWAAIAZAAABEwETAAJADcAABMzMhYVESMRNDYFMhcWFREUBw4DIyIuAScuAiMiBwYjIicmNRE%2BATc2HgMXHgIzMjc2fTIKD2QPA8AEBRADIUNAMRwaPyonKSxHHlVLBwgGBQ4WeDsXKC4TOQQpLUUdZ1AHBEwPCvvNBDMKDzACBhH%2BWwYGO1AkDQ0ODg8PDzkFAwcPAbY3VwMCAwsGFAEODg5XCAAAAwAAAAAEsASXACEAMQBBAAAAMh4CFREUBisBIiY1ETQuASAOARURFAYrASImNRE0PgEDMzIWFREUBisBIiY1ETQ2ITMyFhURFAYrASImNRE0NgHk6N6jYw8KMgoPjeT%2B%2BuSNDwoyCg9joyqgCAwMCKAIDAwCYKAIDAwIoAgMDASXY6PedP7UCg8PCgEsf9FyctF%2F%2FtQKDw8KASx03qP9wAwI%2FjQIDAwIAcwIDAwI%2FjQIDAwIAcwIDAAAAAACAAAA0wRHA90AFQA5AAABJTYWFREUBiclJisBIiY1ETQ2OwEyBTc2Mh8BFhQPARcWFA8BBiIvAQcGIi8BJjQ%2FAScmND8BNjIXAUEBAgkMDAn%2B%2FhUZ%2BgoPDwr6GQJYeAcUByIHB3h4BwciBxQHeHgHFAciBwd3dwcHIgcUBwMurAYHCv0SCgcGrA4PCgFeCg%2BEeAcHIgcUB3h4BxQHIgcHd3cHByIHFAd4eAcUByIICAAAAAACAAAA0wNyA90AFQAvAAABJTYWFREUBiclJisBIiY1ETQ2OwEyJTMWFxYVFAcGDwEiLwEuATc2NTQnJjY%2FATYBQQECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcDLqwGBwr9EgoHBqwODwoBXgoPZAEJgaGafwkBAQYXBxMIZ36EaggUBxYFAAAAAAMAAADEBGID7AAbADEASwAAATMWFxYVFAYHBgcjIi8BLgE3NjU0JicmNj8BNgUlNhYVERQGJyUmKwEiJjURNDY7ATIlMxYXFhUUBwYPASIvAS4BNzY1NCcmNj8BNgPHAwsGh0RABwoDCQcqCAIGbzs3BgIJKgf9ggECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcD7AEJs9lpy1QJAQYiBhQIlrJarEcJFAYhBb6sBgcK%2FRIKBwasDg8KAV4KD2QBCYGhmn8JAQEGFwcTCGd%2BhGoIFQYWBQAAAAANAAAAAASwBLAACQAVABkAHQAhACUALQA7AD8AQwBHAEsATwAAATMVIxUhFSMRIQEjFTMVIREjESM1IQURIREhESERBSM1MwUjNTMBMxEhETM1MwEzFSMVIzUjNTM1IzUhBREhEQcjNTMFIzUzASM1MwUhNSEB9GRk%2FnBkAfQCvMjI%2FtTIZAJY%2B7QBLAGQASz84GRkArxkZP1EyP4MyGQB9MhkyGRkyAEs%2FUQBLGRkZAOEZGT%2BDGRkAfT%2B1AEsA4RkZGQCWP4MZMgBLAEsyGT%2B1AEs%2FtQBLMhkZGT%2BDP4MAfRk%2FtRkZGRkyGTI%2FtQBLMhkZGT%2B1GRkZAAAAAAJAAAAAASwBLAAAwAHAAsADwATABcAGwAfACMAADcjETMTIxEzASMRMxMjETMBIxEzASE1IRcjNTMXIzUzBSM1M2RkZMhkZAGQyMjIZGQBLMjI%2FOD%2B1AEsyGRkyGRkASzIyMgD6PwYA%2Bj8GAPo%2FBgD6PwYA%2Bj7UGRkW1tbW1sAAAIAAAAKBKYEsAANABUAAAkBFhQHAQYiJwETNDYzBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAUM7Uzs7UzsEsP1WCBQI%2FjAICAKqAdsKD807O1Q7OwAAAAADAAAACgXSBLAADQAZACEAAAkBFhQHAQYiJwETNDYzIQEWFAcBBiIvAQkBBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAwYCqggI%2FjAIFAg4Aaj9RP7TO1M7O1M7BLD9VggUCP4wCAgCqgHbCg%2F9VggUCP4wCAg4AaoCvM07O1Q7OwAAAAABAGQAAASwBLAAJgAAASEyFREUDwEGJjURNCYjISIPAQYWMyEyFhURFAYjISImNRE0PwE2ASwDOUsSQAgKDwr9RBkSQAgFCgK8Cg8PCvyuCg8SixIEsEv8fBkSQAgFCgO2Cg8SQAgKDwr8SgoPDwoDzxkSixIAAAABAMj%2F%2FwRMBLAACgAAEyEyFhURCQERNDb6AyAVHf4%2B%2Fj4dBLAdFfuCAbz%2BQwR%2FFR0AAAAAAwAAAAAEsASwABUARQBVAAABISIGBwMGHwEeATMhMjY%2FATYnAy4BASMiBg8BDgEjISImLwEuASsBIgYVERQWOwEyNj0BNDYzITIWHQEUFjsBMjY1ETQmASEiBg8BBhYzITI2LwEuAQM2%2FkQLEAFOBw45BhcKAcIKFwY%2BDgdTARABVpYKFgROBBYK%2FdoKFgROBBYKlgoPDwqWCg8PCgLuCg8PCpYKDw%2F%2Bsf4MChMCJgILCgJYCgsCJgITBLAPCv7TGBVsCQwMCWwVGAEtCg%2F%2BcA0JnAkNDQmcCQ0PCv12Cg8PCpYKDw8KlgoPDwoCigoP%2FagOCpgKDg4KmAoOAAAAAAQAAABkBLAETAAdACEAKQAxAAABMzIeAh8BMzIWFREUBiMhIiY1ETQ2OwE%2BBAEVMzUEIgYUFjI2NCQyFhQGIiY0AfTIOF00JAcGlik7Oyn8GCk7OymWAgknM10ByGT%2Bz76Hh76H%2Fu9WPDxWPARMKTs7FRQ7Kf2oKTs7KQJYKTsIG0U1K%2F7UZGRGh76Hh74IPFY8PFYAAAAAAgA1AAAEsASvACAAIwAACQEWFx4BHwEVITUyNi8BIQYHBh4CMxUhNTY3PgE%2FAQEDIQMCqQGBFCgSJQkK%2Fl81LBFS%2Fnk6IgsJKjIe%2FpM4HAwaBwcBj6wBVKIEr%2FwaMioTFQECQkJXLd6RWSIuHAxCQhgcDCUNDQPu%2FVoByQAAAAADAGQAAAPwBLAAJwAyADsAAAEeBhUUDgMjITU%2BATURNC4EJzUFMh4CFRQOAgclMzI2NTQuAisBETMyNjU0JisBAvEFEzUwOyodN1htbDD%2BDCk7AQYLFyEaAdc5dWM%2BHy0tEP6Pi05pESpTPnbYUFJ9Xp8CgQEHGB0zOlIuQ3VONxpZBzMoAzsYFBwLEAkHRwEpSXNDM1s6KwkxYUopOzQb%2FK5lUFqBAAABAMgAAANvBLAAGQAAARcOAQcDBhYXFSE1NjcTNjQuBCcmJzUDbQJTQgeECSxK%2Fgy6Dq0DAw8MHxUXDQYEsDkTNSj8uTEoBmFhEFIDQBEaExAJCwYHAwI5AAAAAAL%2FtQAABRQEsAAlAC8AAAEjNC4FKwERFBYfARUhNTI%2BAzURIyIOBRUjESEFIxEzByczESM3BRQyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj7m0tLfX1LS30DhBUgFQ4IAwH8rhYZAQJkZAEFCRUOA1IBAwgOFSAVASzI%2FOCnpwMgpwACACH%2FtQSPBLAAJQAvAAABIzQuBSsBERQWHwEVITUyPgM1ESMiDgUVIxEhEwc1IRUnNxUhNQRMMggLGRMmGBnIMhkZ%2FnAEDiIaFsgZGCYTGQsIMgPoQ6f84KenAyADhBUgFQ4IAwH9dhYZAQJkZAEFCRUOAooBAwgOFSAVASz7gn1LS319S0sABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyAlgVHR0V%2FagVHR0VA%2BgVHR0V%2FBgVHR0VAyAVHR0V%2FOAVHR0VBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYDITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NgMhMhYdARQGIyEiJj0BNDb6ArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR3dArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AAAE1NDYzITIWHQEUBiMhIiYBNTQ2MyEyFh0BFAYjISImEzU0NjMhMhYdARQGIyEiJgE1NDYzITIWHQEUBiMhIiYB9B0VAlgVHR0V%2FagVHf5wHRUD6BUdHRX8GBUdyB0VAyAVHR0V%2FOAVHf7UHRUETBUdHRX7tBUdA7ZkFR0dFWQVHR3%2B6WQVHR0VZBUdHf7pZBUdHRVkFR0d%2FulkFR0dFWQVHR0AAAQAAAAABLAETAAPAB8ALwA%2FAAATITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2MgRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dBEwdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAgAAAAABLAETAAPAB8ALwA%2FAE8AXwBvAH8AABMzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2MmQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR0ETB0VZBUdHRVkFR0dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdHRVkFR0dFWQVHf7UHRVkFR0dFWQVHR0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0dFWQVHR0VZBUdAAAG%2F5wAAASwBEwAAwATACMAKgA6AEoAACEjETsCMhYdARQGKwEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2BQc1IzUzNQUhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2AZBkZJZkFR0dFWQVHR0VAfQVHR0V%2FgwVHR3%2B%2BqfIyAHCASwVHR0V%2FtQVHR0VAlgVHR0V%2FagVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR36fUtkS68dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAAABgAAAAAFFARMAA8AEwAjACoAOgBKAAATMzIWHQEUBisBIiY9ATQ2ASMRMwEhMhYdARQGIyEiJj0BNDYFMxUjFSc3BSEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyZBUdHRVkFR0dA2dkZPyuAfQVHR0V%2FgwVHR0EL8jIp6f75gEsFR0dFf7UFR0dFQJYFR0dFf2oFR0dBEwdFWQVHR0VZBUd%2B7QETP7UHRVkFR0dFWQVHchkS319rx0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0AAAAAAgAAAMgEsAPoAA8AEgAAEyEyFhURFAYjISImNRE0NgkCSwLuHywsH%2F0SHywsBIT%2B1AEsA%2BgsH%2F12HywsHwKKHyz9RAEsASwAAwAAAAAEsARMAA8AFwAfAAATITIWFREUBiMhIiY1ETQ2FxE3BScBExEEMhYUBiImNCwEWBIaGhL7qBIaGkr3ASpKASXs%2FNJwTk5wTgRMGhL8DBIaGhID9BIaZP0ftoOcAT7%2B4AH0dE5vT09vAAAAAAIA2wAFBDYEkQAWAB4AAAEyHgEVFAcOAQ8BLgQnJjU0PgIWIgYUFjI2NAKIdcZzRkWyNjYJIV5YbSk8RHOft7eCgreCBJF4ynVzj23pPz4IIWZomEiEdVijeUjDgriBgbgAAAACABcAFwSZBJkADwAXAAAAMh4CFA4CIi4CND4BAREiDgEUHgEB4%2BrWm1tbm9bq1ptbW5sBS3TFcnLFBJlbm9bq1ptbW5vW6tab%2FG8DVnLF6MVyAAACAHUAAwPfBQ8AGgA1AAABHgYVFA4DBy4DNTQ%2BBQMOAhceBBcWNj8BNiYnLgInJjc2IyYCKhVJT1dOPiUzVnB9P1SbfEokP0xXUEm8FykoAwEbITEcExUWAgYCCQkFEikMGiACCAgFD0iPdXdzdYdFR4BeRiYEBTpjl1lFh3ZzeHaQ%2Ff4hS4I6JUEnIw4IBwwQIgoYBwQQQSlZtgsBAAAAAwAAAAAEywRsAAwAKgAvAAABNz4CHgEXHgEPAiUhMhcHISIGFREUFjMhMjY9ATcRFAYjISImNRE0NgkBBzcBA%2BhsAgYUFR0OFgoFBmz9BQGQMje7%2FpApOzspAfQpO8i7o%2F5wpbm5Azj%2BlqE3AWMD9XMBAgIEDw4WKgsKc8gNuzsp%2FgwpOzsptsj%2BtKW5uaUBkKW5%2Ftf%2BljKqAWMAAgAAAAAEkwRMABsANgAAASEGByMiBhURFBYzITI2NTcVFAYjISImNRE0NgUBFhQHAQYmJzUmDgMHPgY3NT4BAV4BaaQ0wyk7OykB9Ck7yLml%2FnClubkCfwFTCAj%2BrAcLARo5ZFRYGgouOUlARioTAQsETJI2Oyn%2BDCk7OymZZ6W5uaUBkKW5G%2F7TBxUH%2Fs4GBAnLAQINFjAhO2JBNB0UBwHSCgUAAAAAAgAAAAAEnQRMAB0ANQAAASEyFwchIgYVERQWMyEyNj0BNxUUBiMhIiY1ETQ2CQE2Mh8BFhQHAQYiLwEmND8BNjIfARYyAV4BXjxDsv6jKTs7KQH0KTvIuaX%2BcKW5uQHKAYsHFQdlBwf97QcVB%2FgHB2UHFQdvCBQETBexOyn%2BDCk7OylFyNulubmlAZCluf4zAYsHB2UHFQf97AcH%2BAcVB2UHB28HAAAAAQAKAAoEpgSmADsAAAkBNjIXARYGKwEVMzU0NhcBFhQHAQYmPQEjFTMyFgcBBiInASY2OwE1IxUUBicBJjQ3ATYWHQEzNSMiJgE%2BAQgIFAgBBAcFCqrICggBCAgI%2FvgICsiqCgUH%2FvwIFAj%2B%2BAgFCq%2FICgj%2B%2BAgIAQgICsivCgUDlgEICAj%2B%2BAgKyK0KBAf%2B%2FAcVB%2F73BwQKrcgKCP74CAgBCAgKyK0KBAcBCQcVBwEEBwQKrcgKAAEAyAAAA4QETAAZAAATMzIWFREBNhYVERQGJwERFAYrASImNRE0NvpkFR0B0A8VFQ%2F%2BMB0VZBUdHQRMHRX%2BSgHFDggV%2FBgVCA4Bxf5KFR0dFQPoFR0AAAABAAAAAASwBEwAIwAAEzMyFhURATYWFREBNhYVERQGJwERFAYnAREUBisBIiY1ETQ2MmQVHQHQDxUB0A8VFQ%2F%2BMBUP%2FjAdFWQVHR0ETB0V%2FkoBxQ4IFf5KAcUOCBX8GBUIDgHF%2FkoVCA4Bxf5KFR0dFQPoFR0AAAABAJ0AGQSwBDMAFQAAAREUBicBERQGJwEmNDcBNhYVEQE2FgSwFQ%2F%2BMBUP%2FhQPDwHsDxUB0A8VBBr8GBUIDgHF%2FkoVCA4B4A4qDgHgDggV%2FkoBxQ4IAAAAAQDIABYEMwQ2AAsAABMBFhQHAQYmNRE0NvMDLhIS%2FNISGRkEMv4OCx4L%2Fg4LDhUD6BUOAAIAyABkA4QD6AAPAB8AABMzMhYVERQGKwEiJjURNDYhMzIWFREUBisBIiY1ETQ2%2BsgVHR0VyBUdHQGlyBUdHRXIFR0dA%2BgdFfzgFR0dFQMgFR0dFfzgFR0dFQMgFR0AAAEAyABkBEwD6AAPAAABERQGIyEiJjURNDYzITIWBEwdFfzgFR0dFQMgFR0DtvzgFR0dFQMgFR0dAAAAAAEAAAAZBBMEMwAVAAABETQ2FwEWFAcBBiY1EQEGJjURNDYXAfQVDwHsDw%2F%2BFA8V%2FjAPFRUPAmQBthUIDv4gDioO%2FiAOCBUBtv47DggVA%2BgVCA4AAAH%2F%2FgACBLMETwAjAAABNzIWFRMUBiMHIiY1AwEGJjUDAQYmNQM0NhcBAzQ2FwEDNDYEGGQUHgUdFWQVHQL%2BMQ4VAv4yDxUFFQ8B0gIVDwHSAh0ETgEdFfwYFR0BHRUBtf46DwkVAbX%2BOQ4JFAPoFQkP%2Fj4BthQJDv49AbYVHQAAAQEsAAAD6ARMABkAAAEzMhYVERQGKwEiJjURAQYmNRE0NhcBETQ2A1JkFR0dFWQVHf4wDxUVDwHQHQRMHRX8GBUdHRUBtv47DggVA%2BgVCA7%2BOwG2FR0AAAIAZADIBLAESAALABsAAAkBFgYjISImNwE2MgEhMhYdARQGIyEiJj0BNDYCrgH1DwkW%2B%2B4WCQ8B9Q8q%2FfcD6BUdHRX8GBUdHQQ5%2FeQPFhYPAhwP%2FUgdFWQVHR0VZBUdAAEAiP%2F8A3UESgAFAAAJAgcJAQN1%2FqABYMX92AIoA4T%2Bn%2F6fxgIoAiYAAAAAAQE7%2F%2FwEKARKAAUAAAkBJwkBNwQo%2FdnGAWH%2Bn8YCI%2F3ZxgFhAWHGAAIAFwAXBJkEmQAPADMAAAAyHgIUDgIiLgI0PgEFIyIGHQEjIgYdARQWOwEVFBY7ATI2PQEzMjY9ATQmKwE1NCYB4%2BrWm1tbm9bq1ptbW5sBfWQVHZYVHR0Vlh0VZBUdlhUdHRWWHQSZW5vW6tabW1ub1urWm7odFZYdFWQVHZYVHR0Vlh0VZBUdlhUdAAAAAAIAFwAXBJkEmQAPAB8AAAAyHgIUDgIiLgI0PgEBISIGHQEUFjMhMjY9ATQmAePq1ptbW5vW6tabW1ubAkX%2BDBUdHRUB9BUdHQSZW5vW6tabW1ub1urWm%2F5%2BHRVkFR0dFWQVHQACABcAFwSZBJkADwAzAAAAMh4CFA4CIi4CND4BBCIPAScmIg8BBhQfAQcGFB8BFjI%2FARcWMj8BNjQvATc2NC8BAePq1ptbW5vW6tabW1ubAeUZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0JCXh4CQmNBJlbm9bq1ptbW5vW6tabrQl4eAkJjQkZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0AAgAXABcEmQSZAA8AJAAAADIeAhQOAiIuAjQ%2BAQEnJiIPAQYUHwEWMjcBNjQvASYiBwHj6tabW1ub1urWm1tbmwEVVAcVCIsHB%2FIHFQcBdwcHiwcVBwSZW5vW6tabW1ub1urWm%2F4xVQcHiwgUCPEICAF3BxUIiwcHAAAAAAMAFwAXBJkEmQAPADsASwAAADIeAhQOAiIuAjQ%2BAQUiDgMVFDsBFjc%2BATMyFhUUBgciDgUHBhY7ATI%2BAzU0LgMTIyIGHQEUFjsBMjY9ATQmAePq1ptbW5vW6tabW1ubAT8dPEIyIRSDHgUGHR8UFw4TARkOGhITDAIBDQ6tBx4oIxgiM0Q8OpYKDw8KlgoPDwSZW5vW6tabW1ub1urWm5ELHi9PMhkFEBQQFRIXFgcIBw4UHCoZCBEQKDhcNi9IKhsJ%2FeMPCpYKDw8KlgoPAAADABcAFwSZBJkADwAfAD4AAAAyHgIUDgIiLgI0PgEFIyIGHQEUFjsBMjY9ATQmAyMiBh0BFBY7ARUjIgYdARQWMyEyNj0BNCYrARE0JgHj6tabW1ub1urWm1tbmwGWlgoPDwqWCg8PCvoKDw8KS0sKDw8KAV4KDw8KSw8EmVub1urWm1tbm9bq1ptWDwqWCg8PCpYKD%2F7UDwoyCg%2FIDwoyCg8PCjIKDwETCg8AAgAAAAAEsASwAC8AXwAAATMyFh0BHgEXMzIWHQEUBisBDgEHFRQGKwEiJj0BLgEnIyImPQE0NjsBPgE3NTQ2ExUUBisBIiY9AQ4BBzMyFh0BFAYrAR4BFzU0NjsBMhYdAT4BNyMiJj0BNDY7AS4BAg2WCg9nlxvCCg8PCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw%2B5DwqWCg9EZheoCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmBLAPCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw8KlgoPZ5cbwgoP%2Fs2oCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmRA8KlgoPRGYAAwAXABcEmQSZAA8AGwA%2FAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBxcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyAePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnKaQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwdABxUHfHwHFQSZW5vW6tabW1ub1urWmztyxejFcnLF6MVaQAcVB3x8BxUHQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwAAAAMAFwAXBJkEmQAPABsAMAAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcXFhQHAQYiLwEmND8BNjIfATc2MgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJyg2oHB%2F7ACBQIyggIagcVB0%2FFBxUEmVub1urWm1tbm9bq1ps7csXoxXJyxejFfWoHFQf%2BvwcHywcVB2oICE%2FFBwAAAAMAFwAXBJkEmQAPABgAIQAAADIeAhQOAiIuAjQ%2BAQUiDgEVFBcBJhcBFjMyPgE1NAHj6tabW1ub1urWm1tbmwFLdMVyQQJLafX9uGhzdMVyBJlbm9bq1ptbW5vW6tabO3LFdHhpAktB0P24PnLFdHMAAAAAAQAXAFMEsAP5ABUAABMBNhYVESEyFh0BFAYjIREUBicBJjQnAgoQFwImFR0dFf3aFxD99hACRgGrDQoV%2Ft0dFcgVHf7dFQoNAasNJgAAAAABAAAAUwSZA%2FkAFQAACQEWFAcBBiY1ESEiJj0BNDYzIRE0NgJ%2FAgoQEP32EBf92hUdHRUCJhcD8f5VDSYN%2FlUNChUBIx0VyBUdASMVCgAAAAEAtwAABF0EmQAVAAAJARYGIyERFAYrASImNREhIiY3ATYyAqoBqw0KFf7dHRXIFR3%2B3RUKDQGrDSYEif32EBf92hUdHRUCJhcQAgoQAAAAAQC3ABcEXQSwABUAAAEzMhYVESEyFgcBBiInASY2MyERNDYCJsgVHQEjFQoN%2FlUNJg3%2BVQ0KFQEjHQSwHRX92hcQ%2FfYQEAIKEBcCJhUdAAABAAAAtwSZBF0AFwAACQEWFAcBBiY1EQ4DBz4ENxE0NgJ%2FAgoQEP32EBdesKWBJAUsW4fHfhcEVf5VDSYN%2FlUNChUBIwIkRHVNabGdcUYHAQYVCgACAAAAAASwBLAAFQArAAABITIWFREUBi8BBwYiLwEmND8BJyY2ASEiJjURNDYfATc2Mh8BFhQPARcWBgNSASwVHRUOXvkIFAhqBwf5Xg4I%2FiH%2B1BUdFQ5e%2BQgUCGoHB%2FleDggEsB0V%2FtQVCA5e%2BQcHaggUCPleDhX7UB0VASwVCA5e%2BQcHaggUCPleDhUAAAACAEkASQRnBGcAFQArAAABFxYUDwEXFgYjISImNRE0Nh8BNzYyASEyFhURFAYvAQcGIi8BJjQ%2FAScmNgP2agcH%2BV4OCBX%2B1BUdFQ5e%2BQgU%2FQwBLBUdFQ5e%2BQgUCGoHB%2FleDggEYGoIFAj5Xg4VHRUBLBUIDl75B%2F3xHRX%2B1BUIDl75BwdqCBQI%2BV4OFQAAAAADABcAFwSZBJkADwAfAC8AAAAyHgIUDgIiLgI0PgEFIyIGFxMeATsBMjY3EzYmAyMiBh0BFBY7ATI2PQE0JgHj6tabW1ub1urWm1tbmwGz0BQYBDoEIxQ2FCMEOgQYMZYKDw8KlgoPDwSZW5vW6tabW1ub1urWm7odFP7SFB0dFAEuFB3%2BDA8KlgoPDwqWCg8AAAAABQAAAAAEsASwAEkAVQBhAGgAbwAAATIWHwEWHwEWFxY3Nj8BNjc2MzIWHwEWHwIeATsBMhYdARQGKwEiBh0BIREjESE1NCYrASImPQE0NjsBMjY1ND8BNjc%2BBAUHBhY7ATI2LwEuAQUnJgYPAQYWOwEyNhMhIiY1ESkBERQGIyERAQQJFAUFFhbEFQ8dCAsmxBYXERUXMA0NDgQZCAEPCj0KDw8KMgoP%2FnDI%2FnAPCjIKDw8KPQsOCRkFDgIGFRYfAp2mBwQK2woKAzMDEP41sQgQAzMDCgrnCwMe%2FokKDwGQAlgPCv6JBLAEAgIKDXYNCxUJDRZ2DQoHIREQFRh7LAkLDwoyCg8PCq8BLP7UrwoPDwoyCg8GBQQwgBkUAwgWEQ55ogcKDgqVCgSqnQcECo8KDgr8cg8KAXf%2BiQoPAZAAAAAAAgAAAAwErwSmACsASQAAATYWFQYCDgQuAScmByYOAQ8BBiY1NDc%2BATc%2BAScuAT4BNz4GFyYGBw4BDwEOBAcOARY2Nz4CNz4DNz4BBI0IGgItQmxhi2KORDg9EQQRMxuZGhYqCFUYEyADCQIQOjEnUmFch3vAJQgdHyaiPT44XHRZUhcYDhItIRmKcVtGYWtbKRYEBKYDEwiy%2Ft3IlVgxEQgLCwwBAQIbG5kYEyJAJghKFRE8Hzdff4U%2FM0o1JSMbL0QJGCYvcSEhHjZST2c1ODwEJygeW0AxJUBff1UyFAABAF0AHgRyBM8ATwAAAQ4BHgQXLgc%2BATceAwYHDgQHBicmNzY3PgQuAScWDgMmJy4BJyY%2BBDcGHgM3PgEuAicmPgMCjScfCic4R0IgBBsKGAoQAwEJEg5gikggBhANPkpTPhZINx8SBgsNJysiCRZOQQoVNU1bYC9QZwICBAUWITsoCAYdJzIYHw8YIiYHDyJJYlkEz0OAZVxEOSQMBzgXOB42IzElKRIqg5Gnl0o3Z0c6IAYWCwYNAwQFIDhHXGF1OWiqb0sdBxUknF0XNTQ8PEUiNWNROBYJDS5AQVUhVZloUSkAAAAAA%2F%2FcAGoE1ARGABsAPwBRAAAAMh4FFA4FIi4FND4EBSYGFxYVFAYiJjU0NzYmBwYHDgEXHgQyPgM3NiYnJgUHDgEXFhcWNj8BNiYnJicuAQIGpJ17bk85HBw6T257naKde25POhwcOU9uewIPDwYIGbD4sBcIBw5GWg0ECxYyWl%2BDiINfWjIWCwQMWv3%2FIw8JCSU4EC0OIw4DDywtCyIERi1JXGJcSSpJXGJcSS0tSVxiXEkqSVxiXEncDwYTOT58sLB8OzcTBg9FcxAxEiRGXkQxMEVeRSQSMRF1HiQPLxJEMA0EDyIPJQ8sSRIEAAAABP%2FcAAAE1ASwABQAJwA7AEwAACEjNy4ENTQ%2BBTMyFzczEzceARUUDgMHNz4BNzYmJyYlBgcOARceBBc3LgE1NDc2JhcHDgEXFhcWNj8CJyYnLgECUJQfW6l2WSwcOU9ue51SPUEglCYvbIknUGqYUi5NdiYLBAw2%2FVFGWg0ECxIqSExoNSlrjxcIB3wjDwkJJTgQLQ4MFgMsLQsieBRhdHpiGxVJXGJcSS0Pef5StVXWNBpacm5jGq0xiD8SMRFGckVzEDESHjxRQTkNmhKnbjs3EwZwJA8vEkQwDQQPC1YELEkSBAAAAAP%2FngAABRIEqwALABgAKAAAJwE2FhcBFgYjISImJSE1NDY7ATIWHQEhAQczMhYPAQ4BKwEiJi8BJjZaAoIUOBQCghUbJfryJRsBCgFZDwqWCg8BWf5DaNAUGAQ6BCMUNhQjBDoEGGQEKh8FIfvgIEdEhEsKDw8KSwLT3x0U%2FBQdHRT8FB0AAAABAGQAFQSwBLAAKAAAADIWFREBHgEdARQGJyURFh0BFAYvAQcGJj0BNDcRBQYmPQE0NjcBETQCTHxYAWsPFhgR%2FplkGhPNzRMaZP6ZERgWDwFrBLBYPv6t%2FrsOMRQpFA0M%2Bf75XRRAFRAJgIAJEBVAFF0BB%2FkMDRQpFDEOAUUBUz4AAAARAAAAAARMBLAAHQAnACsALwAzADcAOwA%2FAEMARwBLAE8AUwBXAFsAXwBjAAABMzIWHQEzMhYdASE1NDY7ATU0NjsBMhYdASE1NDYBERQGIyEiJjURFxUzNTMVMzUzFTM1MxUzNTMVMzUFFTM1MxUzNTMVMzUzFTM1MxUzNQUVMzUzFTM1MxUzNTMVMzUzFTM1A1JkFR0yFR37tB0VMh0VZBUdAfQdAQ8dFfwYFR1kZGRkZGRkZGRk%2FHxkZGRkZGRkZGT8fGRkZGRkZGRkZASwHRUyHRWWlhUdMhUdHRUyMhUd%2FnD9EhUdHRUC7shkZGRkZGRkZGRkyGRkZGRkZGRkZGTIZGRkZGRkZGRkZAAAAAMAAAAZBXcElwAZACUANwAAARcWFA8BBiY9ASMBISImPQE0NjsBATM1NDYBBycjIiY9ATQ2MyEBFxYUDwEGJj0BIyc3FzM1NDYEb%2FkPD%2FkOFZ%2F9qP7dFR0dFdECWPEV%2FamNetEVHR0VASMDGvkPD%2FkOFfG1jXqfFQSN5g4qDuYOCBWW%2FagdFWQVHQJYlhUI%2FpiNeh0VZBUd%2Fk3mDioO5g4IFZa1jXqWFQgAAAABAAAAAASwBEwAEgAAEyEyFhURFAYjIQERIyImNRE0NmQD6Ck7Oyn9rP7QZCk7OwRMOyn9qCk7%2FtQBLDspAlgpOwAAAAMAZAAABEwEsAAJABMAPwAAEzMyFh0BITU0NiEzMhYdASE1NDYBERQOBSIuBTURIRUUFRwBHgYyPgYmNTQ9AZbIFR3%2B1B0C0cgVHf7UHQEPBhgoTGacwJxmTCgYBgEsAwcNFB8nNkI2Jx8TDwUFAQSwHRX6%2BhUdHRX6%2BhUd%2FnD%2B1ClJalZcPigoPlxWakkpASz6CRIVKyclIRsWEAgJEBccISUnKhURCPoAAAAB%2F%2F8A1ARMA8IABQAAAQcJAScBBEzG%2Fp%2F%2Bn8UCJwGbxwFh%2Fp%2FHAicAAQAAAO4ETQPcAAUAAAkCNwkBBE392v3ZxgFhAWEDFf3ZAifH%2Fp8BYQAAAAAC%2F1EAZAVfA%2BgAFAApAAABITIWFREzMhYPAQYiLwEmNjsBESElFxYGKwERIRchIiY1ESMiJj8BNjIBlALqFR2WFQgO5g4qDuYOCBWW%2FoP%2BHOYOCBWWAYHX%2FRIVHZYVCA7mDioD6B0V%2FdkVDvkPD%2FkOFQGRuPkOFf5wyB0VAiYVDvkPAAABAAYAAASeBLAAMAAAEzMyFh8BITIWBwMOASMhFyEyFhQGKwEVFAYiJj0BIRUUBiImPQEjIiYvAQMjIiY0NjheERwEJgOAGB4FZAUsIf2HMAIXFR0dFTIdKh3%2B1B0qHR8SHQYFyTYUHh4EsBYQoiUY%2FiUVK8gdKh0yFR0dFTIyFR0dFTIUCQoDwR0qHQAAAAACAAAAAASwBEwACwAPAAABFSE1MzQ2MyEyFhUFIREhBLD7UMg7KQEsKTv9RASw%2B1AD6GRkKTs7Kcj84AACAAAAAAXcBEwADAAQAAATAxEzNDYzITIWFSEVBQEhAcjIyDspASwqOgH0ASz%2B1PtQASwDIP5wAlgpOzspyGT9RAK8AAEBRQAAA2sErwAbAAABFxYGKwERMzIWDwEGIi8BJjY7AREjIiY%2FATYyAnvmDggVlpYVCA7mDioO5g4IFZaWFQgO5g4qBKD5DhX9pxUO%2BQ8P%2BQ4VAlkVDvkPAAAAAQABAUQErwNrABsAAAEXFhQPAQYmPQEhFRQGLwEmND8BNhYdASE1NDYDqPkODvkPFf2oFQ%2F5Dg75DxUCWBUDYOUPKQ%2FlDwkUl5cUCQ%2FlDykP5Q8JFZWVFQkAAAAEAAAAAASwBLAACQAZAB0AIQAAAQMuASMhIgYHAwUhIgYdARQWMyEyNj0BNCYFNTMVMzUzFQSRrAUkFP1gFCQFrAQt%2FBgpOzspA%2BgpOzv%2Bq2RkZAGQAtwXLSgV%2FR1kOylkKTs7KWQpO8hkZGRkAAAAA%2F%2BcAGQEsARMAAsAIwAxAAAAMhYVERQGIiY1ETQDJSMTFgYjIisBIiYnAj0BNDU0PgE7ASUBFSIuAz0BND4CNwRpKh0dKh1k%2FV0mLwMRFQUCVBQdBDcCCwzIAqP8GAQOIhoWFR0dCwRMHRX8rhUdHRUDUhX8mcj%2B7BAIHBUBUQ76AgQQDw36%2FtT6AQsTKRwyGigUDAEAAAACAEoAAARmBLAALAA1AAABMzIWDwEeARcTFzMyFhQGBw4EIyIuBC8BLgE0NjsBNxM%2BATcnJjYDFjMyNw4BIiYCKV4UEgYSU3oPP3YRExwaEggeZGqfTzl0XFU%2BLwwLEhocExF2Pw96UxIGEyQyNDUxDDdGOASwFRMlE39N%2FrmtHSkoBwQLHBYSCg4REg4FBAgoKR2tAUdNfhQgExr7vgYGMT09AAEAFAAUBJwEnAAXAAABNwcXBxcHFycHJwcnBzcnNyc3Jxc3FzcDIOBO6rS06k7gLZubLeBO6rS06k7gLZubA7JO4C2bmy3gTuq0tOpO4C2bmy3gTuq0tAADAAAAZASwBLAAIQAtAD0AAAEzMhYdAQchMhYdARQHAw4BKwEiJi8BIyImNRE0PwI%2BARcPAREzFzMTNSE3NQEzMhYVERQGKwEiJjURNDYCijIoPBwBSCg8He4QLBf6B0YfHz0tNxSRYA0xG2SWZIjW%2Bv4%2BMv12ZBUdHRVkFR0dBLBRLJZ9USxkLR3%2BqBghMhkZJCcBkCQbxMYcKGTU1f6JZAF3feGv%2FtQdFf4MFR0dFQH0FR0AAAAAAwAAAAAEsARMACAAMAA8AAABMzIWFxMWHQEUBiMhFh0BFAYrASImLwImNRE0NjsBNgUzMhYVERQGKwEiJjURNDYhByMRHwEzNSchNQMCWPoXLBDuHTwo%2FrgcPCgyGzENYJEUNy09fP3pZBUdHRVkFR0dAl%2BIZJZkMjIBwvoETCEY%2FqgdLWQsUXYHlixRKBzGxBskAZAnJGRkHRX%2BDBUdHRUB9BUdZP6J1dSv4X0BdwADAAAAZAUOBE8AGwA3AEcAAAElNh8BHgEPASEyFhQGKwEDDgEjISImNRE0NjcXERchEz4BOwEyNiYjISoDLgQnJj8BJwUzMhYVERQGKwEiJjURNDYBZAFrHxZuDQEMVAEuVGxuVGqDBhsP%2FqoHphwOOmQBJYMGGw%2FLFRMSFv44AgoCCQMHAwUDAQwRklb9T2QVHR0VZBUdHQNp5hAWcA0mD3lMkE7%2BrRUoog0CDRElCkj%2BCVkBUxUoMjIBAgIDBQIZFrdT5B0V%2FgwVHR0VAfQVHQAAAAP%2FnABkBLAETwAdADYARgAAAQUeBBURFAYjISImJwMjIiY0NjMhJyY2PwE2BxcWBw4FKgIjIRUzMhYXEyE3ESUFMzIWFREUBisBIiY1ETQ2AdsBbgIIFBANrAf%2Bqg8bBoNqVW1sVAEuVQsBDW4WSpIRDAIDBQMHAwkDCgH%2BJd0PHAaCASZq%2FqoCUGQVHR0VZBUdHQRP5gEFEBEXC%2F3zDaIoFQFTTpBMeQ8mDXAWrrcWGQIFAwICAWQoFf6tWQH37OQdFf4MFR0dFQH0FR0AAAADAGEAAARMBQ4AGwA3AEcAAAAyFh0BBR4BFREUBiMhIiYvAQMmPwE%2BAR8BETQXNTQmBhURHAMOBAcGLwEHEyE3ESUuAQMhMhYdARQGIyEiJj0BNDYB3pBOAVMVKKIN%2FfMRJQoJ5hAWcA0mD3nGMjIBAgIDBQIZFrdT7AH3Wf6tFSiWAfQVHR0V%2FgwVHR0FDm5UaoMGGw%2F%2BqgemHA4OAWsfFm4NAQxUAS5U1ssVExIW%2FjgCCgIJAwcDBQMBDBGSVv6tZAElgwYb%2FQsdFWQVHR0VZBUdAAP%2F%2FQAGA%2BgFFAAPAC0ASQAAASEyNj0BNCYjISIGHQEUFgEVFAYiJjURBwYmLwEmNxM%2BBDMhMhYVERQGBwEDFzc2Fx4FHAIVERQWNj0BNDY3JREnAV4B9BUdHRX%2BDBUdHQEPTpBMeQ8mDXAWEOYBBRARFwsCDQ2iKBX9iexTtxYZAgUDAgIBMjIoFQFTWQRMHRVkFR0dFWQVHfzmalRubFQBLlQMAQ1uFh8BawIIEw8Mpgf%2Bqg8bBgHP%2Fq1WkhEMAQMFAwcDCQIKAv44FhITFcsPGwaDASVkAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBJSYGHQEhIgYdARQWMyEVFBY3JTY0AeLs1ptbW5vW7NabW1ubAob%2B7RAX%2Fu0KDw8KARMXEAETEASaW5vW7NabW1ub1uzWm%2F453w0KFYkPCpYKD4kVCg3fDSYAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgENAQYUFwUWNj0BITI2PQE0JiMhNTQmAeLs1ptbW5vW7NabW1ubASX%2B7RAQARMQFwETCg8PCv7tFwSaW5vW7NabW1ub1uzWm%2BjfDSYN3w0KFYkPCpYKD4kVCgAAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBAyYiBwMGFjsBERQWOwEyNjURMzI2AeLs1ptbW5vW7NabW1ubAkvfDSYN3w0KFYkPCpYKD4kVCgSaW5vW7NabW1ub1uzWm%2F5AARMQEP7tEBf%2B7QoPDwoBExcAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEFIyIGFREjIgYXExYyNxM2JisBETQmAeLs1ptbW5vW7NabW1ubAZeWCg%2BJFQoN3w0mDd8NChWJDwSaW5vW7NabW1ub1uzWm7sPCv7tFxD%2B7RAQARMQFwETCg8AAAMAGAAYBJgEmAAPAJYApgAAADIeAhQOAiIuAjQ%2BASUOAwcGJgcOAQcGFgcOAQcGFgcUFgcyHgEXHgIXHgI3Fg4BFx4CFxQGFBcWNz4CNy4BJy4BJyIOAgcGJyY2NS4BJzYuAQYHBicmNzY3HgIXHgMfAT4CJyY%2BATc%2BAzcmNzIWMjY3LgMnND4CJiceAT8BNi4CJwYHFB4BFS4CJz4BNxYyPgEB5OjVm1xcm9Xo1ZtcXJsBZA8rHDoKDz0PFD8DAxMBAzEFCRwGIgEMFhkHECIvCxU%2FOR0HFBkDDRQjEwcFaHUeISQDDTAMD0UREi4oLBAzDwQBBikEAQMLGhIXExMLBhAGKBsGBxYVEwYFAgsFAwMNFwQGCQcYFgYQCCARFwkKKiFBCwQCAQMDHzcLDAUdLDgNEiEQEgg%2FKhADGgMKEgoRBJhcm9Xo1ZtcXJvV6NWbEQwRBwkCAwYFBycPCxcHInIWInYcCUcYChQECA4QBAkuHgQPJioRFRscBAcSCgwCch0kPiAIAQcHEAsBAgsLIxcBMQENCQIPHxkCFBkdHB4QBgEBBwoMGBENBAMMJSAQEhYXDQ4qFBkKEhIDCQsXJxQiBgEOCQwHAQ0DBAUcJAwSCwRnETIoAwEJCwsLJQcKDBEAAAAAAQAAAAIErwSFABYAAAE2FwUXNxYGBw4BJwEGIi8BJjQ3ASY2AvSkjv79kfsGUE08hjv9rA8rD28PDwJYIk8EhVxliuh%2BWYcrIgsW%2FawQEG4PKxACV2XJAAYAAABgBLAErAAPABMAIwAnADcAOwAAEyEyFh0BFAYjISImPQE0NgUjFTMFITIWHQEUBiMhIiY9ATQ2BSEVIQUhMhYdARQGIyEiJj0BNDYFIRUhZAPoKTs7KfwYKTs7BBHIyPwYA%2BgpOzsp%2FBgpOzsEEf4MAfT8GAPoKTs7KfwYKTs7BBH%2B1AEsBKw7KWQpOzspZCk7ZGTIOylkKTs7KWQpO2RkyDspZCk7OylkKTtkZAAAAAIAZAAABEwEsAALABEAABMhMhYUBiMhIiY0NgERBxEBIZYDhBUdHRX8fBUdHQI7yP6iA4QEsB0qHR0qHf1E%2FtTIAfQB9AAAAAMAAABkBLAEsAAXABsAJQAAATMyFh0BITIWFREhNSMVIRE0NjMhNTQ2FxUzNQEVFAYjISImPQEB9MgpOwEsKTv%2BDMj%2BDDspASw7KcgB9Dsp%2FBgpOwSwOylkOyn%2BcGRkAZApO2QpO2RkZP1EyCk7OynIAAAABAAAAAAEsASwABUAKwBBAFcAABMhMhYPARcWFA8BBiIvAQcGJjURNDYpATIWFREUBi8BBwYiLwEmND8BJyY2ARcWFA8BFxYGIyEiJjURNDYfATc2MgU3NhYVERQGIyEiJj8BJyY0PwE2MhcyASwVCA5exwcHaggUCMdeDhUdAzUBLBUdFQ5exwgUCGoHB8deDgj%2BL2oHB8deDggV%2FtQVHRUOXscIFALLXg4VHRX%2B1BUIDl7HBwdqCBQIBLAVDl7HCBQIagcHx14OCBUBLBUdHRX%2B1BUIDl7HBwdqCBQIx14OFf0maggUCMdeDhUdFQEsFQgOXscHzl4OCBX%2B1BUdFQ5exwgUCGoHBwAAAAYAAAAABKgEqAAPABsAIwA7AEMASwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiQyFhQGIiY0JDIWFAYjIicHFhUUBiImNTQ2PwImNTQEMhYUBiImNCQyFhQGIiY0Advy3Z9fX5%2Fd8t2gXl6gAcbgv29vv%2BC%2Fb2%2F%2BLS0gIC0gAUwtICAWDg83ETNIMykfegEJ%2FoctICAtIAIdLSAgLSAEqF%2Bf3fLdoF5eoN3y3Z9Xb7%2Fgv29vv%2BC%2FBiAtISEtICAtIQqRFxwkMzMkIDEFfgEODhekIC0gIC0gIC0gIC0AAf%2FYAFoEuQS8AFsAACUBNjc2JicmIyIOAwcABw4EFx4BMzI3ATYnLgEjIgcGBwEOASY0NwA3PgEzMhceARcWBgcOBgcGIyImJyY2NwE2NzYzMhceARcWBgcBDgEnLgECIgHVWwgHdl8WGSJBMD8hIP6IDx4eLRMNBQlZN0ozAiQkEAcdEhoYDRr%2Bqw8pHA4BRyIjQS4ODyw9DQ4YIwwod26La1YOOEBGdiIwGkQB%2F0coW2tQSE5nDxE4Qv4eDyoQEAOtAdZbZWKbEQQUGjIhH%2F6JDxsdNSg3HT5CMwIkJCcQFBcMGv6uDwEcKQ4BTSIjIQEINykvYyMLKnhuiWZMBxtAOU6%2BRAH%2FSBg3ISSGV121Qv4kDwIPDyYAAAACAGQAWASvBEQAGQBEAAABPgIeAhUUDgMHLgQ1ND4CHgEFIg4DIi4DIyIGFRQeAhcWFx4EMj4DNzY3PgQ1NCYCiTB7eHVYNkN5hKg%2BPqeFeEM4WnZ4eQEjIT8yLSohJyktPyJDbxtBMjMPBw86KzEhDSIzKUAMBAgrKT8dF2oDtURIBS1TdkA5eYB%2FslVVsn%2BAeTlAdlMtBUgtJjY1JiY1NiZvTRc4SjQxDwcOPCouGBgwKEALBAkpKkQqMhNPbQACADn%2F8gR3BL4AFwAuAAAAMh8BFhUUBg8BJi8BNycBFwcvASY0NwEDNxYfARYUBwEGIi8BJjQ%2FARYfAQcXAQKru0KNQjgiHR8uEl%2F3%2FnvUaRONQkIBGxJpCgmNQkL%2B5UK6Qo1CQjcdLhJf9wGFBL5CjUJeKmsiHTUuEl%2F4%2FnvUahKNQrpCARv%2BRmkICY1CukL%2B5UJCjUK7Qjc3LxFf%2BAGFAAAAAAMAyAAAA%2BgEsAARABUAHQAAADIeAhURFAYjISImNRE0PgEHESERACIGFBYyNjQCBqqaZDo7Kf2oKTs8Zj4CWP7%2FVj09Vj0EsB4uMhX8Ryk7OykDuRUzLar9RAK8%2FRY9Vj09VgABAAAAAASwBLAAFgAACQEWFAYiLwEBEScBBRMBJyEBJyY0NjIDhgEbDx0qDiT%2B6dT%2BzP7oywEz0gEsAQsjDx0qBKH%2B5g8qHQ8j%2FvX%2B1NL%2BzcsBGAE01AEXJA4qHQAAAAADAScAEQQJBOAAMgBAAEsAAAEVHgQXIy4DJxEXHgQVFAYHFSM1JicuASczHgEXEScuBDU0PgI3NRkBDgMVFB4DFxYXET4ENC4CArwmRVI8LAKfBA0dMydAIjxQNyiym2SWVygZA4sFV0obLkJOMCAyVWg6HSoqFQ4TJhkZCWgWKTEiGBkzNwTgTgUTLD9pQiQuLBsH%2Fs0NBxMtPGQ%2Bi6oMTU8QVyhrVk1iEAFPCA4ZLzlYNkZwSCoGTf4SARIEDh02Jh0rGRQIBgPQ%2FsoCCRYgNEM0JRkAAAABAGQAZgOUBK0ASgAAATIeARUjNC4CIyIGBwYVFB4BFxYXMxUjFgYHBgc%2BATM2FjMyNxcOAyMiLgEHDgEPASc%2BBTc%2BAScjNTMmJy4CPgE3NgIxVJlemSc8OxolVBQpGxoYBgPxxQgVFS02ImIWIIwiUzUyHzY4HCAXanQmJ1YYFzcEGAcTDBEJMAwk3aYXFQcKAg4tJGEErVCLTig%2FIhIdFSw5GkowKgkFZDKCHj4yCg8BIh6TExcIASIfBAMaDAuRAxAFDQsRCjePR2QvORQrREFMIVgAAAACABn%2F%2FwSXBLAADwAfAAABMzIWDwEGIi8BJjY7AREzBRcWBisBESMRIyImPwE2MgGQlhUIDuYOKg7mDggVlsgCF%2BYOCBWWyJYVCA7mDioBLBYO%2Bg8P%2Bg4WA4QQ%2BQ4V%2FHwDhBUO%2BQ8AAAQAGf%2F%2FA%2BgEsAAHABcAGwAlAAABIzUjFSMRIQEzMhYPAQYiLwEmNjsBETMFFTM1EwczFSE1NyM1IQPoZGRkASz9qJYVCA7mDioO5g4IFZbIAZFkY8jI%2FtTIyAEsArxkZAH0%2FHwWDvoPD%2FoOFgOEZMjI%2FRL6ZJb6ZAAAAAAEABn%2F%2FwPoBLAADwAZACEAJQAAATMyFg8BBiIvASY2OwERMwUHMxUhNTcjNSERIzUjFSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAljIyP7UyMgBLGRkZAEsx2QBLBYO%2Bg8P%2Bg4WA4SW%2BmSW%2BmT7UGRkAfRkyMgAAAAEABn%2F%2FwRMBLAADwAVABsAHwAAATMyFg8BBiIvASY2OwERMwEjESM1MxMjNSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAlhkZMhkZMgBLMdkASwWDvoPD%2FoOFgOE%2FgwBkGT7UGQBkGTIyAAAAAAEABn%2F%2FwRMBLAADwAVABkAHwAAATMyFg8BBiIvASY2OwERMwEjNSMRIQcVMzUDIxEjNTMBkJYVCA7mDioO5g4IFZbIArxkyAEsx2QBZGTIASwWDvoPD%2FoOFgOE%2FgxkAZBkyMj7tAGQZAAAAAAFABn%2F%2FwSwBLAADwATABcAGwAfAAABMzIWDwEGIi8BJjY7AREzBSM1MxMhNSETITUhEyE1IQGQlhUIDuYOKg7mDggVlsgB9MjIZP7UASxk%2FnABkGT%2BDAH0ASwWDvoPD%2FoOFgOEyMj%2BDMj%2BDMj%2BDMgABQAZ%2F%2F8EsASwAA8AEwAXABsAHwAAATMyFg8BBiIvASY2OwERMwUhNSEDITUhAyE1IQMjNTMBkJYVCA7mDioO5g4IFZbIAyD%2BDAH0ZP5wAZBk%2FtQBLGTIyAEsFg76Dw%2F6DhYDhMjI%2FgzI%2FgzI%2FgzIAAIAAAAABEwETAAPAB8AAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmAV4BkKK8u6P%2BcKW5uQJn%2FgwpOzspAfQpOzsETLuj%2FnClubmlAZClucg7Kf4MKTs7KQH0KTsAAAAAAwAAAAAETARMAA8AHwArAAABITIWFREUBiMhIiY1ETQ2BSEiBhURFBYzITI2NRE0JgUXFhQPAQYmNRE0NgFeAZClubml%2FnCju7wCZP4MKTs7KQH0KTs7%2Fm%2F9ERH9EBgYBEy5pf5wpbm5pQGQo7vIOyn%2BDCk7OykB9Ck7gr4MJAy%2BDAsVAZAVCwAAAAADAAAAAARMBEwADwAfACsAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFg8BBiIvASY2AV4BkKO7uaX%2BcKW5uQJn%2FgwpOzspAfQpOzv%2BFQGQFQsMvgwkDL4MCwRMvKL%2BcKW5uaUBkKO7yDsp%2FgwpOzspAfQpO8gYEP0REf0QGAAAAAMAAAAABEwETAAPAB8AKwAAASEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFFxYGIyEiJj8BNjIBXgGQpbm5pf5wo7u5Amf%2BDCk7OykB9Ck7O%2F77vgwLFf5wFQsMvgwkBEy5pf5wo7u8ogGQpbnIOyn%2BDCk7OykB9Ck7z%2F0QGBgQ%2FREAAAAAAgAAAAAFFARMAB8ANQAAASEyFhURFAYjISImPQE0NjMhMjY1ETQmIyEiJj0BNDYHARYUBwEGJj0BIyImPQE0NjsBNTQ2AiYBkKW5uaX%2BcBUdHRUBwik7Oyn%2BPhUdHb8BRBAQ%2FrwQFvoVHR0V%2BhYETLml%2FnCluR0VZBUdOykB9Ck7HRVkFR3p%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgAAAQDZAAID1wSeACMAAAEXFgcGAgclMhYHIggBBwYrAScmNz4BPwEhIicmNzYANjc2MwMZCQgDA5gCASwYEQ4B%2Fvf%2B8wQMDgkJCQUCUCcn%2FtIXCAoQSwENuwUJEASeCQoRC%2F5TBwEjEv7K%2FsUFDwgLFQnlbm4TFRRWAS%2FTBhAAAAACAAAAAAT%2BBEwAHwA1AAABITIWHQEUBiMhIgYVERQWMyEyFh0BFAYjISImNRE0NgUBFhQHAQYmPQEjIiY9ATQ2OwE1NDYBXgGQFR0dFf4%2BKTs7KQHCFR0dFf5wpbm5AvEBRBAQ%2FrwQFvoVHR0V%2BhYETB0VZBUdOyn%2BDCk7HRVkFR25pQGQpbnp%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgACAAAAAASwBLAAFQAxAAABITIWFREUBi8BAQYiLwEmNDcBJyY2ASMiBhURFBYzITI2PQE3ERQGIyEiJjURNDYzIQLuAZAVHRUObf7IDykPjQ8PAThtDgj%2B75wpOzspAfQpO8i7o%2F5wpbm5pQEsBLAdFf5wFQgObf7IDw%2BNDykPAThtDhX%2B1Dsp%2FgwpOzsplMj%2B1qW5uaUBkKW5AAADAA4ADgSiBKIADwAbACMAAAAyHgIUDgIiLgI0PgEEIg4BFB4BMj4BNCYEMhYUBiImNAHh7tmdXV2d2e7ZnV1dnQHD5sJxccLmwnFx%2FnugcnKgcgSiXZ3Z7tmdXV2d2e7ZnUdxwubCcXHC5sJzcqBycqAAAAMAAAAABEwEsAAVAB8AIwAAATMyFhURMzIWBwEGIicBJjY7ARE0NgEhMhYdASE1NDYFFTM1AcLIFR31FAoO%2FoEOJw3%2BhQ0JFfod%2FoUD6BUd%2B7QdA2dkBLAdFf6iFg%2F%2BVg8PAaoPFgFeFR38fB0V%2BvoVHWQyMgAAAAMAAAAABEwErAAVAB8AIwAACQEWBisBFRQGKwEiJj0BIyImNwE%2BAQEhMhYdASE1NDYFFTM1AkcBeg4KFfQiFsgUGPoUCw4Bfw4n%2FfkD6BUd%2B7QdA2dkBJ7%2BTQ8g%2BhQeHRX6IQ8BrxAC%2FH8dFfr6FR1kMjIAAwAAAAAETARLABQAHgAiAAAJATYyHwEWFAcBBiInASY0PwE2MhcDITIWHQEhNTQ2BRUzNQGMAXEHFQeLBwf98wcVB%2F7cBweLCBUH1APoFR37tB0DZ2QC0wFxBweLCBUH%2FfMICAEjCBQIiwcH%2FdIdFfr6FR1kMjIABAAAAAAETASbAAkAGQAjACcAABM3NjIfAQcnJjQFNzYWFQMOASMFIiY%2FASc3ASEyFh0BITU0NgUVMzWHjg4qDk3UTQ4CFtIOFQIBHRX9qxUIDtCa1P49A%2BgVHfu0HQNnZAP%2Fjg4OTdRMDyqa0g4IFf2pFB4BFQ7Qm9T9Oh0V%2BvoVHWQyMgAAAAQAAAAABEwEsAAPABkAIwAnAAABBR4BFRMUBi8BByc3JyY2EwcGIi8BJjQ%2FAQEhMhYdASE1NDYFFTM1AV4CVxQeARUO0JvUm9IOCMNMDyoOjg4OTf76A%2BgVHfu0HQNnZASwAgEdFf2rFQgO0JrUmtIOFf1QTQ4Ojg4qDk3%2BWB0V%2BvoVHWQyMgACAAT%2F7ASwBK8ABQAIAAAlCQERIQkBFQEEsP4d%2Fsb%2BcQSs%2FTMCq2cBFP5xAacDHPz55gO5AAAAAAIAAABkBEwEsAAVABkAAAERFAYrAREhESMiJjURNDY7AREhETMHIzUzBEwdFZb9RJYVHR0V%2BgH0ZMhkZAPo%2FK4VHQGQ%2FnAdFQPoFB7%2B1AEsyMgAAAMAAABFBN0EsAAWABoALwAAAQcBJyYiDwEhESMiJjURNDY7AREhETMHIzUzARcWFAcBBiIvASY0PwE2Mh8BATYyBEwC%2FtVfCRkJlf7IlhUdHRX6AfRkyGRkAbBqBwf%2BXAgUCMoICGoHFQdPASkHFQPolf7VXwkJk%2F5wHRUD6BQe%2FtQBLMjI%2Fc5qBxUH%2FlsHB8sHFQdqCAhPASkHAAMAAAANBQcEsAAWABoAPgAAAREHJy4BBwEhESMiJjURNDY7AREhETMHIzUzARcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyBExnhg8lEP72%2FreWFR0dFfoB9GTIZGQB9kYPD4ODDw9GDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykD6P7zZ4YPAw7%2B9v5wHRUD6BQe%2FtQBLMjI%2FYxGDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykPRg8Pg4MPAAADAAAAFQSXBLAAFQAZAC8AAAERISIGHQEhESMiJjURNDY7AREhETMHIzUzEzMyFh0BMzIWDwEGIi8BJjY7ATU0NgRM%2FqIVHf4MlhUdHRX6AfRkyGRklmQVHZYVCA7mDioO5g4IFZYdA%2Bj%2B1B0Vlv5wHRUD6BQe%2FtQBLMjI%2FagdFfoVDuYODuYOFfoVHQAAAAADAAAAAASXBLAAFQAZAC8AAAERJyYiBwEhESMiJjURNDY7AREhETMHIzUzExcWBisBFRQGKwEiJj0BIyImPwE2MgRMpQ4qDv75%2Fm6WFR0dFfoB9GTIZGTr5g4IFZYdFWQVHZYVCA7mDioD6P5wpQ8P%2Fvf%2BcB0VA%2BgUHv7UASzIyP2F5Q8V%2BhQeHhT6FQ%2FlDwADAAAAyASwBEwACQATABcAABMhMhYdASE1NDYBERQGIyEiJjURExUhNTIETBUd%2B1AdBJMdFfu0FR1kAZAETB0VlpYVHf7U%2FdoVHR0VAib%2B1MjIAAAGAAMAfQStBJcADwAZAB0ALQAxADsAAAEXFhQPAQYmPQEhNSE1NDYBIyImPQE0NjsBFyM1MwE3NhYdASEVIRUUBi8BJjQFIzU7AjIWHQEUBisBA6f4Dg74DhX%2BcAGQFf0vMhUdHRUyyGRk%2FoL3DhUBkP5wFQ73DwOBZGRkMxQdHRQzBI3mDioO5g4IFZbIlhUI%2FoUdFWQVHcjI%2FcvmDggVlsiWFQgO5g4qecgdFWQVHQAAAAACAGQAAASwBLAAFgBRAAABJTYWFREUBisBIiY1ES4ENRE0NiUyFh8BERQOAg8BERQGKwEiJjURLgQ1ETQ%2BAzMyFh8BETMRPAE%2BAjMyFh8BETMRND4DA14BFBklHRXIFR0EDiIaFiX%2B4RYZAgEVHR0LCh0VyBUdBA4iGhYBBwoTDRQZAgNkBQkVDxcZAQFkAQUJFQQxdBIUH%2FuuFR0dFQGNAQgbHzUeAWcfRJEZDA3%2BPhw%2FMSkLC%2F5BFR0dFQG%2FBA8uLkAcAcICBxENCxkMDf6iAV4CBxENCxkMDf6iAV4CBxENCwABAGQAAASwBEwAMwAAARUiDgMVERQWHwEVITUyNjURIREUFjMVITUyPgM1ETQmLwE1IRUiBhURIRE0JiM1BLAEDiIaFjIZGf5wSxn%2BDBlL%2FnAEDiIaFjIZGQGQSxkB9BlLBEw4AQUKFA78iBYZAQI4OA0lAYr%2BdiUNODgBBQoUDgN4FhkBAjg4DSX%2BdgGKJQ04AAAABgAAAAAETARMAAwAHAAgACQAKAA0AAABITIWHQEjBTUnITchBSEyFhURFAYjISImNRE0NhcVITUBBTUlBRUhNQUVFAYjIQchJyE3MwKjAXcVHWn%2B2cj%2BcGQBd%2F4lASwpOzsp%2FtQpOzspASwCvP5wAZD8GAEsArwdFf6JZP6JZAGQyGkD6B0VlmJiyGTIOyn%2BDCk7OykB9Ck7ZMjI%2FveFo4XGyMhm%2BBUdZGTIAAEAEAAQBJ8EnwAmAAATNzYWHwEWBg8BHgEXNz4BHwEeAQ8BBiIuBicuBTcRohEuDosOBhF3ZvyNdxEzE8ATBxGjAw0uMUxPZWZ4O0p3RjITCwED76IRBhPCFDERdo78ZXYRBA6IDi8RogEECBUgNUNjO0qZfHNVQBAAAAACAAAAAASwBEwAIwBBAAAAMh4EHwEVFAYvAS4BPQEmIAcVFAYPAQYmPQE%2BBRIyHgIfARUBHgEdARQGIyEiJj0BNDY3ATU0PgIB%2FLimdWQ%2FLAkJHRTKFB2N%2FsKNHRTKFB0DDTE7ZnTKcFImFgEBAW0OFR0V%2B7QVHRUOAW0CFiYETBUhKCgiCgrIFRgDIgMiFZIYGJIVIgMiAxgVyAQNJyQrIP7kExwcCgoy%2FtEPMhTUFR0dFdQUMg8BLzIEDSEZAAADAAAAAASwBLAADQAdACcAAAEHIScRMxUzNTMVMzUzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYETMj9qMjIyMjIyPyuArwVHR0VDIn8SokMFR0dswRMFR37UB0CvMjIAfTIyMjI%2FOAdKh1kZB0qHf7UHRUyMhUdAAAAAwBkAAAEsARMAAkAEwAdAAABIyIGFREhETQmASMiBhURIRE0JgEhETQ2OwEyFhUCvGQpOwEsOwFnZCk7ASw7%2FRv%2B1DspZCk7BEw7KfwYA%2BgpO%2F7UOyn9RAK8KTv84AGQKTs7KQAAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQURByMRMwcRMxHIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkyMhkZARMsHz%2BDHywsHwB9HywyP1EArzIZP7UZGQBLGT%2B1GQB9GT%2B1AEsAAAABf%2BcAAAEsARMAA8AEwAfACUAKQAAEyEyFhURFAYjISImNRE0NhcRIREBIzUjFSMRMxUzNTMFEQcjETMHETMRyAK8fLCwfP1EfLCwGAOE%2FgxkZGRkZGQBkGTIyGRkBEywfP4MfLCwfAH0fLDI%2FUQCvP2oyMgB9MjIZP7UZAH0ZP7UASwABP%2BcAAAEsARMAA8AEwAbACMAABMhMhYVERQGIyEiJjURNDYXESERBSMRMxUhESEFIxEzFSERIcgCvHywsHz9RHywsBgDhP4MyMj%2B1AEsAZDIyP7UASwETLB8%2Fgx8sLB8AfR8sMj9RAK8yP7UZAH0ZP7UZAH0AAAABP%2BcAAAEsARMAA8AEwAWABkAABMhMhYVERQGIyEiJjURNDYXESERAS0BDQERyAK8fLCwfP1EfLCwGAOE%2Fgz%2B1AEsAZD%2B1ARMsHz%2BDHywsHwB9HywyP1EArz%2BDJaWlpYBLAAAAAX%2FnAAABLAETAAPABMAFwAgACkAABMhMhYVERQGIyEiJjURNDYXESERAyERIQcjIgYVFBY7AQERMzI2NTQmI8gCvHywsHz9RHywsBgDhGT9RAK8ZIImOTYpgv4Mgik2OSYETLB8%2Fgx8sLB8AfR8sMj9RAK8%2FagB9GRWQUFUASz%2B1FRBQVYAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkZMjIZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yGT%2B1GRkASz%2BDAGQZP4MZAAG%2F5wAAASwBEwADwATABkAHwAjACcAABMhMhYVERQGIyEiJjURNDYXESERBTMRIREzASMRIzUzBRUzNQEjNTPIArx8sLB8%2FUR8sLAYA4T9RMj%2B1GQCWGRkyP2oZAEsZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yP5wAfT%2BDAGQZMjIyP7UZAAF%2F5wAAASwBEwADwATABwAIgAmAAATITIWFREUBiMhIiY1ETQ2FxEhEQEHIzU3NSM1IQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMdkx8gBLAGQZGTIx2RkBEywfP4MfLCwfAH0fLDI%2FUQCvP5wyDLIlmT%2BDAGQZP4MZAAAAAMACQAJBKcEpwAPABsAJQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgchFSEVISc1NyEB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWz%2B1AEs%2FtRkZAEsBKdentvw255eXp7b8NueTHHC5MJxccLkwtDIZGTIZAAAAAAEAAkACQSnBKcADwAbACcAKwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcVBxcVIycjFSMRIQcVMzUB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWwyZGRklmQBLMjIBKdentvw255eXp7b8NueTHHC5MJxccLkwtBkMmQyZGQBkGRkZAAAAv%2Fy%2F50EwgRBACAANgAAATIWFzYzMhYUBisBNTQmIyEiBh0BIyImNTQ2NyY1ND4BEzMyFhURMzIWDwEGIi8BJjY7ARE0NgH3brUsLC54qqp4gB0V%2FtQVHd5QcFZBAmKqepYKD4kVCg3fDSYN3w0KFYkPBEF3YQ6t8a36FR0dFfpzT0VrDhMSZKpi%2FbMPCv7tFxD0EBD0EBcBEwoPAAAAAAL%2F8v%2BcBMMEQQAcADMAAAEyFhc2MzIWFxQGBwEmIgcBIyImNTQ2NyY1ND4BExcWBisBERQGKwEiJjURIyImNzY3NjIB9m62LCsueaoBeFr%2Bhg0lDf6DCU9xVkECYqnm3w0KFYkPCpYKD4kVCg3HGBMZBEF3YQ%2BteGOkHAFoEBD%2Bk3NPRWsOExNkqWP9kuQQF%2F7tCg8PCgETFxDMGBMAAAABAGQAAARMBG0AGAAAJTUhATMBMwkBMwEzASEVIyIGHQEhNTQmIwK8AZD%2B8qr%2B8qr%2B1P7Uqv7yqv7yAZAyFR0BkB0VZGQBLAEsAU3%2Bs%2F7U%2FtRkHRUyMhUdAAAAAAEAeQAABDcEmwAvAAABMhYXHgEVFAYHFhUUBiMiJxUyFh0BITU0NjM1BiMiJjU0Ny4BNTQ2MzIXNCY1NDYCWF6TGll7OzIJaUo3LRUd%2FtQdFS03SmkELzlpSgUSAqMEm3FZBoNaPWcfHRpKaR77HRUyMhUd%2Bx5pShIUFVg1SmkCAhAFdKMAAAAGACcAFASJBJwAEQAqAEIASgBiAHsAAAEWEgIHDgEiJicmAhI3PgEyFgUiBw4BBwYWHwEWMzI3Njc2Nz4BLwEmJyYXIgcOAQcGFh8BFjMyNz4BNz4BLwEmJyYWJiIGFBYyNjciBw4BBw4BHwEWFxYzMjc%2BATc2Ji8BJhciBwYHBgcOAR8BFhcWMzI3PgE3NiYvASYD8m9PT29T2dzZU29PT29T2dzZ%2Fj0EBHmxIgQNDCQDBBcGG0dGYAsNAwkDCwccBAVQdRgEDA0iBAQWBhJROQwMAwkDCwf5Y4xjY4xjVhYGElE6CwwDCQMLBwgEBVB1GAQNDCIEjRcGG0dGYAsNAwkDCwcIBAR5sSIEDQwkAwPyb%2F7V%2FtVvU1dXU28BKwErb1NXVxwBIrF5DBYDCQEWYEZHGwMVDCMNBgSRAhh1UA0WAwkBFTpREgMVCyMMBwT6Y2OMY2MVFTpREQQVCyMMBwQCGHVQDRYDCQEkFmBGRxsDFQwjDQYEASKxeQwWAwkBAAAABQBkAAAD6ASwAAwADwAWABwAIgAAASERIzUhFSERNDYzIQEjNQMzByczNTMDISImNREFFRQGKwECvAEstP6s%2FoQPCgI%2FASzIZKLU1KJktP51Cg8DhA8KwwMg%2FoTIyALzCg%2F%2B1Mj84NTUyP4MDwoBi8jDCg8AAAAABQBkAAAD6ASwAAkADAATABoAIQAAASERCQERNDYzIQEjNRMjFSM1IzcDISImPQEpARUUBisBNQK8ASz%2Bov3aDwoCPwEsyD6iZKLUqv6dCg8BfAIIDwqbAyD9%2BAFe%2FdoERwoP%2FtTI%2FHzIyNT%2BZA8KNzcKD1AAAAAAAwAAAAAEsAP0AAgAGQAfAAABIxUzFyERIzcFMzIeAhUhFSEDETM0PgIBMwMhASEEiqJkZP7UotT9EsgbGiEOASz9qMhkDiEaAnPw8PzgASwB9AMgyGQBLNTUBBErJGT%2BogHCJCsRBP5w%2FnAB9AAAAAMAAAAABEwETAAZADIAOQAAATMyFh0BMzIWHQEUBiMhIiY9ATQ2OwE1NDYFNTIWFREUBiMhIic3ARE0NjMVFBYzITI2AQc1IzUzNQKKZBUdMhUdHRX%2B1BUdHRUyHQFzKTs7Kf2oARP2%2Fro7KVg%2BASw%2BWP201MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7KfzgKTsE9gFGAUQpO5Y%2BWFj95tSiZKIAAwBkAAAEvARMABkANgA9AAABMzIWHQEzMhYdARQGIyEiJj0BNDY7ATU0NgU1MhYVESMRMxQOAiMhIiY1ETQ2MxUUFjMhMjYBBzUjNTM1AcJkFR0yFR0dFf7UFR0dFTIdAXMpO8jIDiEaG%2F2oKTs7KVg%2BASw%2BWAGc1MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7Kf4M%2FtQkKxEEOykDICk7lj5YWP3m1KJkogAAAAP%2FogAABRYE1AALABsAHwAACQEWBiMhIiY3ATYyEyMiBhcTHgE7ATI2NxM2JgMVMzUCkgJ9FyAs%2BwQsIBcCfRZARNAUGAQ6BCMUNhQjBDoEGODIBK37sCY3NyYEUCf%2BTB0U%2FtIUHR0UAS4UHf4MZGQAAAAACQAAAAAETARMAA8AHwAvAD8ATwBfAG8AfwCPAAABMzIWHQEUBisBIiY9ATQ2EzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBqfoKDw8K%2BgoPDwr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPDwRMDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg%2F%2B1A8KlgoPDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKDw8KlgoPAAAAAwAAAAAEsAUUABkAKQAzAAABMxUjFSEyFg8BBgchJi8BJjYzITUjNTM1MwEhMhYUBisBFyE3IyImNDYDITIWHQEhNTQ2ArxkZAFePjEcQiko%2FPwoKUIcMT4BXmRkyP4%2BArwVHR0VDIn8SooNFR0dswRMFR37UB0EsMhkTzeEUzMzU4Q3T2TIZPx8HSodZGQdKh3%2B1B0VMjIVHQAABAAAAAAEsAUUAAUAGQArADUAAAAyFhUjNAchFhUUByEyFg8BIScmNjMhJjU0AyEyFhQGKwEVBSElNSMiJjQ2AyEyFh0BITU0NgIwUDnCPAE6EgMBSCkHIq%2F9WrIiCikBSAOvArwVHR0VlgET%2FEoBE5YVHR2zBEwVHftQHQUUOykpjSUmCBEhFpGRFiERCCb%2BlR0qHcjIyMgdKh39qB0VMjIVHQAEAAAAAASwBJ0ABwAUACQALgAAADIWFAYiJjQTMzIWFRQXITY1NDYzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYCDZZqapZqty4iKyf%2BvCcrI%2F7NArwVHR0VDYr8SokMFR0dswRMFR37UB0EnWqWamqW%2Fus5Okxra0w6Of5yHSodZGQdKh3%2B1B0VMjIVHQAEAAAAAASwBRQADwAcACwANgAAATIeARUUBiImNTQ3FzcnNhMzMhYVFBchNjU0NjMBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYL1szb5xvIpBvoyIfLiIrJ%2F68Jysj%2Fs0CvBUdHRUNivxKiQwVHR2zBEwVHftQHQUUa4s2Tm9vTj5Rj2%2BjGv4KOTpMa2tMOjn%2Bch0qHWRkHSod%2FtQdFTIyFR0AAAADAAAAAASwBRIAEgAiACwAAAEFFSEUHgMXIS4BNTQ%2BAjcBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYASz%2B1CU%2FP00T%2Fe48PUJtj0r%2BogK8FR0dFQ2K%2FEqJDBUdHbMETBUd%2B1AdBLChizlmUT9IGVO9VFShdksE%2FH4dKh1kZB0qHf7UHRUyMhUdAAIAyAAAA%2BgFFAAPACkAAAAyFh0BHgEdASE1NDY3NTQDITIWFyMVMxUjFTMVIxUzFAYjISImNRE0NgIvUjsuNv5wNi5kAZA2XBqsyMjIyMh1U%2F5wU3V1BRQ7KU4aXDYyMjZcGk4p%2Fkc2LmRkZGRkU3V1UwGQU3UAAAMAZP%2F%2FBEwETAAPAC8AMwAAEyEyFhURFAYjISImNRE0NgMhMhYdARQGIyEXFhQGIi8BIQcGIiY0PwEhIiY9ATQ2BQchJ5YDhBUdHRX8fBUdHQQDtgoPDwr%2B5eANGiUNWP30Vw0mGg3g%2Ft8KDw8BqmQBRGQETB0V%2FgwVHR0VAfQVHf1EDwoyCg%2FgDSUbDVhYDRslDeAPCjIKD2RkZAAAAAAEAAAAAASwBEwAGQAjAC0ANwAAEyEyFh0BIzQmKwEiBhUjNCYrASIGFSM1NDYDITIWFREhETQ2ExUUBisBIiY9ASEVFAYrASImPQHIAyBTdWQ7KfopO2Q7KfopO2R1EQPoKTv7UDvxHRVkFR0D6B0VZBUdBEx1U8gpOzspKTs7KchTdf4MOyn%2B1AEsKTv%2BDDIVHR0VMjIVHR0VMgADAAEAAASpBKwADQARABsAAAkBFhQPASEBJjQ3ATYyCQMDITIWHQEhNTQ2AeACqh8fg%2F4f%2FfsgIAEnH1n%2BrAFWAS%2F%2Bq6IDIBUd%2FHwdBI39VR9ZH4MCBh9ZHwEoH%2F5u%2FqoBMAFV%2FBsdFTIyFR0AAAAAAgCPAAAEIQSwABcALwAAAQMuASMhIgYHAwYWMyEVFBYyNj0BMzI2AyE1NDY7ATU0NjsBETMRMzIWHQEzMhYVBCG9CCcV%2FnAVJwi9CBMVAnEdKh19FROo%2Fa0dFTIdFTDILxUdMhUdAocB%2BhMcHBP%2BBhMclhUdHRWWHP2MMhUdMhUdASz%2B1B0VMh0VAAAEAAAAAASwBLAADQAQAB8AIgAAASERFAYjIREBNTQ2MyEBIzUBIREUBiMhIiY1ETQ2MyEBIzUDhAEsDwr%2Bif7UDwoBdwEsyP2oASwPCv12Cg8PCgF3ASzIAyD9wQoPAk8BLFQKD%2F7UyP4M%2FcEKDw8KA7YKD%2F7UyAAC%2F5wAZAUUBEcARgBWAAABMzIeAhcWFxY2NzYnJjc%2BARYXFgcOASsBDgEPAQ4BKwEiJj8BBisBIicHDgErASImPwEmLwEuAT0BNDY7ATY3JyY2OwE2BSMiBh0BFBY7ATI2PQE0JgHkw0uOakkMEhEfQwoKGRMKBQ8XDCkCA1Y9Pgc4HCcDIhVkFRgDDDEqwxgpCwMiFWQVGAMaVCyfExwdFXwLLW8QBxXLdAFF%2BgoPDwr6Cg8PBEdBa4pJDgYKISAiJRsQCAYIDCw9P1c3fCbqFB0dFEYOCEAUHR0UnUplNQcmFTIVHVdPXw4TZV8PCjIKDw8KMgoPAAb%2FnP%2FmBRQEfgAJACQANAA8AFIAYgAAASU2Fh8BFgYPASUzMhYfASEyFh0BFAYHBQYmJyYjISImPQE0NhcjIgYdARQ7ATI2NTQmJyYEIgYUFjI2NAE3PgEeARceAT8BFxYGDwEGJi8BJjYlBwYfAR4BPwE2Jy4BJy4BAoEBpxMuDiAOAxCL%2FCtqQ0geZgM3FR0cE%2F0fFyIJKjr%2B1D5YWLlQExIqhhALIAsSAYBALS1ALf4PmBIgHhMQHC0aPzANITNQL3wpgigJASlmHyElDR0RPRMFAhQHCxADhPcICxAmDyoNeMgiNtQdFTIVJgeEBBQPQ1g%2ByD5YrBwVODMQEAtEERzJLUAtLUD%2B24ITChESEyMgAwWzPUkrRSgJL5cvfRxYGyYrDwkLNRAhFEgJDAQAAAAAAwBkAAAEOQSwAFEAYABvAAABMzIWHQEeARcWDgIPATIeBRUUDgUjFRQGKwEiJj0BIxUUBisBIiY9ASMiJj0BNDY7AREjIiY9ATQ2OwE1NDY7ATIWHQEzNTQ2AxUhMj4CNTc0LgMjARUhMj4CNTc0LgMjAnGWCg9PaAEBIC4uEBEGEjQwOiodFyI2LUAjGg8KlgoPZA8KlgoPrwoPDwpLSwoPDwqvDwqWCg9kD9cBBxwpEwsBAQsTKRz%2B%2BQFrHCkTCwEBCxMpHASwDwptIW1KLk0tHwYGAw8UKDJOLTtdPCoVCwJLCg8PCktLCg8PCksPCpYKDwJYDwqWCg9LCg8PCktLCg%2F%2B1MgVHR0LCgQOIhoW%2FnDIFR0dCwoEDiIaFgAAAwAEAAIEsASuABcAKQAsAAATITIWFREUBg8BDgEjISImJy4CNRE0NgQiDgQPARchNy4FAyMT1AMMVnokEhIdgVL9xFKCHAgYKHoCIIx9VkcrHQYGnAIwnAIIIClJVSGdwwSuelb%2BYDO3QkJXd3ZYHFrFMwGgVnqZFyYtLSUMDPPzBQ8sKDEj%2FsIBBQACAMgAAAOEBRQADwAZAAABMzIWFREUBiMhIiY1ETQ2ARUUBisBIiY9AQHblmesVCn%2BPilUrAFINhWWFTYFFKxn%2FgwpVFQpAfRnrPwY4RU2NhXhAAACAMgAAAOEBRQADwAZAAABMxQWMxEUBiMhIiY1ETQ2ARUUBisBIiY9AQHbYLOWVCn%2BPilUrAFINhWWFTYFFJaz%2FkIpVFQpAfRnrPwY4RU2NhXhAAACAAAAFAUOBBoAFAAaAAAJASUHFRcVJwc1NzU0Jj4CPwEnCQEFJTUFJQUO%2FYL%2Bhk5klpZkAQEBBQQvkwKCAVz%2Bov6iAV4BXgL%2F%2FuWqPOCWx5SVyJb6BA0GCgYDKEEBG%2F1ipqaTpaUAAAMAZAH0BLADIAAHAA8AFwAAEjIWFAYiJjQkMhYUBiImNCQyFhQGIiY0vHxYWHxYAeh8WFh8WAHofFhYfFgDIFh8WFh8WFh8WFh8WFh8WFh8AAAAAAMBkAAAArwETAAHAA8AFwAAADIWFAYiJjQSMhYUBiImNBIyFhQGIiY0Aeh8WFh8WFh8WFh8WFh8WFh8WARMWHxYWHz%2ByFh8WFh8%2FshYfFhYfAAAAAMAZABkBEwETAAPAB8ALwAAEyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2fQO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PBEwPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoPAAAABAAAAAAEsASwAA8AHwAvADMAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFhURFAYjISImNRE0NhcVITUBXgH0ory7o%2F4Mpbm5Asv9qCk7OykCWCk7O%2F2xAfQVHR0V%2FgwVHR1HAZAEsLuj%2FgylubmlAfSlucg7Kf2oKTs7KQJYKTtkHRX%2B1BUdHRUBLBUdZMjIAAAAAAEAZABkBLAETAA7AAATITIWFAYrARUzMhYUBisBFTMyFhQGKwEVMzIWFAYjISImNDY7ATUjIiY0NjsBNSMiJjQ2OwE1IyImNDaWA%2BgVHR0VMjIVHR0VMjIVHR0VMjIVHR0V%2FBgVHR0VMjIVHR0VMjIVHR0VMjIVHR0ETB0qHcgdKh3IHSodyB0qHR0qHcgdKh3IHSodyB0qHQAAAAYBLAAFA%2BgEowAHAA0AEwAZAB8AKgAAAR4BBgcuATYBMhYVIiYlFAYjNDYBMhYVIiYlFAYjNDYDFRQGIiY9ARYzMgKKVz8%2FV1c%2FP%2F75fLB8sAK8sHyw%2FcB8sHywArywfLCwHSodKAMRBKNDsrJCQrKy%2FsCwfLB8fLB8sP7UsHywfHywfLD%2B05AVHR0VjgQAAAH%2FtQDIBJQDgQBCAAABNzYXAR4BBw4BKwEyFRQOBCsBIhE0NyYiBxYVECsBIi4DNTQzIyImJyY2NwE2HwEeAQ4BLwEHIScHBi4BNgLpRRkUASoLCAYFGg8IAQQNGyc%2FKZK4ChRUFQu4jjBJJxkHAgcPGQYGCAsBKhQaTBQVCiMUM7YDe7YsFCMKFgNuEwYS%2FtkLHw8OEw0dNkY4MhwBIBgXBAQYF%2F7gKjxTQyMNEw4PHwoBKBIHEwUjKBYGDMHBDAUWKCMAAAAAAgAAAAAEsASwACUAQwAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjNC4DKwERFBYXMxUjNTI1ESMiDgMVIzUhBLAyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj9RBkIChgQEWQZDQzIMmQREBgKCBkB9AOEFSAVDggDAfyuFhkBAmRkAQUJFQ4DUgEDCA4VIBUBLP0SDxMKBQH%2BVwsNATIyGQGpAQUKEw%2BWAAAAAAMAAAAABEwErgAdACAAMAAAATUiJy4BLwEBIwEGBw4BDwEVITUiJj8BIRcWBiMVARsBARUUBiMhIiY9ATQ2MyEyFgPoGR4OFgUE%2Ft9F%2FtQSFQkfCwsBETE7EkUBJT0NISf%2B7IZ5AbEdFfwYFR0dFQPoFR0BLDIgDiIKCwLr%2FQ4jFQkTBQUyMisusKYiQTIBhwFW%2Fqr942QVHR0VZBUdHQADAAAAAASwBLAADwBHAEoAABMhMhYVERQGIyEiJjURNDYFIyIHAQYHBgcGHQEUFjMhMjY9ATQmIyInJj8BIRcWBwYjIgYdARQWMyEyNj0BNCYnIicmJyMBJhMjEzIETBUdHRX7tBUdHQJGRg0F%2FtUREhImDAsJAREIDAwINxAKCj8BCjkLEQwYCAwMCAE5CAwLCBEZGQ8B%2FuAFDsVnBLAdFfu0FR0dFQRMFR1SDP0PIBMSEAUNMggMDAgyCAwXDhmjmR8YEQwIMggMDAgyBwwBGRskAuwM%2FgUBCAAABAAAAAAEsASwAAMAEwAjACcAAAEhNSEFITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NhcRIREEsPtQBLD7ggGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHUcBLARMZMgdFfx8FR0dFQOEFR0dFf5wFR0dFQGQFR1k%2FtQBLAAEAAAAAASwBLAADwAfACMAJwAAEyEyFhURFAYjISImNRE0NgEhMhYVERQGIyEiJjURNDYXESEREyE1ITIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR1HASzI%2B1AEsASwHRX8fBUdHRUDhBUd%2FgwdFf5wFR0dFQGQFR1k%2FtQBLP2oZAAAAAACAAAAZASwA%2BgAJwArAAATITIWFREzNTQ2MyEyFh0BMxUjFRQGIyEiJj0BIxEUBiMhIiY1ETQ2AREhETIBkBUdZB0VAZAVHWRkHRX%2BcBUdZB0V%2FnAVHR0CnwEsA%2BgdFf6ilhUdHRWWZJYVHR0Vlv6iFR0dFQMgFR3%2B1P7UASwAAAQAAAAABLAEsAADABMAFwAnAAAzIxEzFyEyFhURFAYjISImNRE0NhcRIREBITIWFREUBiMhIiY1ETQ2ZGRklgGQFR0dFf5wFR0dRwEs%2FqIDhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAAAAgBkAAAETASwACcAKwAAATMyFhURFAYrARUhMhYVERQGIyEiJjURNDYzITUjIiY1ETQ2OwE1MwcRIRECWJYVHR0VlgHCFR0dFfx8FR0dFQFelhUdHRWWZMgBLARMHRX%2BcBUdZB0V%2FnAVHR0VAZAVHWQdFQGQFR1kyP7UASwAAAAEAAAAAASwBLAAAwATABcAJwAAISMRMwUhMhYVERQGIyEiJjURNDYXESERASEyFhURFAYjISImNRE0NgSwZGT9dgGQFR0dFf5wFR0dRwEs%2FK4DhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAEBLAAwA28EgAAPAAAJAQYjIiY1ETQ2MzIXARYUA2H%2BEhcSDhAQDhIXAe4OAjX%2BEhcbGQPoGRsX%2FhIOKgAAAAABAUEAMgOEBH4ACwAACQE2FhURFAYnASY0AU8B7h0qKh3%2BEg4CewHuHREp%2FBgpER0B7g4qAAAAAAEAMgFBBH4DhAALAAATITIWBwEGIicBJjZkA%2BgpER3%2BEg4qDv4SHREDhCod%2FhIODgHuHSoAAAAAAQAyASwEfgNvAAsAAAkBFgYjISImNwE2MgJ7Ae4dESn8GCkRHQHuDioDYf4SHSoqHQHuDgAAAAACAAgAAASwBCgABgAKAAABFQE1LQE1ASE1IQK8%2FUwBnf5jBKj84AMgAuW2%2Fr3dwcHd%2B9jIAAAAAAIAAABkBLAEsAALADEAAAEjFTMVIREzNSM1IQEzND4FOwERFAYPARUhNSIuAzURMzIeBRUzESEEsMjI%2FtTIyAEs%2B1AyCAsZEyYYGWQyGRkBkAQOIhoWZBkYJhMZCwgy%2FOADhGRkASxkZP4MFSAVDggDAf3aFhkBAmRkAQUJFQ4CJgEDCA4VIBUBLAAAAgAAAAAETAPoACUAMQAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjFTMVIREzNSM1IQMgMggLGRMmGBlkMhkZ%2FnAEDiIaFmQZGCYTGQsIMgMgASzIyP7UyMgBLAK8FSAVDggDAf3aFhkCAWRkAQUJFQ4CJgEDCA4VIBUBLPzgZGQBLGRkAAABAMgAZgNyBEoAEgAAATMyFgcJARYGKwEiJwEmNDcBNgK9oBAKDP4wAdAMChCgDQr%2BKQcHAdcKBEoWDP4w%2FjAMFgkB1wgUCAHXCQAAAQE%2BAGYD6ARKABIAAAEzMhcBFhQHAQYrASImNwkBJjYBU6ANCgHXBwf%2BKQoNoBAKDAHQ%2FjAMCgRKCf4pCBQI%2FikJFgwB0AHQDBYAAAEAZgDIBEoDcgASAAAAFh0BFAcBBiInASY9ATQ2FwkBBDQWCf4pCBQI%2FikJFgwB0AHQA3cKEKANCv4pBwcB1woNoBAKDP4wAdAAAAABAGYBPgRKA%2BgAEgAACQEWHQEUBicJAQYmPQE0NwE2MgJqAdcJFgz%2BMP4wDBYJAdcIFAPh%2FikKDaAQCgwB0P4wDAoQoA0KAdcHAAAAAgDZ%2F%2FkEPQSwAAUAOgAAARQGIzQ2BTMyFh8BNjc%2BAh4EBgcOBgcGIiYjIgYiJy4DLwEuAT4EHgEXJyY2A%2BiwfLD%2BVmQVJgdPBQsiKFAzRyorDwURAQQSFyozTSwNOkkLDkc3EDlfNyYHBw8GDyUqPjdGMR%2BTDA0EsHywfLDIHBPCAQIGBwcFDx81S21DBxlLR1xKQhEFBQcHGWt0bCQjP2hJNyATBwMGBcASGAAAAAACAMgAFQOEBLAAFgAaAAATITIWFREUBisBEQcGJjURIyImNRE0NhcVITX6AlgVHR0Vlv8TGpYVHR2rASwEsB0V%2FnAVHf4MsgkQFQKKHRUBkBUdZGRkAAAAAgDIABkETASwAA4AEgAAEyEyFhURBRElIREjETQ2ARU3NfoC7ic9%2FUQCWP1EZB8BDWQEsFEs%2FFt1A7Z9%2FBgEARc0%2FV1kFGQAAQAAAAECTW%2FDBF9fDzz1AB8EsAAAAADQdnOXAAAAANB2c5f%2FUf%2BcBdwFFAAAAAgAAgAAAAAAAAABAAAFFP%2BFAAAFFP9R%2FtQF3AABAAAAAAAAAAAAAAAAAAAAowG4ACgAAAAAAZAAAASwAAAEsABkBLAAAASwAAAEsABwAooAAAUUAAACigAABRQAAAGxAAABRQAAANgAAADYAAAAogAAAQQAAABIAAABBAAAAUUAAASwAGQEsAB7BLAAyASwAMgB9AAABLD%2F8gSwAAAEsAAABLD%2F8ASwAAAEsAAOBLAACQSwAGQEsP%2FTBLD%2F0wSwAAAEsAAABLAAAASwAAAEsAAABLAAJgSwAG4EsAAXBLAAFwSwABcEsABkBLAAGgSwAGQEsAAMBLAAZASwABcEsP%2BcBLAAZASwABcEsAAXBLAAAASwABcEsAAXBLAAFwSwAGQEsAAABLAAZASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAZASwAMgEsAAABLAAAASwADUEsABkBLAAyASw%2F7UEsAAhBLAAAASwAAAEsAAABLAAAASwAAAEsP%2BcBLAAAASwAAAEsAAABLAA2wSwABcEsAB1BLAAAASwAAAEsAAABLAACgSwAMgEsAAABLAAnQSwAMgEsADIBLAAyASwAAAEsP%2F%2BBLABLASwAGQEsACIBLABOwSwABcEsAAXBLAAFwSwABcEsAAXBLAAFwSwAAAEsAAXBLAAFwSwABcEsAAXBLAAAASwALcEsAC3BLAAAASwAAAEsABJBLAAFwSwAAAEsAAABLAAXQSw%2F9wEsP%2FcBLD%2FnwSwAGQEsAAABLAAAASwAAAEsABkBLD%2F%2FwSwAAAEsP9RBLAABgSwAAAEsAAABLABRQSwAAEEsAAABLD%2FnASwAEoEsAAUBLAAAASwAAAEsAAABLD%2FnASwAGEEsP%2F9BLAAFgSwABYEsAAWBLAAFgSwABgEsAAABMQAAASwAGQAAAAAAAD%2F2ABkADkAyAAAAScAZAAZABkAGQAZABkAGQAZAAAAAAAAAAAAAADZAAAAAAAOAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAMAZABkAAAAEAAAAAAAZP%2Bc%2F5z%2FnP%2Bc%2F5z%2FnP%2Bc%2F5wACQAJ%2F%2FL%2F8gBkAHkAJwBkAGQAAAAAAGT%2FogAAAAAAAAAAAAAAAADIAGQAAAABAI8AAP%2Bc%2F5wAZAAEAMgAyAAAAGQBkABkAAAAZAEs%2F7UAAAAAAAAAAAAAAAAAAABkAAABLAFBADIAMgAIAAAAAADIAT4AZgBmANkAyADIAAAAKgAqACoAKgCyAOgA6AFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BpAIGAiICfgKGAqwC5ANGA24DjAPEBAgEMgRiBKIE3AVcBboGcgb0ByAHYgfKCB4IYgi%2BCTYJhAm2Cd4KKApMCpQK4gswC4oLygwIDFgNKg1eDbAODg5oDrQPKA%2BmD%2BYQEhBUEJAQqhEqEXYRthIKEjgSfBLAExoTdBPQFCoU1BU8FagVzBYEFjYWYBawFv4XUhemGAIYLhhqGJYYsBjgGP4ZKBloGZQZxBnaGe4aNhpoGrga9hteG7QcMhyUHOIdHB1EHWwdlB28HeYeLh52HsAfYh%2FSIEYgviEyIXYhuCJAIpYiuCMOIyIjOCN6I8Ij4CQCJDAkXiSWJOIlNCVgJbwmFCZ%2BJuYnUCe8J%2FgoNChwKKwpoCnMKiYqSiqEKworeiwILGgsuizsLRwtiC30LiguZi6iLtgvDi9GL34vsi%2F4MD4whDDSMRIxYDGuMegyJDJeMpoy3jMiMz4zaDO2NBg0YDSoNNI1LDWeNeg2PjZ8Ntw3GjdON5I31DgQOEI4hjjIOQo5SjmIOcw6HDpsOpo63jugO9w8GDxQPKI8%2BD0yPew%2BOj6MPtQ%2FKD9uP6o%2F%2BkBIQIBAxkECQX5CGEKoQu5DGENCQ3ZDoEPKRBBEYESuRPZFWkW2RgZGdEa0RvZHNkd2R7ZH9kgWSDJITkhqSIZIzEkSSThJXkmESapKAkouSlIAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAAAAABAAxgABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA%2FgADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB%2BgADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACkgADAAEECdkDABoCwnd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQA0ACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAOQA7AFAAUwAgADAAMAAxAC4AMAAwADkAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABPAGMAdAAgADIAOQAgADAANgA6ADMANgA6ADAANwAgADIAMAAxADQARgBvAG4AdAAgAFMAcQB1AGkAcgByAGUAbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABFwAAAQIBAwADAA0ADgEEAJYBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMA7wEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE%2BAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG%2FAcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB%2BgH7AfwB%2FQH%2BAf8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgZnbHlwaDEGZ2x5cGgyB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTIwQkQHdW5pMjMxQgd1bmkyNUZDB3VuaTI2MDEHdW5pMjZGQQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMAd1bmlFMjAxB3VuaUUyMDIHdW5pRTIwMwd1bmlFMjA0B3VuaUUyMDUHdW5pRTIwNgd1bmlFMjA5B3VuaUUyMTAHdW5pRTIxMQd1bmlFMjEyB3VuaUUyMTMHdW5pRTIxNAd1bmlFMjE1B3VuaUUyMTYHdW5pRTIxOAd1bmlFMjE5B3VuaUUyMjEHdW5pRTIyMwd1bmlFMjI0B3VuaUUyMjUHdW5pRTIyNgd1bmlFMjI3B3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTIzNAd1bmlFMjM1B3VuaUUyMzYHdW5pRTIzNwd1bmlFMjM4B3VuaUUyMzkHdW5pRTI0MAd1bmlFMjQxB3VuaUUyNDIHdW5pRTI0Mwd1bmlFMjQ0B3VuaUUyNDUHdW5pRTI0Ngd1bmlFMjQ3B3VuaUUyNDgHdW5pRTI0OQd1bmlFMjUwB3VuaUUyNTEHdW5pRTI1Mgd1bmlFMjUzB3VuaUUyNTQHdW5pRTI1NQd1bmlFMjU2B3VuaUUyNTcHdW5pRTI1OAd1bmlFMjU5B3VuaUUyNjAHdW5pRjhGRgZ1MUY1MTEGdTFGNkFBAAAAAAFUUMMXAAA%3D%29%20format%28%27truetype%27%29%2Curl%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI%2FPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE%2BPC9tZXRhZGF0YT4KPGRlZnM%2BCjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA%2BCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIGhvcml6LWFkdi14PSIwIiAvPgo8Z2x5cGggaG9yaXotYWR2LXg9IjQwMCIgLz4KPGdseXBoIHVuaWNvZGU9IiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSIqIiBkPSJNNjAwIDExMDBxMTUgMCAzNCAtMS41dDMwIC0zLjVsMTEgLTFxMTAgLTIgMTcuNSAtMTAuNXQ3LjUgLTE4LjV2LTIyNGwxNTggMTU4cTcgNyAxOCA4dDE5IC02bDEwNiAtMTA2cTcgLTggNiAtMTl0LTggLTE4bC0xNTggLTE1OGgyMjRxMTAgMCAxOC41IC03LjV0MTAuNSAtMTcuNXE2IC00MSA2IC03NXEwIC0xNSAtMS41IC0zNHQtMy41IC0zMGwtMSAtMTFxLTIgLTEwIC0xMC41IC0xNy41dC0xOC41IC03LjVoLTIyNGwxNTggLTE1OCBxNyAtNyA4IC0xOHQtNiAtMTlsLTEwNiAtMTA2cS04IC03IC0xOSAtNnQtMTggOGwtMTU4IDE1OHYtMjI0cTAgLTEwIC03LjUgLTE4LjV0LTE3LjUgLTEwLjVxLTQxIC02IC03NSAtNnEtMTUgMCAtMzQgMS41dC0zMCAzLjVsLTExIDFxLTEwIDIgLTE3LjUgMTAuNXQtNy41IDE4LjV2MjI0bC0xNTggLTE1OHEtNyAtNyAtMTggLTh0LTE5IDZsLTEwNiAxMDZxLTcgOCAtNiAxOXQ4IDE4bDE1OCAxNThoLTIyNHEtMTAgMCAtMTguNSA3LjUgdC0xMC41IDE3LjVxLTYgNDEgLTYgNzVxMCAxNSAxLjUgMzR0My41IDMwbDEgMTFxMiAxMCAxMC41IDE3LjV0MTguNSA3LjVoMjI0bC0xNTggMTU4cS03IDcgLTggMTh0NiAxOWwxMDYgMTA2cTggNyAxOSA2dDE4IC04bDE1OCAtMTU4djIyNHEwIDEwIDcuNSAxOC41dDE3LjUgMTAuNXE0MSA2IDc1IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzUwaDM1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zNTB2LTM1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzNTBoLTM1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNSBoMzUwdjM1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTA7IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTU7IiBkPSJNODI1IDExMDBoMjUwcTEwIDAgMTIuNSAtNXQtNS41IC0xM2wtMzY0IC0zNjRxLTYgLTYgLTExIC0xOGgyNjhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTEwMGgyNzVxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTE3NHEwIC0xMSAtNy41IC0xOC41dC0xOC41IC03LjVoLTE0OHEtMTEgMCAtMTguNSA3LjV0LTcuNSAxOC41djE3NCBoLTI3NXEtMTAgMCAtMTMgNnQzIDE0bDEyMCAxNjBxNiA4IDE4IDE0dDIyIDZoMTI1djEwMGgtMjc1cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMThxLTUgMTIgLTExIDE4bC0zNjQgMzY0cS04IDggLTUuNSAxM3QxMi41IDVoMjUwcTI1IDAgNDMgLTE4bDE2NCAtMTY0cTggLTggMTggLTh0MTggOGwxNjQgMTY0cTE4IDE4IDQzIDE4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzAwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzMyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI1IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTYiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNSIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNNzQ0IDExOThxMjQyIDAgMzU0IC0xODlxNjAgLTEwNCA2NiAtMjA5aC0xODFxMCA0NSAtMTcuNSA4Mi41dC00My41IDYxLjV0LTU4IDQwLjV0LTYwLjUgMjR0LTUxLjUgNy41cS0xOSAwIC00MC41IC01LjV0LTQ5LjUgLTIwLjV0LTUzIC0zOHQtNDkgLTYyLjV0LTM5IC04OS41aDM3OWwtMTAwIC0xMDBoLTMwMHEtNiAtNTAgLTYgLTEwMGg0MDZsLTEwMCAtMTAwaC0zMDBxOSAtNzQgMzMgLTEzMnQ1Mi41IC05MXQ2MS41IC01NC41dDU5IC0yOSB0NDcgLTcuNXEyMiAwIDUwLjUgNy41dDYwLjUgMjQuNXQ1OCA0MXQ0My41IDYxdDE3LjUgODBoMTc0cS0zMCAtMTcxIC0xMjggLTI3OHEtMTA3IC0xMTcgLTI3NCAtMTE3cS0yMDYgMCAtMzI0IDE1OHEtMzYgNDggLTY5IDEzM3QtNDUgMjA0aC0yMTdsMTAwIDEwMGgxMTJxMSA0NyA2IDEwMGgtMjE4bDEwMCAxMDBoMTM0cTIwIDg3IDUxIDE1My41dDYyIDEwMy41cTExNyAxNDEgMjk3IDE0MXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMGJkOyIgZD0iTTQyOCAxMjAwaDM1MHE2NyAwIDEyMCAtMTN0ODYgLTMxdDU3IC00OS41dDM1IC01Ni41dDE3IC02NC41dDYuNSAtNjAuNXQwLjUgLTU3di0xNi41di0xNi41cTAgLTM2IC0wLjUgLTU3dC02LjUgLTYxdC0xNyAtNjV0LTM1IC01N3QtNTcgLTUwLjV0LTg2IC0zMS41dC0xMjAgLTEzaC0xNzhsLTIgLTEwMGgyODhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMzh2LTE3NXEwIC0xMSAtNS41IC0xOCB0LTE1LjUgLTdoLTE0OXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE3NWgtMjY3cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMTd2MTAwaC0yNjdxLTEwIDAgLTEzIDZ0MyAxNGwxMjAgMTYwcTYgOCAxOCAxNHQyMiA2aDExN3Y0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNjAwIDEwMDB2LTMwMGgyMDNxNjQgMCA4Ni41IDMzdDIyLjUgMTE5cTAgODQgLTIyLjUgMTE2dC04Ni41IDMyaC0yMDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjIxMjsiIGQ9Ik0yNTAgNzAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjMxYjsiIGQ9Ik0xMDAwIDEyMDB2LTE1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTEwMHEwIC05MSAtNDkuNSAtMTY1LjV0LTEzMC41IC0xMDkuNXE4MSAtMzUgMTMwLjUgLTEwOS41dDQ5LjUgLTE2NS41di0xNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtODAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MTUwcTAgOTEgNDkuNSAxNjUuNXQxMzAuNSAxMDkuNXEtODEgMzUgLTEzMC41IDEwOS41IHQtNDkuNSAxNjUuNXYxMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxNTBoODAwek00MDAgMTAwMHYtMTAwcTAgLTYwIDMyLjUgLTEwOS41dDg3LjUgLTczLjVxMjggLTEyIDQ0IC0zN3QxNiAtNTV0LTE2IC01NXQtNDQgLTM3cS01NSAtMjQgLTg3LjUgLTczLjV0LTMyLjUgLTEwOS41di0xNTBoNDAwdjE1MHEwIDYwIC0zMi41IDEwOS41dC04Ny41IDczLjVxLTI4IDEyIC00NCAzN3QtMTYgNTV0MTYgNTV0NDQgMzcgcTU1IDI0IDg3LjUgNzMuNXQzMi41IDEwOS41djEwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI1ZmM7IiBob3Jpei1hZHYteD0iNTAwIiBkPSJNMCAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI2MDE7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA2LjVxMCAtMTIxIC04NSAtMjA3LjV0LTIwNSAtODYuNWgtNzUwcS03OSAwIC0xMzUuNSA1N3QtNTYuNSAxMzdxMCA2OSA0Mi41IDEyMi41dDEwOC41IDY3LjVxLTIgMTIgLTIgMzdxMCAxNTMgMTA4IDI2MC41dDI2MCAxMDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNmZhOyIgZD0iTTc3NCAxMTkzLjVxMTYgLTkuNSAyMC41IC0yN3QtNS41IC0zMy41bC0xMzYgLTE4N2w0NjcgLTc0NmgzMHEyMCAwIDM1IC0xOC41dDE1IC0zOS41di00MmgtMTIwMHY0MnEwIDIxIDE1IDM5LjV0MzUgMTguNWgzMGw0NjggNzQ2bC0xMzUgMTgzcS0xMCAxNiAtNS41IDM0dDIwLjUgMjh0MzQgNS41dDI4IC0yMC41bDExMSAtMTQ4bDExMiAxNTBxOSAxNiAyNyAyMC41dDM0IC01ek02MDAgMjAwaDM3N2wtMTgyIDExMmwtMTk1IDUzNHYtNjQ2eiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTI1IDExMDBoMTE1MHExMCAwIDEyLjUgLTV0LTUuNSAtMTNsLTU2NCAtNTY3cS04IC04IC0xOCAtOHQtMTggOGwtNTY0IDU2N3EtOCA4IC01LjUgMTN0MTIuNSA1ek0xOCA4ODJsMjY0IC0yNjRxOCAtOCA4IC0xOHQtOCAtMThsLTI2NCAtMjY0cS04IC04IC0xMyAtNS41dC01IDEyLjV2NTUwcTAgMTAgNSAxMi41dDEzIC01LjV6TTkxOCA2MThsMjY0IDI2NHE4IDggMTMgNS41dDUgLTEyLjV2LTU1MHEwIC0xMCAtNSAtMTIuNXQtMTMgNS41IGwtMjY0IDI2NHEtOCA4IC04IDE4dDggMTh6TTgxOCA0ODJsMzY0IC0zNjRxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xMTUwcS0xMCAwIC0xMi41IDV0NS41IDEzbDM2NCAzNjRxOCA4IDE4IDh0MTggLThsMTY0IC0xNjRxOCAtOCAxOCAtOHQxOCA4bDE2NCAxNjRxOCA4IDE4IDh0MTggLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0xMDExIDEyMTBxMTkgMCAzMyAtMTNsMTUzIC0xNTNxMTMgLTE0IDEzIC0zM3QtMTMgLTMzbC05OSAtOTJsLTIxNCAyMTRsOTUgOTZxMTMgMTQgMzIgMTR6TTEwMTMgODAwbC02MTUgLTYxNGwtMjE0IDIxNGw2MTQgNjE0ek0zMTcgOTZsLTMzMyAtMTEybDExMCAzMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik03MDAgNjUwdi01NTBoMjUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtODAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyNTB2NTUwbC01MDAgNTUwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMjsiIGQ9Ik0zNjggMTAxN2w2NDUgMTYzcTM5IDE1IDYzIDB0MjQgLTQ5di04MzFxMCAtNTUgLTQxLjUgLTk1LjV0LTExMS41IC02My41cS03OSAtMjUgLTE0NyAtNC41dC04NiA3NXQyNS41IDExMS41dDEyMi41IDgycTcyIDI0IDEzOCA4djUyMWwtNjAwIC0xNTV2LTYwNnEwIC00MiAtNDQgLTkwdC0xMDkgLTY5cS03OSAtMjYgLTE0NyAtNS41dC04NiA3NS41dDI1LjUgMTExLjV0MTIyLjUgODIuNXE3MiAyNCAxMzggN3Y2MzlxMCAzOCAxNC41IDU5IHQ1My41IDM0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNNTAwIDExOTFxMTAwIDAgMTkxIC0zOXQxNTYuNSAtMTA0LjV0MTA0LjUgLTE1Ni41dDM5IC0xOTFsLTEgLTJsMSAtNXEwIC0xNDEgLTc4IC0yNjJsMjc1IC0yNzRxMjMgLTI2IDIyLjUgLTQ0LjV0LTIyLjUgLTQyLjVsLTU5IC01OHEtMjYgLTIwIC00Ni41IC0yMHQtMzkuNSAyMGwtMjc1IDI3NHEtMTE5IC03NyAtMjYxIC03N2wtNSAxbC0yIC0xcS0xMDAgMCAtMTkxIDM5dC0xNTYuNSAxMDQuNXQtMTA0LjUgMTU2LjV0LTM5IDE5MSB0MzkgMTkxdDEwNC41IDE1Ni41dDE1Ni41IDEwNC41dDE5MSAzOXpNNTAwIDEwMjJxLTg4IDAgLTE2MiAtNDN0LTExNyAtMTE3dC00MyAtMTYydDQzIC0xNjJ0MTE3IC0xMTd0MTYyIC00M3QxNjIgNDN0MTE3IDExN3Q0MyAxNjJ0LTQzIDE2MnQtMTE3IDExN3QtMTYyIDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNNjQ5IDk0OXE0OCA2OCAxMDkuNSAxMDR0MTIxLjUgMzguNXQxMTguNSAtMjB0MTAyLjUgLTY0dDcxIC0xMDAuNXQyNyAtMTIzcTAgLTU3IC0zMy41IC0xMTcuNXQtOTQgLTEyNC41dC0xMjYuNSAtMTI3LjV0LTE1MCAtMTUyLjV0LTE0NiAtMTc0cS02MiA4NSAtMTQ1LjUgMTc0dC0xNTAgMTUyLjV0LTEyNi41IDEyNy41dC05My41IDEyNC41dC0zMy41IDExNy41cTAgNjQgMjggMTIzdDczIDEwMC41dDEwNCA2NHQxMTkgMjAgdDEyMC41IC0zOC41dDEwNC41IC0xMDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNjsiIGQ9Ik00MDcgODAwbDEzMSAzNTNxNyAxOSAxNy41IDE5dDE3LjUgLTE5bDEyOSAtMzUzaDQyMXEyMSAwIDI0IC04LjV0LTE0IC0yMC41bC0zNDIgLTI0OWwxMzAgLTQwMXE3IC0yMCAtMC41IC0yNS41dC0yNC41IDYuNWwtMzQzIDI0NmwtMzQyIC0yNDdxLTE3IC0xMiAtMjQuNSAtNi41dC0wLjUgMjUuNWwxMzAgNDAwbC0zNDcgMjUxcS0xNyAxMiAtMTQgMjAuNXQyMyA4LjVoNDI5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDc7IiBkPSJNNDA3IDgwMGwxMzEgMzUzcTcgMTkgMTcuNSAxOXQxNy41IC0xOWwxMjkgLTM1M2g0MjFxMjEgMCAyNCAtOC41dC0xNCAtMjAuNWwtMzQyIC0yNDlsMTMwIC00MDFxNyAtMjAgLTAuNSAtMjUuNXQtMjQuNSA2LjVsLTM0MyAyNDZsLTM0MiAtMjQ3cS0xNyAtMTIgLTI0LjUgLTYuNXQtMC41IDI1LjVsMTMwIDQwMGwtMzQ3IDI1MXEtMTcgMTIgLTE0IDIwLjV0MjMgOC41aDQyOXpNNDc3IDcwMGgtMjQwbDE5NyAtMTQybC03NCAtMjI2IGwxOTMgMTM5bDE5NSAtMTQwbC03NCAyMjlsMTkyIDE0MGgtMjM0bC03OCAyMTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwODsiIGQ9Ik02MDAgMTIwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTI1MHEwIC00NiAtMzEgLTk4dC02OSAtNTJ2LTc1cTAgLTEwIDYgLTIxLjV0MTUgLTE3LjVsMzU4IC0yMzBxOSAtNSAxNSAtMTYuNXQ2IC0yMS41di05M3EwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5M3EwIDEwIDYgMjEuNXQxNSAxNi41bDM1OCAyMzBxOSA2IDE1IDE3LjV0NiAyMS41djc1cS0zOCAwIC02OSA1MiB0LTMxIDk4djI1MHEwIDEyNCA4OCAyMTJ0MjEyIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMjUgMTEwMGgxMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTA1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMDUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwMCAxMDAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgMTAwMGgtNTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMzUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNTUwIHExMCAwIDE3LjUgNy41dDcuNSAxNy41djM1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTEwMDAgMTAwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwIDgwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA4MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgNjAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgNTAwaC01NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0zNTBxMCAtMTAgNy41IC0xNy41IHQxNy41IC03LjVoNTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MzUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMTAwIDQwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCAyMDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTA7IiBkPSJNNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCA1MDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMTsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTEwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODUwIDcwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTg1MCAzMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41IHQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNDUwIDcwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMzsiIGQ9Ik00NjUgNDc3bDU3MSA1NzFxOCA4IDE4IDh0MTcgLThsMTc3IC0xNzdxOCAtNyA4IC0xN3QtOCAtMThsLTc4MyAtNzg0cS03IC04IC0xNy41IC04dC0xNy41IDhsLTM4NCAzODRxLTggOCAtOCAxOHQ4IDE3bDE3NyAxNzdxNyA4IDE3IDh0MTggLThsMTcxIC0xNzFxNyAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTQ7IiBkPSJNOTA0IDEwODNsMTc4IC0xNzlxOCAtOCA4IC0xOC41dC04IC0xNy41bC0yNjcgLTI2OGwyNjcgLTI2OHE4IC03IDggLTE3LjV0LTggLTE4LjVsLTE3OCAtMTc4cS04IC04IC0xOC41IC04dC0xNy41IDhsLTI2OCAyNjdsLTI2OCAtMjY3cS03IC04IC0xNy41IC04dC0xOC41IDhsLTE3OCAxNzhxLTggOCAtOCAxOC41dDggMTcuNWwyNjcgMjY4bC0yNjcgMjY4cS04IDcgLTggMTcuNXQ4IDE4LjVsMTc4IDE3OHE4IDggMTguNSA4dDE3LjUgLTggbDI2OCAtMjY3bDI2OCAyNjhxNyA3IDE3LjUgN3QxOC41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTU7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNNDI1IDkwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWg3NXExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41IHQtMTcuNSAtNy41aC03NXYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtNzVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg3NXY3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTY7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNMzI1IDgwMGgzNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNzsiIGQ9Ik01NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04MDAgOTc1djE2NnExNjcgLTYyIDI3MiAtMjA5LjV0MTA1IC0zMzEuNXEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNSB0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHEwIDE4NCAxMDUgMzMxLjV0MjcyIDIwOS41di0xNjZxLTEwMyAtNTUgLTE2NSAtMTU1dC02MiAtMjIwcTAgLTExNiA1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXEwIDEyMCAtNjIgMjIwdC0xNjUgMTU1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTg7IiBkPSJNMTAyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTExNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTcyNSA4MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgNTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTQ1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djQ1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0xMjUgMzAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41IHYyNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDE5OyIgZD0iTTYwMCAxMTc0cTMzIDAgNzQgLTVsMzggLTE1Mmw1IC0xcTQ5IC0xNCA5NCAtMzlsNSAtMmwxMzQgODBxNjEgLTQ4IDEwNCAtMTA1bC04MCAtMTM0bDMgLTVxMjUgLTQ0IDM5IC05M2wxIC02bDE1MiAtMzhxNSAtNDMgNSAtNzNxMCAtMzQgLTUgLTc0bC0xNTIgLTM4bC0xIC02cS0xNSAtNDkgLTM5IC05M2wtMyAtNWw4MCAtMTM0cS00OCAtNjEgLTEwNCAtMTA1bC0xMzQgODFsLTUgLTNxLTQ0IC0yNSAtOTQgLTM5bC01IC0ybC0zOCAtMTUxIHEtNDMgLTUgLTc0IC01cS0zMyAwIC03NCA1bC0zOCAxNTFsLTUgMnEtNDkgMTQgLTk0IDM5bC01IDNsLTEzNCAtODFxLTYwIDQ4IC0xMDQgMTA1bDgwIDEzNGwtMyA1cS0yNSA0NSAtMzggOTNsLTIgNmwtMTUxIDM4cS02IDQyIC02IDc0cTAgMzMgNiA3M2wxNTEgMzhsMiA2cTEzIDQ4IDM4IDkzbDMgNWwtODAgMTM0cTQ3IDYxIDEwNSAxMDVsMTMzIC04MGw1IDJxNDUgMjUgOTQgMzlsNSAxbDM4IDE1MnE0MyA1IDc0IDV6TTYwMCA4MTUgcS04OSAwIC0xNTIgLTYzdC02MyAtMTUxLjV0NjMgLTE1MS41dDE1MiAtNjN0MTUyIDYzdDYzIDE1MS41dC02MyAxNTEuNXQtMTUyIDYzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNNTAwIDEzMDBoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBoMjc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoLTExMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNTAwIDEyMDB2LTEwMGgzMDB2MTAwaC0zMDB6TTExMDAgOTAwdi04MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTcwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjUgdjgwMGg5MDB6TTMwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTUwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTcwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTkwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyMTsiIGQ9Ik0xOCA2MThsNjIwIDYwOHE4IDcgMTguNSA3dDE3LjUgLTdsNjA4IC02MDhxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xNzV2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWgtMzAwdi0zNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NzVoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDIyOyIgZD0iTTYwMCAxMjAwdi00MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHYtNjUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djExMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHpNMTAwMCA4MDBoLTI1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxMDI3cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd0MjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjV0LTU3IDIxNC41dC0xNTUuNSAxNTUuNXQtMjE0LjUgNTd6TTUyNSA5MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0yNzVoMTc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTTEzMDAgMGgtNTM4bC00MSA0MDBoLTI0MmwtNDEgLTQwMGgtNTM4bDQzMSAxMjAwaDIwOWwtMjEgLTMwMGgxNjJsLTIwIDMwMGgyMDh6TTUxNSA4MDBsLTI3IC0zMDBoMjI0bC0yNyAzMDBoLTE3MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI1OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDUwaDE5MXEyMCAwIDI1LjUgLTExLjV0LTcuNSAtMjcuNWwtMzI3IC00MDBxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMzI3IDQwMHEtMTMgMTYgLTcuNSAyNy41dDI1LjUgMTEuNWgxOTF2NDUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEyNSA0MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0zNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41IGgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTc1aDkwMHYxNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01MjUgOTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI3NWgxMzdxMjEgMCAyNiAtMTEuNXQtOCAtMjcuNWwtMjIzIC0yNzVxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMjIzIDI3NXEtMTMgMTYgLTggMjcuNXQyNiAxMS41aDEzN3YyNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNzsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNjMyIDkxNGwyMjMgLTI3NXExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTEzN3YtMjc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2Mjc1aC0xMzdxLTIxIDAgLTI2IDExLjV0OCAyNy41bDIyMyAyNzVxMTMgMTYgMzIgMTYgdDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTIyNSAxMjAwaDc1MHExMCAwIDE5LjUgLTd0MTIuNSAtMTdsMTg2IC02NTJxNyAtMjQgNyAtNDl2LTQyNXEwIC0xMiAtNCAtMjd0LTkgLTE3cS0xMiAtNiAtMzcgLTZoLTExMDBxLTEyIDAgLTI3IDR0LTE3IDhxLTYgMTMgLTYgMzhsMSA0MjVxMCAyNSA3IDQ5bDE4NSA2NTJxMyAxMCAxMi41IDE3dDE5LjUgN3pNODc4IDEwMDBoLTU1NnEtMTAgMCAtMTkgLTd0LTExIC0xOGwtODcgLTQ1MHEtMiAtMTEgNCAtMTh0MTYgLTdoMTUwIHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAxMS41IC0xN3QxOS41IC03aDI1MHExMCAwIDE5LjUgN3QxMS41IDE3bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDE1MHExMCAwIDE2IDd0NCAxOGwtODcgNDUwcS0yIDExIC0xMSAxOHQtMTkgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01NDAgODIwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMDsiIGQ9Ik05NDcgMTA2MGwxMzUgMTM1cTcgNyAxMi41IDV0NS41IC0xM3YtMzYycTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMzYycS0xMSAwIC0xMyA1LjV0NSAxMi41bDEzMyAxMzNxLTEwOSA3NiAtMjM4IDc2cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNWgxNTBxMCAtMTE3IC00NS41IC0yMjQgdC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTk0NyAxMDYwbDEzNSAxMzVxNyA3IDEyLjUgNXQ1LjUgLTEzdi0zNjFxMCAtMTEgLTcuNSAtMTguNXQtMTguNSAtNy41aC0zNjFxLTExIDAgLTEzIDUuNXQ1IDEyLjVsMTM0IDEzNHEtMTEwIDc1IC0yMzkgNzVxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41aC0xNTBxMCAxMTcgNDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3pNMTAyNyA2MDBoMTUwIHEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41cS0xOTIgMCAtMzQ4IDExOGwtMTM0IC0xMzRxLTcgLTggLTEyLjUgLTUuNXQtNS41IDEyLjV2MzYwcTAgMTEgNy41IDE4LjV0MTguNSA3LjVoMzYwcTEwIDAgMTIuNSAtNS41dC01LjUgLTEyLjVsLTEzMyAtMTMzcTExMCAtNzYgMjQwIC03NnExMTYgMCAyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEyNSAxMjAwaDEwNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djExNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMTA3NSAxMDAwaC04NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di04NTBxMCAtMTAgNy41IC0xNy41dDE3LjUgLTcuNWg4NTBxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXY4NTAgcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMzI1IDkwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgOTAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTMyNSA3MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNTI1IDcwMGg0NTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTQ1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0zMjUgNTAwaDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTUyNSA1MDBoNDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC00NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMzI1IDMwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgMzAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik05MDAgODAwdjIwMHEwIDgzIC01OC41IDE0MS41dC0xNDEuNSA1OC41aC0zMDBxLTgyIDAgLTE0MSAtNTl0LTU5IC0xNDF2LTIwMGgtMTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDkwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xMDB6TTQwMCA4MDB2MTUwcTAgMjEgMTUgMzUuNXQzNSAxNC41aDIwMCBxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXYtMTUwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNDsiIGQ9Ik0xMjUgMTEwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwNzVoLTEwMHYxMDc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwNzUgMTA1MnE0IDAgOSAtMnExNiAtNiAxNiAtMjN2LTQyMXEwIC02IC0zIC0xMnEtMzMgLTU5IC02Ni41IC05OXQtNjUuNSAtNTh0LTU2LjUgLTI0LjV0LTUyLjUgLTYuNXEtMjYgMCAtNTcuNSA2LjV0LTUyLjUgMTMuNXQtNjAgMjFxLTQxIDE1IC02MyAyMi41dC01Ny41IDE1dC02NS41IDcuNSBxLTg1IDAgLTE2MCAtNTdxLTcgLTUgLTE1IC01cS02IDAgLTExIDNxLTE0IDcgLTE0IDIydjQzOHEyMiA1NSA4MiA5OC41dDExOSA0Ni41cTIzIDIgNDMgMC41dDQzIC03dDMyLjUgLTguNXQzOCAtMTN0MzIuNSAtMTFxNDEgLTE0IDYzLjUgLTIxdDU3IC0xNHQ2My41IC03cTEwMyAwIDE4MyA4N3E3IDggMTggOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM1OyIgZD0iTTYwMCAxMTc1cTExNiAwIDIyNyAtNDkuNXQxOTIuNSAtMTMxdDEzMSAtMTkyLjV0NDkuNSAtMjI3di0zMDBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djMwMHEwIDEyNyAtNzAuNSAyMzEuNXQtMTg0LjUgMTYxLjV0LTI0NSA1N3QtMjQ1IC01N3QtMTg0LjUgLTE2MS41dC03MC41IC0yMzEuNXYtMzAwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTAgcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzAwcTAgMTE2IDQ5LjUgMjI3dDEzMSAxOTIuNXQxOTIuNSAxMzF0MjI3IDQ5LjV6TTIyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwcTAgOCA2IDE0dDE0IDZ6TTgyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwIHEwIDggNiAxNHQxNCA2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzY7IiBkPSJNMzIxIDgxNGwyNTggMTcycTkgNiAxNSAyLjV0NiAtMTMuNXYtNzUwcTAgLTEwIC02IC0xMy41dC0xNSAyLjVsLTI1OCAxNzJxLTIxIDE0IC00NiAxNGgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMjUwcTI1IDAgNDYgMTR6TTkwMCA2NjhsMTIwIDEyMHE3IDcgMTcgN3QxNyAtN2wzNCAtMzRxNyAtNyA3IC0xN3QtNyAtMTdsLTEyMCAtMTIwbDEyMCAtMTIwcTcgLTcgNyAtMTcgdC03IC0xN2wtMzQgLTM0cS03IC03IC0xNyAtN3QtMTcgN2wtMTIwIDExOWwtMTIwIC0xMTlxLTcgLTcgLTE3IC03dC0xNyA3bC0zNCAzNHEtNyA3IC03IDE3dDcgMTdsMTE5IDEyMGwtMTE5IDEyMHEtNyA3IC03IDE3dDcgMTdsMzQgMzRxNyA4IDE3IDh0MTcgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0zMjEgODE0bDI1OCAxNzJxOSA2IDE1IDIuNXQ2IC0xMy41di03NTBxMCAtMTAgLTYgLTEzLjV0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNiBsLTI5IDIzcS03IDcgLTguNSAxNi41dDQuNSAxNy41cTcyIDEwMyA3MiAyMjlxMCAxMzIgLTc4IDIzOHEtNiA4IC00LjUgMTh0OS41IDE3bDI5IDIycTcgNSAxNSA1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNOTY3IDEwMDRoM3ExMSAtMSAxNyAtMTBxMTM1IC0xNzkgMTM1IC0zOTZxMCAtMTA1IC0zNCAtMjA2LjV0LTk4IC0xODUuNXEtNyAtOSAtMTcgLTEwaC0zcS05IDAgLTE2IDZsLTQyIDM0cS04IDYgLTkgMTZ0NSAxOHExMTEgMTUwIDExMSAzMjhxMCA5MCAtMjkuNSAxNzZ0LTg0LjUgMTU3cS02IDkgLTUgMTl0MTAgMTZsNDIgMzNxNyA1IDE1IDV6TTMyMSA4MTRsMjU4IDE3MnE5IDYgMTUgMi41dDYgLTEzLjV2LTc1MHEwIC0xMCAtNiAtMTMuNSB0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNmwtMjkgMjNxLTcgNyAtOC41IDE2LjV0NC41IDE3LjVxNzIgMTAzIDcyIDIyOXEwIDEzMiAtNzggMjM4IHEtNiA4IC00LjUgMTguNXQ5LjUgMTYuNWwyOSAyMnE3IDUgMTUgNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM5OyIgZD0iTTUwMCA5MDBoMTAwdi0xMDBoLTEwMHYtMTAwaC00MDB2LTEwMGgtMTAwdjYwMGg1MDB2LTMwMHpNMTIwMCA3MDBoLTIwMHYtMTAwaDIwMHYtMjAwaC0zMDB2MzAwaC0yMDB2MzAwaC0xMDB2MjAwaDYwMHYtNTAwek0xMDAgMTEwMHYtMzAwaDMwMHYzMDBoLTMwMHpNODAwIDExMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTMwMCA5MDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEwMDAgOTAwaC0xMDB2MTAwaDEwMHYtMTAwek0zMDAgNTAwaDIwMHYtNTAwIGgtNTAwdjUwMGgyMDB2MTAwaDEwMHYtMTAwek04MDAgMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMGgtMTAwdjEwMGgxMDB2MjAwaC0yMDB2MTAwaDMwMHYtMzAwek0xMDAgNDAwdi0zMDBoMzAwdjMwMGgtMzAwek0zMDAgMjAwaC0xMDB2MTAwaDEwMHYtMTAwek0xMjAwIDIwMGgtMTAwdjEwMGgxMDB2LTEwMHpNNzAwIDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEyMDAgMGgtMzAwdjEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQwOyIgZD0iTTEwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMzAwIDIwMGgtMTAwdjEwMDBoMTAwdi0xMDAwek03MDAgMjAwaC0yMDB2MTAwMGgyMDB2LTEwMDB6TTkwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMTIwMCAyMDBoLTIwMHYxMDAwaDIwMHYtMTAwMHpNNDAwIDBoLTMwMHYxMDBoMzAwdi0xMDB6TTYwMCAwaC0xMDB2OTFoMTAwdi05MXpNODAwIDBoLTEwMHY5MWgxMDB2LTkxek0xMTAwIDBoLTIwMHY5MWgyMDB2LTkxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDE7IiBkPSJNNTAwIDEyMDBsNjgyIC02ODJxOCAtOCA4IC0xOHQtOCAtMThsLTQ2NCAtNDY0cS04IC04IC0xOCAtOHQtMTggOGwtNjgyIDY4MmwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NHpNMzE5LjUgMTAyNC41cS0yOS41IDI5LjUgLTcxIDI5LjV0LTcxIC0yOS41dC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTUwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTY4MiA2ODJsMSA0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg0NzR6TTgwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTU2IDU2bDQyNCA0MjZsLTcwMCA3MDBoMTUwek0zMTkuNSAxMDI0LjVxLTI5LjUgMjkuNSAtNzEgMjkuNXQtNzEgLTI5LjUgdC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQzOyIgZD0iTTMwMCAxMjAwaDgyNXE3NSAwIDc1IC03NXYtOTAwcTAgLTI1IC0xOCAtNDNsLTY0IC02NHEtOCAtOCAtMTMgLTUuNXQtNSAxMi41djk1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjVoLTcwMHEtMjUgMCAtNDMgLTE4bC02NCAtNjRxLTggLTggLTUuNSAtMTN0MTIuNSAtNWg3MDBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di05NTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC04NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NzUgcTAgMjUgMTggNDNsMTM5IDEzOXExOCAxOCA0MyAxOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ0OyIgZD0iTTI1MCAxMjAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTE1MGwtNDUwIDQ0NGwtNDUwIC00NDV2MTE1MXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NTsiIGQ9Ik04MjIgMTIwMGgtNDQ0cS0xMSAwIC0xOSAtNy41dC05IC0xNy41bC03OCAtMzAxcS03IC0yNCA3IC00NWw1NyAtMTA4cTYgLTkgMTcuNSAtMTV0MjEuNSAtNmg0NTBxMTAgMCAyMS41IDZ0MTcuNSAxNWw2MiAxMDhxMTQgMjEgNyA0NWwtODMgMzAxcS0xIDEwIC05IDE3LjV0LTE5IDcuNXpNMTE3NSA4MDBoLTE1MHEtMTAgMCAtMjEgLTYuNXQtMTUgLTE1LjVsLTc4IC0xNTZxLTQgLTkgLTE1IC0xNS41dC0yMSAtNi41aC01NTAgcS0xMCAwIC0yMSA2LjV0LTE1IDE1LjVsLTc4IDE1NnEtNCA5IC0xNSAxNS41dC0yMSA2LjVoLTE1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTY1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDc1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41IHQ3LjUgMTcuNXY2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41ek04NTAgMjAwaC01MDBxLTEwIDAgLTE5LjUgLTd0LTExLjUgLTE3bC0zOCAtMTUycS0yIC0xMCAzLjUgLTE3dDE1LjUgLTdoNjAwcTEwIDAgMTUuNSA3dDMuNSAxN2wtMzggMTUycS0yIDEwIC0xMS41IDE3dC0xOS41IDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik01MDAgMTEwMGgyMDBxNTYgMCAxMDIuNSAtMjAuNXQ3Mi41IC01MHQ0NCAtNTl0MjUgLTUwLjVsNiAtMjBoMTUwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTUwcTIgOCA2LjUgMjEuNXQyNCA0OHQ0NSA2MXQ3MiA0OHQxMDIuNSAyMS41ek05MDAgODAwdi0xMDAgaDEwMHYxMDBoLTEwMHpNNjAwIDczMHEtOTUgMCAtMTYyLjUgLTY3LjV0LTY3LjUgLTE2Mi41dDY3LjUgLTE2Mi41dDE2Mi41IC02Ny41dDE2Mi41IDY3LjV0NjcuNSAxNjIuNXQtNjcuNSAxNjIuNXQtMTYyLjUgNjcuNXpNNjAwIDYwM3E0MyAwIDczIC0zMHQzMCAtNzN0LTMwIC03M3QtNzMgLTMwdC03MyAzMHQtMzAgNzN0MzAgNzN0NzMgMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik02ODEgMTE5OWwzODUgLTk5OHEyMCAtNTAgNjAgLTkycTE4IC0xOSAzNi41IC0yOS41dDI3LjUgLTExLjVsMTAgLTJ2LTY2aC00MTd2NjZxNTMgMCA3NSA0My41dDUgODguNWwtODIgMjIyaC0zOTFxLTU4IC0xNDUgLTkyIC0yMzRxLTExIC0zNCAtNi41IC01N3QyNS41IC0zN3Q0NiAtMjB0NTUgLTZ2LTY2aC0zNjV2NjZxNTYgMjQgODQgNTJxMTIgMTIgMjUgMzAuNXQyMCAzMS41bDcgMTNsMzk5IDEwMDZoOTN6TTQxNiA1MjFoMzQwIGwtMTYyIDQ1N3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTc1MyA2NDFxNSAtMSAxNC41IC00LjV0MzYgLTE1LjV0NTAuNSAtMjYuNXQ1My41IC00MHQ1MC41IC01NC41dDM1LjUgLTcwdDE0LjUgLTg3cTAgLTY3IC0yNy41IC0xMjUuNXQtNzEuNSAtOTcuNXQtOTguNSAtNjYuNXQtMTA4LjUgLTQwLjV0LTEwMiAtMTNoLTUwMHY4OXE0MSA3IDcwLjUgMzIuNXQyOS41IDY1LjV2ODI3cTAgMjQgLTAuNSAzNHQtMy41IDI0dC04LjUgMTkuNXQtMTcgMTMuNXQtMjggMTIuNXQtNDIuNSAxMS41djcxIGw0NzEgLTFxNTcgMCAxMTUuNSAtMjAuNXQxMDggLTU3dDgwLjUgLTk0dDMxIC0xMjQuNXEwIC01MSAtMTUuNSAtOTYuNXQtMzggLTc0LjV0LTQ1IC01MC41dC0zOC41IC0zMC41ek00MDAgNzAwaDEzOXE3OCAwIDEzMC41IDQ4LjV0NTIuNSAxMjIuNXEwIDQxIC04LjUgNzAuNXQtMjkuNSA1NS41dC02Mi41IDM5LjV0LTEwMy41IDEzLjVoLTExOHYtMzUwek00MDAgMjAwaDIxNnE4MCAwIDEyMSA1MC41dDQxIDEzMC41cTAgOTAgLTYyLjUgMTU0LjUgdC0xNTYuNSA2NC41aC0xNTl2LTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ5OyIgZD0iTTg3NyAxMjAwbDIgLTU3cS04MyAtMTkgLTExNiAtNDUuNXQtNDAgLTY2LjVsLTEzMiAtODM5cS05IC00OSAxMyAtNjl0OTYgLTI2di05N2gtNTAwdjk3cTE4NiAxNiAyMDAgOThsMTczIDgzMnEzIDE3IDMgMzB0LTEuNSAyMi41dC05IDE3LjV0LTEzLjUgMTIuNXQtMjEuNSAxMHQtMjYgOC41dC0zMy41IDEwcS0xMyAzIC0xOSA1djU3aDQyNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTTEzMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTE3NSAxMDAwaC03NXYtODAwaDc1bC0xMjUgLTE2N2wtMTI1IDE2N2g3NXY4MDBoLTc1bDEyNSAxNjd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MTsiIGQ9Ik0xMTAwIDkwMGgtNTBxMCAyMSAtNCAzN3QtOS41IDI2LjV0LTE4IDE3LjV0LTIyIDExdC0yOC41IDUuNXQtMzEgMnQtMzcgMC41aC0yMDB2LTY1MHEwIC0yMiAyNSAtMzQuNXQ1MCAtMTMuNWwyNSAtMnYtMTAwaC00MDB2MTAwcTQgMCAxMSAwLjV0MjQgM3QzMCA3dDI0IDE1dDExIDI0LjV2NjUwaC0yMDBxLTI1IDAgLTM3IC0wLjV0LTMxIC0ydC0yOC41IC01LjV0LTIyIC0xMXQtMTggLTE3LjV0LTkuNSAtMjYuNXQtNCAtMzdoLTUwdjMwMCBoMTAwMHYtMzAwek0xMTY3IDUwbC0xNjcgLTEyNXY3NWgtODAwdi03NWwtMTY3IDEyNWwxNjcgMTI1di03NWg4MDB2NzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MjsiIGQ9Ik01MCAxMTAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDgwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0yNTAgMTEwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjUwIDUwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTUwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg2MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU1OyIgZD0iTTUwIDExMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NjsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCAxMTAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMzUwIDgwMGg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zNTAgMjAwaDgwMCBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTc7IiBkPSJNNDAwIDBoLTEwMHYxMTAwaDEwMHYtMTEwMHpNNTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjY3IDU1MGwtMTY3IC0xMjV2NzVoLTIwMHYxMDBoMjAwdjc1ek01NTAgNTAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTU1MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAwaC0xMDB2MTEwMGgxMDB2LTExMDB6TTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEwMCA2MDBoMjAwdi0xMDBoLTIwMHYtNzVsLTE2NyAxMjVsMTY3IDEyNXYtNzV6TTUwIDUwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1OTsiIGQ9Ik03NSAxMDAwaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzdjY1MHEwIDMxIDIyIDUzdDUzIDIyek0xMjAwIDMwMGwtMzAwIDMwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MDsiIGQ9Ik00NCAxMTAwaDExMTJxMTggMCAzMSAtMTN0MTMgLTMxdi0xMDEycTAgLTE4IC0xMyAtMzF0LTMxIC0xM2gtMTExMnEtMTggMCAtMzEgMTN0LTEzIDMxdjEwMTJxMCAxOCAxMyAzMXQzMSAxM3pNMTAwIDEwMDB2LTczN2wyNDcgMTgybDI5OCAtMTMxbC03NCAxNTZsMjkzIDMxOGwyMzYgLTI4OHY1MDBoLTEwMDB6TTM0MiA4ODRxNTYgMCA5NSAtMzl0MzkgLTk0LjV0LTM5IC05NXQtOTUgLTM5LjV0LTk1IDM5LjV0LTM5IDk1dDM5IDk0LjUgdDk1IDM5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjI7IiBkPSJNNjQ4IDExNjlxMTE3IDAgMjE2IC02MHQxNTYuNSAtMTYxdDU3LjUgLTIxOHEwIC0xMTUgLTcwIC0yNThxLTY5IC0xMDkgLTE1OCAtMjI1LjV0LTE0MyAtMTc5LjVsLTU0IC02MnEtOSA4IC0yNS41IDI0LjV0LTYzLjUgNjcuNXQtOTEgMTAzdC05OC41IDEyOHQtOTUuNSAxNDhxLTYwIDEzMiAtNjAgMjQ5cTAgODggMzQgMTY5LjV0OTEuNSAxNDJ0MTM3IDk2LjV0MTY2LjUgMzZ6TTY1Mi41IDk3NHEtOTEuNSAwIC0xNTYuNSAtNjUgdC02NSAtMTU3dDY1IC0xNTYuNXQxNTYuNSAtNjQuNXQxNTYuNSA2NC41dDY1IDE1Ni41dC02NSAxNTd0LTE1Ni41IDY1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxNzN2ODU0cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NDsiIGQ9Ik01NTQgMTI5NXEyMSAtNzIgNTcuNSAtMTQzLjV0NzYgLTEzMHQ4MyAtMTE4dDgyLjUgLTExN3Q3MCAtMTE2dDQ5LjUgLTEyNnQxOC41IC0xMzYuNXEwIC03MSAtMjUuNSAtMTM1dC02OC41IC0xMTF0LTk5IC04MnQtMTE4LjUgLTU0dC0xMjUuNSAtMjNxLTg0IDUgLTE2MS41IDM0dC0xMzkuNSA3OC41dC05OSAxMjV0LTM3IDE2NC41cTAgNjkgMTggMTM2LjV0NDkuNSAxMjYuNXQ2OS41IDExNi41dDgxLjUgMTE3LjV0ODMuNSAxMTkgdDc2LjUgMTMxdDU4LjUgMTQzek0zNDQgNzEwcS0yMyAtMzMgLTQzLjUgLTcwLjV0LTQwLjUgLTEwMi41dC0xNyAtMTIzcTEgLTM3IDE0LjUgLTY5LjV0MzAgLTUydDQxIC0zN3QzOC41IC0yNC41dDMzIC0xNXEyMSAtNyAzMiAtMXQxMyAyMmw2IDM0cTIgMTAgLTIuNSAyMnQtMTMuNSAxOXEtNSA0IC0xNCAxMnQtMjkuNSA0MC41dC0zMi41IDczLjVxLTI2IDg5IDYgMjcxcTIgMTEgLTYgMTFxLTggMSAtMTUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMTAwMCAxMDEzbDEwOCAxMTVxMiAxIDUgMnQxMyAydDIwLjUgLTF0MjUgLTkuNXQyOC41IC0yMS41cTIyIC0yMiAyNyAtNDN0MCAtMzJsLTYgLTEwbC0xMDggLTExNXpNMzUwIDExMDBoNDAwcTUwIDAgMTA1IC0xM2wtMTg3IC0xODdoLTM2OHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djE4MmwyMDAgMjAwdi0zMzIgcTAgLTE2NSAtOTMuNSAtMjU3LjV0LTI1Ni41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTEwMDkgODAzbC0zNjIgLTM2MmwtMTYxIC01MGw1NSAxNzBsMzU1IDM1NXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY2OyIgZD0iTTM1MCAxMTAwaDM2MXEtMTY0IC0xNDYgLTIxNiAtMjAwaC0xOTVxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNWwyMDAgMTUzdi0xMDNxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTgyNCAxMDczbDMzOSAtMzAxcTggLTcgOCAtMTcuNXQtOCAtMTcuNWwtMzQwIC0zMDZxLTcgLTYgLTEyLjUgLTR0LTYuNSAxMXYyMDNxLTI2IDEgLTU0LjUgMHQtNzguNSAtNy41dC05MiAtMTcuNXQtODYgLTM1dC03MCAtNTdxMTAgNTkgMzMgMTA4dDUxLjUgODEuNXQ2NSA1OC41dDY4LjUgNDAuNXQ2NyAyNC41dDU2IDEzLjV0NDAgNC41djIxMHExIDEwIDYuNSAxMi41dDEzLjUgLTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTM1MCAxMTAwaDM1MHE2MCAwIDEyNyAtMjNsLTE3OCAtMTc3aC0zNDlxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY2OWwyMDAgMjAwdi0yMTlxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTY0MyA2MzlsMzk1IDM5NXE3IDcgMTcuNSA3dDE3LjUgLTdsMTAxIC0xMDFxNyAtNyA3IC0xNy41dC03IC0xNy41bC01MzEgLTUzMnEtNyAtNyAtMTcuNSAtN3QtMTcuNSA3bC0yNDggMjQ4cS03IDcgLTcgMTcuNXQ3IDE3LjVsMTAxIDEwMXE3IDcgMTcuNSA3dDE3LjUgLTdsMTExIC0xMTFxOCAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjg7IiBkPSJNMzE4IDkxOGwyNjQgMjY0cTggOCAxOCA4dDE4IC04bDI2MCAtMjY0cTcgLTggNC41IC0xM3QtMTIuNSAtNWgtMTcwdi0yMDBoMjAwdjE3M3EwIDEwIDUgMTJ0MTMgLTVsMjY0IC0yNjBxOCAtNyA4IC0xNy41dC04IC0xNy41bC0yNjQgLTI2NXEtOCAtNyAtMTMgLTV0LTUgMTJ2MTczaC0yMDB2LTIwMGgxNzBxMTAgMCAxMi41IC01dC00LjUgLTEzbC0yNjAgLTI2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTI2NCAyNjRxLTggOCAtNS41IDEzIHQxMi41IDVoMTc1djIwMGgtMjAwdi0xNzNxMCAtMTAgLTUgLTEydC0xMyA1bC0yNjQgMjY1cS04IDcgLTggMTcuNXQ4IDE3LjVsMjY0IDI2MHE4IDcgMTMgNXQ1IC0xMnYtMTczaDIwMHYyMDBoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTI1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM4bDQ2NCA0NTNxMTUgMTQgMjUuNSAxMHQxMC41IC0yNXYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcwOyIgZD0iTTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di0xMDAwcTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEyMDAgMTA1MHYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ5MiA0ODBxLTE1IDE0IC0xNSAzNXQxNSAzNWw0OTIgNDgwcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV2LTQzOGw0NjQgNDUzcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MjsiIGQ9Ik0yNDMgMTA3NGw4MTQgLTQ5OHExOCAtMTEgMTggLTI2dC0xOCAtMjZsLTgxNCAtNDk4cS0xOCAtMTEgLTMwLjUgLTR0LTEyLjUgMjh2MTAwMHEwIDIxIDEyLjUgMjh0MzAuNSAtNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDczOyIgZD0iTTI1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzQ7IiBkPSJNMTEwMCA5NTB2LTgwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY4MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc1OyIgZD0iTTUwMCA2MTJ2NDM4cTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0OTIgLTQ4MHExNSAtMTQgMTUgLTM1dC0xNSAtMzVsLTQ5MiAtNDgwcS0xNSAtMTQgLTI1LjUgLTEwdC0xMC41IDI1djQzOGwtNDY0IC00NTNxLTE1IC0xNCAtMjUuNSAtMTB0LTEwLjUgMjV2MTAwMHEwIDIxIDEwLjUgMjV0MjUuNSAtMTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0xMDQ4IDExMDJsMTAwIDFxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNWw1IC0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41bC0xMDAgLTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41bC0yIDQzN2wtNDYzIC00NTRxLTE0IC0xNSAtMjQuNSAtMTAuNXQtMTAuNSAyNS41bC0yIDQzN2wtNDYyIC00NTVxLTE1IC0xNCAtMjUuNSAtOS41dC0xMC41IDI0LjVsLTUgMTAwMHEwIDIxIDEwLjUgMjUuNXQyNS41IC0xMC41bDQ2NiAtNDUwIGwtMiA0MzhxMCAyMCAxMC41IDI0LjV0MjUuNSAtOS41bDQ2NiAtNDUxbC0yIDQzOHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik04NTAgMTEwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC00NjQgLTQ1M3EtMTUgLTE0IC0yNS41IC0xMHQtMTAuNSAyNXYxMDAwcTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0NjQgLTQ1M3Y0MzhxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzg7IiBkPSJNNjg2IDEwODFsNTAxIC01NDBxMTUgLTE1IDEwLjUgLTI2dC0yNi41IC0xMWgtMTA0MnEtMjIgMCAtMjYuNSAxMXQxMC41IDI2bDUwMSA1NDBxMTUgMTUgMzYgMTV0MzYgLTE1ek0xNTAgNDAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc5OyIgZD0iTTg4NSA5MDBsLTM1MiAtMzUzbDM1MiAtMzUzbC0xOTcgLTE5OGwtNTUyIDU1Mmw1NTIgNTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODA7IiBkPSJNMTA2NCA1NDdsLTU1MSAtNTUxbC0xOTggMTk4bDM1MyAzNTNsLTM1MyAzNTNsMTk4IDE5OHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NTAgOTAwaC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MGgtMTUwIHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgxNTB2LTE1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxNTBoMTUwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTE1MHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MjsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNODUwIDcwMGgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgzOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03NDEuNSA5MTNxLTEyLjUgMCAtMjEuNSAtOWwtMTIwIC0xMjBsLTEyMCAxMjBxLTkgOSAtMjEuNSA5IHQtMjEuNSAtOWwtMTQxIC0xNDFxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxMjAgLTEyMGwtMTIwIC0xMjBxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxNDEgLTE0MXE5IC05IDIxLjUgLTl0MjEuNSA5bDEyMCAxMjBsMTIwIC0xMjBxOSAtOSAyMS41IC05dDIxLjUgOWwxNDEgMTQxcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTIwIDEyMGwxMjAgMTIwcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTQxIDE0MXEtOSA5IC0yMS41IDl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNTQ2IDYyM2wtODQgODVxLTcgNyAtMTcuNSA3dC0xOC41IC03bC0xMzkgLTEzOXEtNyAtOCAtNyAtMTh0NyAtMTggbDI0MiAtMjQxcTcgLTggMTcuNSAtOHQxNy41IDhsMzc1IDM3NXE3IDcgNyAxNy41dC03IDE4LjVsLTEzOSAxMzlxLTcgNyAtMTcuNSA3dC0xNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODU7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTU4OCA5NDFxLTI5IDAgLTU5IC01LjV0LTYzIC0yMC41dC01OCAtMzguNXQtNDEuNSAtNjN0LTE2LjUgLTg5LjUgcTAgLTI1IDIwIC0yNWgxMzFxMzAgLTUgMzUgMTFxNiAyMCAyMC41IDI4dDQ1LjUgOHEyMCAwIDMxLjUgLTEwLjV0MTEuNSAtMjguNXEwIC0yMyAtNyAtMzR0LTI2IC0xOHEtMSAwIC0xMy41IC00dC0xOS41IC03LjV0LTIwIC0xMC41dC0yMiAtMTd0LTE4LjUgLTI0dC0xNS41IC0zNXQtOCAtNDZxLTEgLTggNS41IC0xNi41dDIwLjUgLTguNWgxNzNxNyAwIDIyIDh0MzUgMjh0MzcuNSA0OHQyOS41IDc0dDEyIDEwMHEwIDQ3IC0xNyA4MyB0LTQyLjUgNTd0LTU5LjUgMzQuNXQtNjQgMTh0LTU5IDQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NzUgMTAwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNSB0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTY3NSA3MDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNzV2LTIwMGgtNzVxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di01MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDM1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djUwcTAgMTAgLTcuNSAxNy41IHQtMTcuNSA3LjVoLTc1djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NzsiIGQ9Ik01MjUgMTIwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xOTRxMTAzIC0yNyAxNzguNSAtMTAyLjV0MTAyLjUgLTE3OC41aDE5NHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE5NHEtMjcgLTEwMyAtMTAyLjUgLTE3OC41dC0xNzguNSAtMTAyLjV2LTE5NHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE5NCBxLTEwMyAyNyAtMTc4LjUgMTAyLjV0LTEwMi41IDE3OC41aC0xOTRxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxOTRxMjcgMTAzIDEwMi41IDE3OC41dDE3OC41IDEwMi41djE5NHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek03MDAgODkzdi0xNjhxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNjhxLTY4IC0yMyAtMTE5IC03NCB0LTc0IC0xMTloMTY4cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTY4cTIzIC02OCA3NCAtMTE5dDExOSAtNzR2MTY4cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTY4cTY4IDIzIDExOSA3NHQ3NCAxMTloLTE2OHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDE2OCBxLTIzIDY4IC03NCAxMTl0LTExOSA3NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg4OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek03NTkgODIzbDY0IC02NHE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTEyNCAtMTI0bDEyNCAtMTI0cTcgLTcgNyAtMTcuNXQtNyAtMTcuNWwtNjQgLTY0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTEyNCAxMjRsLTEyNCAtMTI0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTY0IDY0IHEtNyA3IC03IDE3LjV0NyAxNy41bDEyNCAxMjRsLTEyNCAxMjRxLTcgNyAtNyAxNy41dDcgMTcuNWw2NCA2NHE3IDcgMTcuNSA3dDE3LjUgLTdsMTI0IC0xMjRsMTI0IDEyNHE3IDcgMTcuNSA3dDE3LjUgLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4OTsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNzgyIDc4OGwxMDYgLTEwNnE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTMyMCAtMzIxcS04IC03IC0xOCAtN3QtMTggN2wtMjAyIDIwM3EtOCA3IC04IDE3LjV0OCAxNy41bDEwNiAxMDZxNyA4IDE3LjUgOHQxNy41IC04bDc5IC03OWwxOTcgMTk3cTcgNyAxNy41IDd0MTcuNSAtN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkwOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjVxMCAtMTIwIDY1IC0yMjUgbDU4NyA1ODdxLTEwNSA2NSAtMjI1IDY1ek05NjUgODE5bC01ODQgLTU4NHExMDQgLTYyIDIxOSAtNjJxMTE2IDAgMjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjVxMCAxMTUgLTYyIDIxOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTM5IDU4Mmw1MjIgNDI3cTE2IDEzIDI3LjUgOHQxMS41IC0yNnYtMjkxaDU1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC01NTB2LTI5MXEwIC0yMSAtMTEuNSAtMjZ0LTI3LjUgOGwtNTIyIDQyN3EtMTYgMTMgLTE2IDMydDE2IDMyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwOTI7IiBkPSJNNjM5IDEwMDlsNTIyIC00MjdxMTYgLTEzIDE2IC0zMnQtMTYgLTMybC01MjIgLTQyN3EtMTYgLTEzIC0yNy41IC04dC0xMS41IDI2djI5MWgtNTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDU1MHYyOTFxMCAyMSAxMS41IDI2dDI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik02ODIgMTE2MWw0MjcgLTUyMnExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTI5MXYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djU1MGgtMjkxcS0yMSAwIC0yNiAxMS41dDggMjcuNWw0MjcgNTIycTEzIDE2IDMyIDE2dDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk0OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUwaDI5MXEyMSAwIDI2IC0xMS41dC04IC0yNy41bC00MjcgLTUyMnEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC00MjcgNTIycS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMjkxdjU1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NTsiIGQ9Ik02MzkgMTEwOWw1MjIgLTQyN3ExNiAtMTMgMTYgLTMydC0xNiAtMzJsLTUyMiAtNDI3cS0xNiAtMTMgLTI3LjUgLTh0LTExLjUgMjZ2MjkxcS05NCAtMiAtMTgyIC0yMHQtMTcwLjUgLTUydC0xNDcgLTkyLjV0LTEwMC41IC0xMzUuNXE1IDEwNSAyNyAxOTMuNXQ2Ny41IDE2N3QxMTMgMTM1dDE2NyA5MS41dDIyNS41IDQydjI2MnEwIDIxIDExLjUgMjZ0MjcuNSAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk2OyIgZD0iTTg1MCAxMjAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzAwcTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtOTQgOTRsLTI0OSAtMjQ5cS04IC03IC0xOCAtN3QtMTggN2wtMTA2IDEwNnEtNyA4IC03IDE4dDcgMThsMjQ5IDI0OWwtOTQgOTRxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjV6TTM1MCAwaC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djMwMHEwIDIxIDEwLjUgMjV0MjQuNSAtMTBsOTQgLTk0bDI0OSAyNDkgcTggNyAxOCA3dDE4IC03bDEwNiAtMTA2cTcgLTggNyAtMTh0LTcgLTE4bC0yNDkgLTI0OWw5NCAtOTRxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTEwMTQgMTEyMGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMjQ5IC0yNDlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMjQ5IDI0OXE4IDcgMTggN3QxOCAtN3pNMjUwIDYwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMjQ5IC0yNDlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwyNDkgMjQ5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03MDQgOTAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNSB0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNXQyMS41IDM0LjVsNTggMzAycTQgMjAgLTggMzQuNXQtMzIgMTQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAyOyIgZD0iTTI2MCAxMjAwcTkgMCAxOSAtMnQxNSAtNGw1IC0ycTIyIC0xMCA0NCAtMjNsMTk2IC0xMThxMjEgLTEzIDM2IC0yNHEyOSAtMjEgMzcgLTEycTExIDEzIDQ5IDM1bDE5NiAxMThxMjIgMTMgNDUgMjNxMTcgNyAzOCA3cTIzIDAgNDcgLTE2LjV0MzcgLTMzLjVsMTMgLTE2cTE0IC0yMSAxOCAtNDVsMjUgLTEyM2w4IC00NHExIC05IDguNSAtMTQuNXQxNy41IC01LjVoNjFxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MCBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE3NWgtNDAwdjMwMGgtMjAwdi0zMDBoLTQwMHYxNzVxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNjFxMTEgMCAxOCAzdDcgOHEwIDQgOSA1MmwyNSAxMjhxNSAyNSAxOSA0NXEyIDMgNSA3dDEzLjUgMTV0MjEuNSAxOS41dDI2LjUgMTUuNSB0MjkuNSA3ek05MTUgMTA3OWwtMTY2IC0xNjJxLTcgLTcgLTUgLTEydDEyIC01aDIxOXExMCAwIDE1IDd0MiAxN2wtNTEgMTQ5cS0zIDEwIC0xMSAxMnQtMTUgLTZ6TTQ2MyA5MTdsLTE3NyAxNTdxLTggNyAtMTYgNXQtMTEgLTEybC01MSAtMTQzcS0zIC0xMCAyIC0xN3QxNSAtN2gyMzFxMTEgMCAxMi41IDV0LTUuNSAxMnpNNTAwIDBoLTM3NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWg0MDB2LTQwMHpNMTEwMCA0MDB2LTM3NSBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNzV2NDAwaDQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAzOyIgZD0iTTExNjUgMTE5MHE4IDMgMjEgLTYuNXQxMyAtMTcuNXEtMiAtMTc4IC0yNC41IC0zMjMuNXQtNTUuNSAtMjQ1LjV0LTg3IC0xNzQuNXQtMTAyLjUgLTExOC41dC0xMTggLTY4LjV0LTExOC41IC0zM3QtMTIwIC00LjV0LTEwNSA5LjV0LTkwIDE2LjVxLTYxIDEyIC03OCAxMXEtNCAxIC0xMi41IDB0LTM0IC0xNC41dC01Mi41IC00MC41bC0xNTMgLTE1M3EtMjYgLTI0IC0zNyAtMTQuNXQtMTEgNDMuNXEwIDY0IDQyIDEwMnE4IDggNTAuNSA0NSB0NjYuNSA1OHExOSAxNyAzNSA0N3QxMyA2MXEtOSA1NSAtMTAgMTAyLjV0NyAxMTF0MzcgMTMwdDc4IDEyOS41cTM5IDUxIDgwIDg4dDg5LjUgNjMuNXQ5NC41IDQ1dDExMy41IDM2dDEyOSAzMXQxNTcuNSAzN3QxODIgNDcuNXpNMTExNiAxMDk4cS04IDkgLTIyLjUgLTN0LTQ1LjUgLTUwcS0zOCAtNDcgLTExOSAtMTAzLjV0LTE0MiAtODkuNWwtNjIgLTMzcS01NiAtMzAgLTEwMiAtNTd0LTEwNCAtNjh0LTEwMi41IC04MC41dC04NS41IC05MSB0LTY0IC0xMDQuNXEtMjQgLTU2IC0zMSAtODZ0MiAtMzJ0MzEuNSAxNy41dDU1LjUgNTkuNXEyNSAzMCA5NCA3NS41dDEyNS41IDc3LjV0MTQ3LjUgODFxNzAgMzcgMTE4LjUgNjl0MTAyIDc5LjV0OTkgMTExdDg2LjUgMTQ4LjVxMjIgNTAgMjQgNjB0LTYgMTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik02NTMgMTIzMXEtMzkgLTY3IC01NC41IC0xMzF0LTEwLjUgLTExNC41dDI0LjUgLTk2LjV0NDcuNSAtODB0NjMuNSAtNjIuNXQ2OC41IC00Ni41dDY1IC0zMHEtNCA3IC0xNy41IDM1dC0xOC41IDM5LjV0LTE3IDM5LjV0LTE3IDQzdC0xMyA0MnQtOS41IDQ0LjV0LTIgNDJ0NCA0M3QxMy41IDM5dDIzIDM4LjVxOTYgLTQyIDE2NSAtMTA3LjV0MTA1IC0xMzh0NTIgLTE1NnQxMyAtMTU5dC0xOSAtMTQ5LjVxLTEzIC01NSAtNDQgLTEwNi41IHQtNjggLTg3dC03OC41IC02NC41dC03Mi41IC00NXQtNTMgLTIycS03MiAtMjIgLTEyNyAtMTFxLTMxIDYgLTEzIDE5cTYgMyAxNyA3cTEzIDUgMzIuNSAyMXQ0MSA0NHQzOC41IDYzLjV0MjEuNSA4MS41dC02LjUgOTQuNXQtNTAgMTA3dC0xMDQgMTE1LjVxMTAgLTEwNCAtMC41IC0xODl0LTM3IC0xNDAuNXQtNjUgLTkzdC04NCAtNTJ0LTkzLjUgLTExdC05NSAyNC41cS04MCAzNiAtMTMxLjUgMTE0dC01My41IDE3MXEtMiAyMyAwIDQ5LjUgdDQuNSA1Mi41dDEzLjUgNTZ0MjcuNSA2MHQ0NiA2NC41dDY5LjUgNjguNXEtOCAtNTMgLTUgLTEwMi41dDE3LjUgLTkwdDM0IC02OC41dDQ0LjUgLTM5dDQ5IC0ycTMxIDEzIDM4LjUgMzZ0LTQuNSA1NXQtMjkgNjQuNXQtMzYgNzV0LTI2IDc1LjVxLTE1IDg1IDIgMTYxLjV0NTMuNSAxMjguNXQ4NS41IDkyLjV0OTMuNSA2MXQ4MS41IDI1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNTsiIGQ9Ik02MDAgMTA5NHE4MiAwIDE2MC41IC0yMi41dDE0MCAtNTl0MTE2LjUgLTgyLjV0OTQuNSAtOTV0NjggLTk1dDQyLjUgLTgyLjV0MTQgLTU3LjV0LTE0IC01Ny41dC00MyAtODIuNXQtNjguNSAtOTV0LTk0LjUgLTk1dC0xMTYuNSAtODIuNXQtMTQwIC01OXQtMTU5LjUgLTIyLjV0LTE1OS41IDIyLjV0LTE0MCA1OXQtMTE2LjUgODIuNXQtOTQuNSA5NXQtNjguNSA5NXQtNDMgODIuNXQtMTQgNTcuNXQxNCA1Ny41dDQyLjUgODIuNXQ2OCA5NSB0OTQuNSA5NXQxMTYuNSA4Mi41dDE0MCA1OXQxNjAuNSAyMi41ek04ODggODI5cS0xNSAxNSAtMTggMTJ0NSAtMjJxMjUgLTU3IDI1IC0xMTlxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4dC0yMTIgODh0LTg4IDIxMnEwIDU5IDIzIDExNHE4IDE5IDQuNSAyMnQtMTcuNSAtMTJxLTcwIC02OSAtMTYwIC0xODRxLTEzIC0xNiAtMTUgLTQwLjV0OSAtNDIuNXEyMiAtMzYgNDcgLTcxdDcwIC04MnQ5Mi41IC04MXQxMTMgLTU4LjV0MTMzLjUgLTI0LjUgdDEzMy41IDI0dDExMyA1OC41dDkyLjUgODEuNXQ3MCA4MS41dDQ3IDcwLjVxMTEgMTggOSA0Mi41dC0xNCA0MS41cS05MCAxMTcgLTE2MyAxODl6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wzNSAzNHExNCAxNSAxMi41IDMzLjV0LTE2LjUgMzMuNXEtNDQgNDQgLTg5IDExN3EtMTEgMTggLTI4IDIwdC0zMiAtMTJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik01OTIgMGgtMTQ4bDMxIDEyMHEtOTEgMjAgLTE3NS41IDY4LjV0LTE0My41IDEwNi41dC0xMDMuNSAxMTl0LTY2LjUgMTEwdC0yMiA3NnEwIDIxIDE0IDU3LjV0NDIuNSA4Mi41dDY4IDk1dDk0LjUgOTV0MTE2LjUgODIuNXQxNDAgNTl0MTYwLjUgMjIuNXE2MSAwIDEyNiAtMTVsMzIgMTIxaDE0OHpNOTQ0IDc3MGw0NyAxODFxMTA4IC04NSAxNzYuNSAtMTkydDY4LjUgLTE1OXEwIC0yNiAtMTkuNSAtNzF0LTU5LjUgLTEwMnQtOTMgLTExMiB0LTEyOSAtMTA0LjV0LTE1OCAtNzUuNWw0NiAxNzNxNzcgNDkgMTM2IDExN3Q5NyAxMzFxMTEgMTggOSA0Mi41dC0xNCA0MS41cS01NCA3MCAtMTA3IDEzMHpNMzEwIDgyNHEtNzAgLTY5IC0xNjAgLTE4NHEtMTMgLTE2IC0xNSAtNDAuNXQ5IC00Mi41cTE4IC0zMCAzOSAtNjB0NTcgLTcwLjV0NzQgLTczdDkwIC02MXQxMDUgLTQxLjVsNDEgMTU0cS0xMDcgMTggLTE3OC41IDEwMS41dC03MS41IDE5My41cTAgNTkgMjMgMTE0cTggMTkgNC41IDIyIHQtMTcuNSAtMTJ6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wxMiAxMWwyMiA4NmwtMyA0cS00NCA0NCAtODkgMTE3cS0xMSAxOCAtMjggMjB0LTMyIC0xMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTA3OyIgZD0iTS05MCAxMDBsNjQyIDEwNjZxMjAgMzEgNDggMjguNXQ0OCAtMzUuNWw2NDIgLTEwNTZxMjEgLTMyIDcuNSAtNjcuNXQtNTAuNSAtMzUuNWgtMTI5NHEtMzcgMCAtNTAuNSAzNHQ3LjUgNjZ6TTE1NSAyMDBoMzQ1djc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoMzQ1bC00NDUgNzIzek00OTYgNzAwaDIwOHEyMCAwIDMyIC0xNC41dDggLTM0LjVsLTU4IC0yNTIgcS00IC0yMCAtMjEuNSAtMzQuNXQtMzcuNSAtMTQuNWgtNTRxLTIwIDAgLTM3LjUgMTQuNXQtMjEuNSAzNC41bC01OCAyNTJxLTQgMjAgOCAzNC41dDMyIDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik02NTAgMTIwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnYtMzM5bDM2MyAtMzI1cTE1IC0xNCAyNiAtMzguNXQxMSAtNDQuNXYtNDFxMCAtMjAgLTEyIC0yNi41dC0yOSA1LjVsLTM1OSAyNDl2LTI2M3ExMDAgLTkzIDEwMCAtMTEzdi02NHEwIC0yMSAtMTMgLTI5dC0zMiAxbC0yMDUgMTI4bC0yMDUgLTEyOHEtMTkgLTkgLTMyIC0xdC0xMyAyOXY2NHEwIDIwIDEwMCAxMTN2MjYzbC0zNTkgLTI0OXEtMTcgLTEyIC0yOSAtNS41dC0xMiAyNi41djQxIHEwIDIwIDExIDQ0LjV0MjYgMzguNWwzNjMgMzI1djMzOXEwIDYyIDQ0IDEwNnQxMDYgNDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik04NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTExMDB2MTUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMTAwIDgwMHYtNzUwcTAgLTIxIC0xNC41IC0zNS41IHQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NzUwaDExMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTcwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTkwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA0MDAgdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek0xMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek0zMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek01MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTA7IiBkPSJNMTEzNSAxMTY1bDI0OSAtMjMwcTE1IC0xNCAxNSAtMzV0LTE1IC0zNWwtMjQ5IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC0xNTlsLTYwMCAtNjAwaC0yOTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjA5bDYwMCA2MDBoMjQxdjE1MHEwIDIxIDEwLjUgMjV0MjQuNSAtMTB6TTUyMiA4MTlsLTE0MSAtMTQxbC0xMjIgMTIyaC0yMDlxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI5MXpNMTEzNSA1NjVsMjQ5IC0yMzBxMTUgLTE0IDE1IC0zNXQtMTUgLTM1bC0yNDkgLTIzMHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYxNTBoLTI0MWwtMTgxIDE4MWwxNDEgMTQxbDEyMiAtMTIyaDE1OXYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMTAwIDExMDBoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01OTZsLTMwNCAtMzAwdjMwMGgtMTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTMwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMzAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTExMDAgODAwdi0zMDBxMCAtNDEgLTMgLTc3LjV0LTE1IC04OS41dC0zMiAtOTZ0LTU4IC04OXQtODkgLTc3dC0xMjkgLTUxdC0xNzQgLTIwdC0xNzQgMjAgdC0xMjkgNTF0LTg5IDc3dC01OCA4OXQtMzIgOTZ0LTE1IDg5LjV0LTMgNzcuNXYzMDBoMzAwdi0yNTB2LTI3di00Mi41dDEuNSAtNDF0NSAtMzh0MTAgLTM1dDE2LjUgLTMwdDI1LjUgLTI0LjV0MzUgLTE5dDQ2LjUgLTEydDYwIC00dDYwIDQuNXQ0Ni41IDEyLjV0MzUgMTkuNXQyNSAyNS41dDE3IDMwLjV0MTAgMzV0NSAzOHQyIDQwLjV0LTAuNSA0MnYyNXYyNTBoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNMTEwMCA0MTFsLTE5OCAtMTk5bC0zNTMgMzUzbC0zNTMgLTM1M2wtMTk3IDE5OWw1NTEgNTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTQ7IiBkPSJNMTEwMSA3ODlsLTU1MCAtNTUxbC01NTEgNTUxbDE5OCAxOTlsMzUzIC0zNTNsMzUzIDM1M3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE1OyIgZD0iTTQwNCAxMDAwaDc0NnEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUxaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtMjMwIC0yNDlxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI0OXEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNWgxNTB2NDAxaC0zODF6TTEzNSA5ODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi00MDBoMzg1bDIxNSAtMjAwaC03NTBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXY1NTBoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTY7IiBkPSJNNTYgMTIwMGg5NHExNyAwIDMxIC0xMXQxOCAtMjdsMzggLTE2Mmg4OTZxMjQgMCAzOSAtMTguNXQxMCAtNDIuNWwtMTAwIC00NzVxLTUgLTIxIC0yNyAtNDIuNXQtNTUgLTIxLjVoLTYzM2w0OCAtMjAwaDUzNXEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41dC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MGgtMzAwdi01MCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaC0zMXEtMTggMCAtMzIuNSAxMHQtMjAuNSAxOWwtNSAxMGwtMjAxIDk2MWgtNTRxLTIwIDAgLTM1IDE0LjV0LTE1IDM1LjV0MTUgMzUuNXQzNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMTIwMCAxMDAwdi0xMDBoLTEyMDB2MTAwaDIwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41aDUwMHpNMCA4MDBoMTIwMHYtODAwaC0xMjAwdjgwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTIwMCA4MDBsLTIwMCAtNDAwdjYwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MiAwIDcxIC0yOS41dDI5IC03MC41aDUwMHYtMjAwaC0xMDAwek0xNTAwIDcwMGwtMzAwIC03MDBoLTEyMDBsMzAwIDcwMGgxMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTk7IiBkPSJNNjM1IDExODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi02MDFoMTUwcTIxIDAgMjUgLTEwLjV0LTEwIC0yNC41bC0yMzAgLTI0OXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjQ5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41aDE1MHY2MDFoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNOTM2IDg2NGwyNDkgLTIyOXExNCAtMTUgMTQgLTM1LjV0LTE0IC0zNS41bC0yNDkgLTIyOXEtMTUgLTE1IC0yNS41IC0xMC41dC0xMC41IDI0LjV2MTUxaC02MDB2LTE1MXEwIC0yMCAtMTAuNSAtMjQuNXQtMjUuNSAxMC41bC0yNDkgMjI5cS0xNCAxNSAtMTQgMzUuNXQxNCAzNS41bDI0OSAyMjlxMTUgMTUgMjUuNSAxMC41dDEwLjUgLTI1LjV2LTE0OWg2MDB2MTQ5cTAgMjEgMTAuNSAyNS41dDI1LjUgLTEwLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0xMTY5IDQwMGwtMTcyIDczMnEtNSAyMyAtMjMgNDUuNXQtMzggMjIuNWgtNjcycS0yMCAwIC0zOCAtMjB0LTIzIC00MWwtMTcyIC03MzloMTEzOHpNMTEwMCAzMDBoLTEwMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTEwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek04MDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwIHpNMTAwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMjsiIGQ9Ik0xMTUwIDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTg1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUuNSAxNC41dC0xNC41IDM1LjV2ODUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTAwMCAyMDBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMyAtMTYgLTUuNSAtMjB0LTI5LjUgLTRoLTdoLTg0cS0yMCAwIC0zNC41IDE0dC0xOC41IDM1cS01NSAzMzcgLTU1IDM1MXYyNTB2NnEwIDE2IDEgMjMuNXQ2LjUgMTQgdDE3LjUgNi41aDIwMGw2NzUgMjUwdi04NTB6TTAgNzUwdi0yNTBxLTQgMCAtMTEgMC41dC0yNCA2dC0zMCAxNXQtMjQgMzB0LTExIDQ4LjV2NTBxMCAyNiAxMC41IDQ2dDI1IDMwdDI5IDE2dDI1LjUgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTIzOyIgZD0iTTU1MyAxMjAwaDk0cTIwIDAgMjkgLTEwLjV0MyAtMjkuNWwtMTggLTM3cTgzIC0xOSAxNDQgLTgyLjV0NzYgLTE0MC41bDYzIC0zMjdsMTE4IC0xNzNoMTdxMTkgMCAzMyAtMTQuNXQxNCAtMzV0LTEzIC00MC41dC0zMSAtMjdxLTggLTQgLTIzIC05LjV0LTY1IC0xOS41dC0xMDMgLTI1dC0xMzIuNSAtMjB0LTE1OC41IC05cS01NyAwIC0xMTUgNXQtMTA0IDEydC04OC41IDE1LjV0LTczLjUgMTcuNXQtNTQuNSAxNnQtMzUuNSAxMmwtMTEgNCBxLTE4IDggLTMxIDI4dC0xMyA0MC41dDE0IDM1dDMzIDE0LjVoMTdsMTE4IDE3M2w2MyAzMjdxMTUgNzcgNzYgMTQwdDE0NCA4M2wtMTggMzJxLTYgMTkgMy41IDMydDI4LjUgMTN6TTQ5OCAxMTBxNTAgLTYgMTAyIC02cTUzIDAgMTAyIDZxLTEyIC00OSAtMzkuNSAtNzkuNXQtNjIuNSAtMzAuNXQtNjMgMzAuNXQtMzkgNzkuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI0OyIgZD0iTTgwMCA5NDZsMjI0IDc4bC03OCAtMjI0bDIzNCAtNDVsLTE4MCAtMTU1bDE4MCAtMTU1bC0yMzQgLTQ1bDc4IC0yMjRsLTIyNCA3OGwtNDUgLTIzNGwtMTU1IDE4MGwtMTU1IC0xODBsLTQ1IDIzNGwtMjI0IC03OGw3OCAyMjRsLTIzNCA0NWwxODAgMTU1bC0xODAgMTU1bDIzNCA0NWwtNzggMjI0bDIyNCAtNzhsNDUgMjM0bDE1NSAtMTgwbDE1NSAxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNTsiIGQ9Ik02NTAgMTIwMGg1MHE0MCAwIDcwIC00MC41dDMwIC04NC41di0xNTBsLTI4IC0xMjVoMzI4cTQwIDAgNzAgLTQwLjV0MzAgLTg0LjV2LTEwMHEwIC00NSAtMjkgLTc0bC0yMzggLTM0NHEtMTYgLTI0IC0zOCAtNDAuNXQtNDUgLTE2LjVoLTI1MHEtNyAwIC00MiAyNXQtNjYgNTBsLTMxIDI1aC02MXEtNDUgMCAtNzIuNSAxOHQtMjcuNSA1N3Y0MDBxMCAzNiAyMCA2M2wxNDUgMTk2bDk2IDE5OHExMyAyOCAzNy41IDQ4dDUxLjUgMjB6IE02NTAgMTEwMGwtMTAwIC0yMTJsLTE1MCAtMjEzdi0zNzVoMTAwbDEzNiAtMTAwaDIxNGwyNTAgMzc1djEyNWgtNDUwbDUwIDIyNXYxNzVoLTUwek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTYwMCAxMTAwaDI1MHEyMyAwIDQ1IC0xNi41dDM4IC00MC41bDIzOCAtMzQ0cTI5IC0yOSAyOSAtNzR2LTEwMHEwIC00NCAtMzAgLTg0LjV0LTcwIC00MC41aC0zMjhxMjggLTExOCAyOCAtMTI1di0xNTBxMCAtNDQgLTMwIC04NC41dC03MCAtNDAuNWgtNTBxLTI3IDAgLTUxLjUgMjB0LTM3LjUgNDhsLTk2IDE5OGwtMTQ1IDE5NnEtMjAgMjcgLTIwIDYzdjQwMHEwIDM5IDI3LjUgNTd0NzIuNSAxOGg2MXExMjQgMTAwIDEzOSAxMDB6IE01MCAxMDAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTYzNiAxMDAwbC0xMzYgLTEwMGgtMTAwdi0zNzVsMTUwIC0yMTNsMTAwIC0yMTJoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjc7IiBkPSJNMzU2IDg3M2wzNjMgMjMwcTMxIDE2IDUzIC02bDExMCAtMTEycTEzIC0xMyAxMy41IC0zMnQtMTEuNSAtMzRsLTg0IC0xMjFoMzAycTg0IDAgMTM4IC0zOHQ1NCAtMTEwdC01NSAtMTExdC0xMzkgLTM5aC0xMDZsLTEzMSAtMzM5cS02IC0yMSAtMTkuNSAtNDF0LTI4LjUgLTIwaC0zNDJxLTcgMCAtOTAgODF0LTgzIDk0djUyNXEwIDE3IDE0IDM1LjV0MjggMjguNXpNNDAwIDc5MnYtNTAzbDEwMCAtODloMjkzbDEzMSAzMzkgcTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3EyMSAwIDMwLjUgMjV0MC41IDUwdC0zMSAyNWgtNDU2aC03aC02aC01LjV0LTYgMC41dC01IDEuNXQtNSAydC00IDIuNXQtNCA0dC0yLjUgNC41cS0xMiAyNSA1IDQ3bDE0NiAxODNsLTg2IDgzek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwIHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik00NzUgMTEwM2wzNjYgLTIzMHEyIC0xIDYgLTMuNXQxNCAtMTAuNXQxOCAtMTYuNXQxNC41IC0yMHQ2LjUgLTIyLjV2LTUyNXEwIC0xMyAtODYgLTk0dC05MyAtODFoLTM0MnEtMTUgMCAtMjguNSAyMHQtMTkuNSA0MWwtMTMxIDMzOWgtMTA2cS04NSAwIC0xMzkuNSAzOXQtNTQuNSAxMTF0NTQgMTEwdDEzOCAzOGgzMDJsLTg1IDEyMXEtMTEgMTUgLTEwLjUgMzR0MTMuNSAzMmwxMTAgMTEycTIyIDIyIDUzIDZ6TTM3MCA5NDVsMTQ2IC0xODMgcTE3IC0yMiA1IC00N3EtMiAtMiAtMy41IC00LjV0LTQgLTR0LTQgLTIuNXQtNSAtMnQtNSAtMS41dC02IC0wLjVoLTZoLTYuNWgtNmgtNDc1di0xMDBoMjIxcTE1IDAgMjkgLTIwdDIwIC00MWwxMzAgLTMzOWgyOTRsMTA2IDg5djUwM2wtMzQyIDIzNnpNMTA1MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjUgdjUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyOTsiIGQ9Ik01NTAgMTI5NHE3MiAwIDExMSAtNTV0MzkgLTEzOXYtMTA2bDMzOSAtMTMxcTIxIC02IDQxIC0xOS41dDIwIC0yOC41di0zNDJxMCAtNyAtODEgLTkwdC05NCAtODNoLTUyNXEtMTcgMCAtMzUuNSAxNHQtMjguNSAyOGwtOSAxNGwtMjMwIDM2M3EtMTYgMzEgNiA1M2wxMTIgMTEwcTEzIDEzIDMyIDEzLjV0MzQgLTExLjVsMTIxIC04NHYzMDJxMCA4NCAzOCAxMzh0MTEwIDU0ek02MDAgOTcydjIwM3EwIDIxIC0yNSAzMC41dC01MCAwLjUgdC0yNSAtMzF2LTQ1NnYtN3YtNnYtNS41dC0wLjUgLTZ0LTEuNSAtNXQtMiAtNXQtMi41IC00dC00IC00dC00LjUgLTIuNXEtMjUgLTEyIC00NyA1bC0xODMgMTQ2bC04MyAtODZsMjM2IC0zMzloNTAzbDg5IDEwMHYyOTNsLTMzOSAxMzFxLTIxIDYgLTQxIDE5LjV0LTIwIDI4LjV6TTQ1MCAyMDBoNTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTUwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0zNTAgMTEwMGg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41ek02MDAgMzA2di0xMDZxMCAtODQgLTM5IC0xMzl0LTExMSAtNTV0LTExMCA1NHQtMzggMTM4djMwMmwtMTIxIC04NHEtMTUgLTEyIC0zNCAtMTEuNXQtMzIgMTMuNWwtMTEyIDExMCBxLTIyIDIyIC02IDUzbDIzMCAzNjNxMSAyIDMuNSA2dDEwLjUgMTMuNXQxNi41IDE3dDIwIDEzLjV0MjIuNSA2aDUyNXExMyAwIDk0IC04M3Q4MSAtOTB2LTM0MnEwIC0xNSAtMjAgLTI4LjV0LTQxIC0xOS41ek0zMDggOTAwbC0yMzYgLTMzOWw4MyAtODZsMTgzIDE0NnEyMiAxNyA0NyA1cTIgLTEgNC41IC0yLjV0NCAtNHQyLjUgLTR0MiAtNXQxLjUgLTV0MC41IC02di01LjV2LTZ2LTd2LTQ1NnEwIC0yMiAyNSAtMzF0NTAgMC41dDI1IDMwLjUgdjIwM3EwIDE1IDIwIDI4LjV0NDEgMTkuNWwzMzkgMTMxdjI5M2wtODkgMTAwaC01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMTsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNOTE0IDYzMmwtMjc1IDIyM3EtMTYgMTMgLTI3LjUgOHQtMTEuNSAtMjZ2LTEzN2gtMjc1IHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDI3NXYtMTM3cTAgLTIxIDExLjUgLTI2dDI3LjUgOGwyNzUgMjIzcTE2IDEzIDE2IDMydC0xNiAzMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTMyOyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek01NjEgODU1bC0yNzUgLTIyM3EtMTYgLTEzIC0xNiAtMzJ0MTYgLTMybDI3NSAtMjIzcTE2IC0xMyAyNy41IC04IHQxMS41IDI2djEzN2gyNzVxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXYxNTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC0yNzV2MTM3cTAgMjEgLTExLjUgMjZ0LTI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMzsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNODU1IDYzOWwtMjIzIDI3NXEtMTMgMTYgLTMyIDE2dC0zMiAtMTZsLTIyMyAtMjc1cS0xMyAtMTYgLTggLTI3LjUgdDI2IC0xMS41aDEzN3YtMjc1cTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2Mjc1aDEzN3EyMSAwIDI2IDExLjV0LTggMjcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM0OyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek02NzUgOTAwaC0xNTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0yNzVoLTEzN3EtMjEgMCAtMjYgLTExLjUgdDggLTI3LjVsMjIzIC0yNzVxMTMgLTE2IDMyIC0xNnQzMiAxNmwyMjMgMjc1cTEzIDE2IDggMjcuNXQtMjYgMTEuNWgtMTM3djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik02MDAgMTE3NnExMTYgMCAyMjIuNSAtNDZ0MTg0IC0xMjMuNXQxMjMuNSAtMTg0dDQ2IC0yMjIuNXQtNDYgLTIyMi41dC0xMjMuNSAtMTg0dC0xODQgLTEyMy41dC0yMjIuNSAtNDZ0LTIyMi41IDQ2dC0xODQgMTIzLjV0LTEyMy41IDE4NHQtNDYgMjIyLjV0NDYgMjIyLjV0MTIzLjUgMTg0dDE4NCAxMjMuNXQyMjIuNSA0NnpNNjI3IDExMDFxLTE1IC0xMiAtMzYuNSAtMjAuNXQtMzUuNSAtMTJ0LTQzIC04dC0zOSAtNi41IHEtMTUgLTMgLTQ1LjUgMHQtNDUuNSAtMnEtMjAgLTcgLTUxLjUgLTI2LjV0LTM0LjUgLTM0LjVxLTMgLTExIDYuNSAtMjIuNXQ4LjUgLTE4LjVxLTMgLTM0IC0yNy41IC05MXQtMjkuNSAtNzlxLTkgLTM0IDUgLTkzdDggLTg3cTAgLTkgMTcgLTQ0LjV0MTYgLTU5LjVxMTIgMCAyMyAtNXQyMy41IC0xNXQxOS41IC0xNHExNiAtOCAzMyAtMTV0NDAuNSAtMTV0MzQuNSAtMTJxMjEgLTkgNTIuNSAtMzJ0NjAgLTM4dDU3LjUgLTExIHE3IC0xNSAtMyAtMzR0LTIyLjUgLTQwdC05LjUgLTM4cTEzIC0yMSAyMyAtMzQuNXQyNy41IC0yNy41dDM2LjUgLTE4cTAgLTcgLTMuNSAtMTZ0LTMuNSAtMTR0NSAtMTdxMTA0IC0yIDIyMSAxMTJxMzAgMjkgNDYuNSA0N3QzNC41IDQ5dDIxIDYzcS0xMyA4IC0zNyA4LjV0LTM2IDcuNXEtMTUgNyAtNDkuNSAxNXQtNTEuNSAxOXEtMTggMCAtNDEgLTAuNXQtNDMgLTEuNXQtNDIgLTYuNXQtMzggLTE2LjVxLTUxIC0zNSAtNjYgLTEyIHEtNCAxIC0zLjUgMjUuNXQwLjUgMjUuNXEtNiAxMyAtMjYuNSAxNy41dC0yNC41IDYuNXExIDE1IC0wLjUgMzAuNXQtNyAyOHQtMTguNSAxMS41dC0zMSAtMjFxLTIzIC0yNSAtNDIgNHEtMTkgMjggLTggNThxNiAxNiAyMiAyMnE2IC0xIDI2IC0xLjV0MzMuNSAtNHQxOS41IC0xMy41cTcgLTEyIDE4IC0yNHQyMS41IC0yMC41dDIwIC0xNXQxNS41IC0xMC41bDUgLTNxMiAxMiA3LjUgMzAuNXQ4IDM0LjV0LTAuNSAzMnEtMyAxOCAzLjUgMjkgdDE4IDIyLjV0MTUuNSAyNC41cTYgMTQgMTAuNSAzNXQ4IDMxdDE1LjUgMjIuNXQzNCAyMi41cS02IDE4IDEwIDM2cTggMCAyNCAtMS41dDI0LjUgLTEuNXQyMCA0LjV0MjAuNSAxNS41cS0xMCAyMyAtMzEgNDIuNXQtMzcuNSAyOS41dC00OSAyN3QtNDMuNSAyM3EwIDEgMiA4dDMgMTEuNXQxLjUgMTAuNXQtMSA5LjV0LTQuNSA0LjVxMzEgLTEzIDU4LjUgLTE0LjV0MzguNSAyLjVsMTIgNXE1IDI4IC05LjUgNDZ0LTM2LjUgMjR0LTUwIDE1IHQtNDEgMjBxLTE4IC00IC0zNyAwek02MTMgOTk0cTAgLTE3IDggLTQydDE3IC00NXQ5IC0yM3EtOCAxIC0zOS41IDUuNXQtNTIuNSAxMHQtMzcgMTYuNXEzIDExIDE2IDI5LjV0MTYgMjUuNXExMCAtMTAgMTkgLTEwdDE0IDZ0MTMuNSAxNC41dDE2LjUgMTIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM2OyIgZD0iTTc1NiAxMTU3cTE2NCA5MiAzMDYgLTlsLTI1OSAtMTM4bDE0NSAtMjMybDI1MSAxMjZxNiAtODkgLTM0IC0xNTYuNXQtMTE3IC0xMTAuNXEtNjAgLTM0IC0xMjcgLTM5LjV0LTEyNiAxNi41bC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV0MTUgMzcuNWw2MDAgNTk5cS0zNCAxMDEgNS41IDIwMS41dDEzNS41IDE1NC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzc7IiBob3Jpei1hZHYteD0iMTIyMCIgZD0iTTEwMCAxMTk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAxMDk2aC0yMDB2LTEwMGgyMDB2MTAwek0xMDAgNzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTExMDAgNjk2aC01MDB2LTEwMGg1MDB2MTAwek0xMDAgMzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAyOTZoLTMwMHYtMTAwaDMwMHYxMDB6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzg7IiBkPSJNMTUwIDEyMDBoOTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41dC0xNC41IC0zNS41dC0zNS41IC0xNC41aC05MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA1MDB2LTMwMGwtMjAwIC0yMDB2NTAwbC0zNTAgNTAwaDkwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTUwMCAxMjAwaDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAwdjQwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwdjEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTUwMCAxMTAwdi0xMDBoMjAwdjEwMGgtMjAwek0xMjAwIDQwMHYtMjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwIHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MjAwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik01MCAxMjAwaDMwMHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtOTQgLTk0bDE5OSAtMTk5cTcgLTggNyAtMTh0LTcgLTE4bC0xMDYgLTEwNnEtOCAtNyAtMTggLTd0LTE4IDdsLTE5OSAxOTlsLTk0IC05NHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMTk5IC0xOTlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwxOTkgMTk5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNMzY0IDQ3MGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMTk5IC0xOTlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMTk5IDE5OSBxOCA3IDE4IDd0MTggLTd6TTEwNzEgMjcxbDk0IDk0cTE0IDE0IDI0LjUgMTB0MTAuNSAtMjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0yNSAxMC41dDEwIDI0LjVsOTQgOTRsLTE5OSAxOTlxLTcgOCAtNyAxOHQ3IDE4bDEwNiAxMDZxOCA3IDE4IDd0MTggLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik01OTYgMTE5MnExMjEgMCAyMzEuNSAtNDcuNXQxOTAgLTEyN3QxMjcgLTE5MHQ0Ny41IC0yMzEuNXQtNDcuNSAtMjMxLjV0LTEyNyAtMTkwLjV0LTE5MCAtMTI3dC0yMzEuNSAtNDd0LTIzMS41IDQ3dC0xOTAuNSAxMjd0LTEyNyAxOTAuNXQtNDcgMjMxLjV0NDcgMjMxLjV0MTI3IDE5MHQxOTAuNSAxMjd0MjMxLjUgNDcuNXpNNTk2IDEwMTBxLTExMiAwIC0yMDcuNSAtNTUuNXQtMTUxIC0xNTF0LTU1LjUgLTIwNy41dDU1LjUgLTIwNy41IHQxNTEgLTE1MXQyMDcuNSAtNTUuNXQyMDcuNSA1NS41dDE1MSAxNTF0NTUuNSAyMDcuNXQtNTUuNSAyMDcuNXQtMTUxIDE1MXQtMjA3LjUgNTUuNXpNNDU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOC41IC0xNi41dC0zOC41IDE2LjV0LTE2IDM5dDE2IDM4LjV0MzguNSAxNnpNNzU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOCAtMTYuNXEtMTQgMCAtMjkgMTBsLTU1IC0xNDUgcTE3IC0yMyAxNyAtNTFxMCAtMzYgLTI1LjUgLTYxLjV0LTYxLjUgLTI1LjV0LTYxLjUgMjUuNXQtMjUuNSA2MS41cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIzIDE2IDM5dDM4LjUgMTZ6TTM0NS41IDcwOXEyMi41IDAgMzguNSAtMTZ0MTYgLTM4LjV0LTE2IC0zOC41dC0zOC41IC0xNnQtMzguNSAxNnQtMTYgMzguNXQxNiAzOC41dDM4LjUgMTZ6TTg1NC41IDcwOXEyMi41IDAgMzguNSAtMTYgdDE2IC0zOC41dC0xNiAtMzguNXQtMzguNSAtMTZ0LTM4LjUgMTZ0LTE2IDM4LjV0MTYgMzguNXQzOC41IDE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDI7IiBkPSJNNTQ2IDE3M2w0NjkgNDcwcTkxIDkxIDk5IDE5MnE3IDk4IC01MiAxNzUuNXQtMTU0IDk0LjVxLTIyIDQgLTQ3IDRxLTM0IDAgLTY2LjUgLTEwdC01Ni41IC0yM3QtNTUuNSAtMzh0LTQ4IC00MS41dC00OC41IC00Ny41cS0zNzYgLTM3NSAtMzkxIC0zOTBxLTMwIC0yNyAtNDUgLTQxLjV0LTM3LjUgLTQxdC0zMiAtNDYuNXQtMTYgLTQ3LjV0LTEuNSAtNTYuNXE5IC02MiA1My41IC05NXQ5OS41IC0zM3E3NCAwIDEyNSA1MWw1NDggNTQ4IHEzNiAzNiAyMCA3NXEtNyAxNiAtMjEuNSAyNnQtMzIuNSAxMHEtMjYgMCAtNTAgLTIzcS0xMyAtMTIgLTM5IC0zOGwtMzQxIC0zMzhxLTE1IC0xNSAtMzUuNSAtMTUuNXQtMzQuNSAxMy41dC0xNCAzNC41dDE0IDM0LjVxMzI3IDMzMyAzNjEgMzY3cTM1IDM1IDY3LjUgNTEuNXQ3OC41IDE2LjVxMTQgMCAyOSAtMXE0NCAtOCA3NC41IC0zNS41dDQzLjUgLTY4LjVxMTQgLTQ3IDIgLTk2LjV0LTQ3IC04NC41cS0xMiAtMTEgLTMyIC0zMiB0LTc5LjUgLTgxdC0xMTQuNSAtMTE1dC0xMjQuNSAtMTIzLjV0LTEyMyAtMTE5LjV0LTk2LjUgLTg5dC01NyAtNDVxLTU2IC0yNyAtMTIwIC0yN3EtNzAgMCAtMTI5IDMydC05MyA4OXEtNDggNzggLTM1IDE3M3Q4MSAxNjNsNTExIDUxMXE3MSA3MiAxMTEgOTZxOTEgNTUgMTk4IDU1cTgwIDAgMTUyIC0zM3E3OCAtMzYgMTI5LjUgLTEwM3Q2Ni41IC0xNTRxMTcgLTkzIC0xMSAtMTgzLjV0LTk0IC0xNTYuNWwtNDgyIC00NzYgcS0xNSAtMTUgLTM2IC0xNnQtMzcgMTR0LTE3LjUgMzR0MTQuNSAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTY0OSA5NDlxNDggNjggMTA5LjUgMTA0dDEyMS41IDM4LjV0MTE4LjUgLTIwdDEwMi41IC02NHQ3MSAtMTAwLjV0MjcgLTEyM3EwIC01NyAtMzMuNSAtMTE3LjV0LTk0IC0xMjQuNXQtMTI2LjUgLTEyNy41dC0xNTAgLTE1Mi41dC0xNDYgLTE3NHEtNjIgODUgLTE0NS41IDE3NHQtMTUwIDE1Mi41dC0xMjYuNSAxMjcuNXQtOTMuNSAxMjQuNXQtMzMuNSAxMTcuNXEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQgNjR0MTE5IDIwIHQxMjAuNSAtMzguNXQxMDQuNSAtMTA0ek04OTYgOTcycS0zMyAwIC02NC41IC0xOXQtNTYuNSAtNDZ0LTQ3LjUgLTUzLjV0LTQzLjUgLTQ1LjV0LTM3LjUgLTE5dC0zNiAxOXQtNDAgNDUuNXQtNDMgNTMuNXQtNTQgNDZ0LTY1LjUgMTlxLTY3IDAgLTEyMi41IC01NS41dC01NS41IC0xMzIuNXEwIC0yMyAxMy41IC01MXQ0NiAtNjV0NTcuNSAtNjN0NzYgLTc1bDIyIC0yMnExNSAtMTQgNDQgLTQ0dDUwLjUgLTUxdDQ2IC00NHQ0MSAtMzV0MjMgLTEyIHQyMy41IDEydDQyLjUgMzZ0NDYgNDR0NTIuNSA1MnQ0NCA0M3E0IDQgMTIgMTNxNDMgNDEgNjMuNSA2MnQ1MiA1NXQ0NiA1NXQyNiA0NnQxMS41IDQ0cTAgNzkgLTUzIDEzMy41dC0xMjAgNTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTc3Ni41IDEyMTRxOTMuNSAwIDE1OS41IC02NmwxNDEgLTE0MXE2NiAtNjYgNjYgLTE2MHEwIC00MiAtMjggLTk1LjV0LTYyIC04Ny41bC0yOSAtMjlxLTMxIDUzIC03NyA5OWwtMTggMThsOTUgOTVsLTI0NyAyNDhsLTM4OSAtMzg5bDIxMiAtMjEybC0xMDUgLTEwNmwtMTkgMThsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTl0NjYgMTU5bDI4MyAyODNxNjUgNjYgMTU4LjUgNjZ6TTYwMCA3MDZsMTA1IDEwNXExMCAtOCAxOSAtMTdsMTQxIC0xNDEgcTY2IC02NiA2NiAtMTU5dC02NiAtMTU5bC0yODMgLTI4M3EtNjYgLTY2IC0xNTkgLTY2dC0xNTkgNjZsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTkuNXQ2NiAxNTkuNWw1NSA1NXEyOSAtNTUgNzUgLTEwMmwxOCAtMTdsLTk1IC05NWwyNDcgLTI0OGwzODkgMzg5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNNjAzIDEyMDBxODUgMCAxNjIgLTE1dDEyNyAtMzh0NzkgLTQ4dDI5IC00NnYtOTUzcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djk1M3EwIDIxIDMwIDQ2LjV0ODEgNDh0MTI5IDM3LjV0MTYzIDE1ek0zMDAgMTAwMHYtNzAwaDYwMHY3MDBoLTYwMHpNNjAwIDI1NHEtNDMgMCAtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXQzMC41IC03My41dDczLjUgLTMwLjV0NzMuNSAzMC41IHQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDY7IiBkPSJNOTAyIDExODVsMjgzIC0yODJxMTUgLTE1IDE1IC0zNnQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUgMTVsLTM2IDM1bC0yNzkgLTI2N3YtMzAwbC0yMTIgMjEwbC0zMDggLTMwN2wtMjgwIC0yMDNsMjAzIDI4MGwzMDcgMzA4bC0yMTAgMjEyaDMwMGwyNjcgMjc5bC0zNSAzNnEtMTUgMTQgLTE1IDM1dDE0LjUgMzUuNXQzNS41IDE0LjV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDg7IiBkPSJNNzAwIDEyNDh2LTc4cTM4IC01IDcyLjUgLTE0LjV0NzUuNSAtMzEuNXQ3MSAtNTMuNXQ1MiAtODR0MjQgLTExOC41aC0xNTlxLTQgMzYgLTEwLjUgNTl0LTIxIDQ1dC00MCAzNS41dC02NC41IDIwLjV2LTMwN2w2NCAtMTNxMzQgLTcgNjQgLTE2LjV0NzAgLTMydDY3LjUgLTUyLjV0NDcuNSAtODB0MjAgLTExMnEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTd2LTc3aC0xMDB2NzlxLTE1MCAxNiAtMjM3IDEwM3EtNDAgNDAgLTUyLjUgOTMuNSB0LTE1LjUgMTM5LjVoMTM5cTUgLTc3IDQ4LjUgLTEyNnQxMTcuNSAtNjV2MzM1bC0yNyA4cS00NiAxNCAtNzkgMjYuNXQtNzIgMzZ0LTYzIDUydC00MCA3Mi41dC0xNiA5OHEwIDcwIDI1IDEyNnQ2Ny41IDkydDk0LjUgNTd0MTEwIDI3djc3aDEwMHpNNjAwIDc1NHYyNzRxLTI5IC00IC01MCAtMTF0LTQyIC0yMS41dC0zMS41IC00MS41dC0xMC41IC02NXEwIC0yOSA3IC01MC41dDE2LjUgLTM0dDI4LjUgLTIyLjV0MzEuNSAtMTR0MzcuNSAtMTAgcTkgLTMgMTMgLTR6TTcwMCA1NDd2LTMxMHEyMiAyIDQyLjUgNi41dDQ1IDE1LjV0NDEuNSAyN3QyOSA0MnQxMiA1OS41dC0xMi41IDU5LjV0LTM4IDQ0LjV0LTUzIDMxdC02Ni41IDI0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0OTsiIGQ9Ik01NjEgMTE5N3E4NCAwIDE2MC41IC00MHQxMjMuNSAtMTA5LjV0NDcgLTE0Ny41aC0xNTNxMCA0MCAtMTkuNSA3MS41dC00OS41IDQ4LjV0LTU5LjUgMjZ0LTU1LjUgOXEtMzcgMCAtNzkgLTE0LjV0LTYyIC0zNS41cS00MSAtNDQgLTQxIC0xMDFxMCAtMjYgMTMuNSAtNjN0MjYuNSAtNjF0MzcgLTY2cTYgLTkgOSAtMTRoMjQxdi0xMDBoLTE5N3E4IC01MCAtMi41IC0xMTV0LTMxLjUgLTk1cS00NSAtNjIgLTk5IC0xMTIgcTM0IDEwIDgzIDE3LjV0NzEgNy41cTMyIDEgMTAyIC0xNnQxMDQgLTE3cTgzIDAgMTM2IDMwbDUwIC0xNDdxLTMxIC0xOSAtNTggLTMwLjV0LTU1IC0xNS41dC00MiAtNC41dC00NiAtMC41cS0yMyAwIC03NiAxN3QtMTExIDMyLjV0LTk2IDExLjVxLTM5IC0zIC04MiAtMTZ0LTY3IC0yNWwtMjMgLTExbC01NSAxNDVxNCAzIDE2IDExdDE1LjUgMTAuNXQxMyA5dDE1LjUgMTJ0MTQuNSAxNHQxNy41IDE4LjVxNDggNTUgNTQgMTI2LjUgdC0zMCAxNDIuNWgtMjIxdjEwMGgxNjZxLTIzIDQ3IC00NCAxMDRxLTcgMjAgLTEyIDQxLjV0LTYgNTUuNXQ2IDY2LjV0MjkuNSA3MC41dDU4LjUgNzFxOTcgODggMjYzIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTA7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkzNSAxMTg0bDIzMCAtMjQ5cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTE1MHYtOTAwaC0yMDB2OTAwaC0xNTBxLTIxIDAgLTI1IDEwLjV0MTAgMjQuNWwyMzAgMjQ5cTE0IDE1IDM1IDE1dDM1IC0xNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTEwMDAgNzAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwdjUwMGgzMDB2LTUwMHpNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTgwMSAxMTAwdi0yMDBoMTAwdjIwMGgtMTAwek0xMDAwIDM1MGwtMjAwIC0yNTBoMjAwdi0xMDBoLTMwMHYxNTBsMjAwIDI1MGgtMjAwdjEwMGgzMDB2LTE1MHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MjsiIGQ9Ik00MDAgMzAwaDE1MHEyMSAwIDI1IC0xMXQtMTAgLTI1bC0yMzAgLTI1MHEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjUwcS0xNCAxNCAtMTAgMjV0MjUgMTFoMTUwdjkwMGgyMDB2LTkwMHpNMTAwMCAxMDUwbC0yMDAgLTI1MGgyMDB2LTEwMGgtMzAwdjE1MGwyMDAgMjUwaC0yMDB2MTAwaDMwMHYtMTUwek0xMDAwIDBoLTEwMHYxMDBoLTEwMHYtMTAwaC0xMDB2NTAwaDMwMHYtNTAwek04MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUzOyIgZD0iTTQwMCAzMDBoMTUwcTIxIDAgMjUgLTExdC0xMCAtMjVsLTIzMCAtMjUwcS0xNCAtMTUgLTM1IC0xNXQtMzUgMTVsLTIzMCAyNTBxLTE0IDE0IC0xMCAyNXQyNSAxMWgxNTB2OTAwaDIwMHYtOTAwek0xMDAwIDcwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMTEwMCAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTQ7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTExMDAgNzAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgMTEwMHYtMjAwaDEwMHYyMDBoLTEwMHpNMTAwMCAwaC0xMDB2NDAwaC0xMDB2MTAwaDIwMHYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTU7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkwMCAxMDAwaC0yMDB2MjAwaDIwMHYtMjAwek0xMDAwIDcwMGgtMzAwdjIwMGgzMDB2LTIwMHpNMTEwMCA0MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEyMDAgMTAwaC01MDB2MjAwaDUwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTY7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTEyMDAgMTAwMGgtNTAwdjIwMGg1MDB2LTIwMHpNMTEwMCA3MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEwMDAgNDAwaC0zMDB2MjAwaDMwMHYtMjAwek05MDAgMTAwaC0yMDB2MjAwaDIwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMzUwIDExMDBoNDAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTQwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTg7IiBkPSJNMzUwIDExMDBoNDAwcTE2NSAwIDI1Ny41IC05Mi41dDkyLjUgLTI1Ny41di00MDBxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTYzIDAgLTI1Ni41IDkyLjV0LTkzLjUgMjU3LjV2NDAwcTAgMTYzIDk0IDI1Ni41dDI1NiA5My41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek00NDAgNzcwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0zNTAgMTEwMGg0MDBxMTYzIDAgMjU2LjUgLTk0dDkzLjUgLTI1NnYtNDAwcTAgLTE2NSAtOTIuNSAtMjU3LjV0LTI1Ny41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2MyA5Mi41IDI1Ni41dDI1Ny41IDkzLjV6TTgwMCA5MDBoLTUwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41IHY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTM1MCA3MDBoNDAwcTIxIDAgMjYuNSAtMTJ0LTYuNSAtMjhsLTE5MCAtMjUzcS0xMiAtMTcgLTMwIC0xN3QtMzAgMTdsLTE5MCAyNTNxLTEyIDE2IC02LjUgMjh0MjYuNSAxMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYwOyIgZD0iTTM1MCAxMTAwaDQwMHExNjUgMCAyNTcuNSAtOTIuNXQ5Mi41IC0yNTcuNXYtNDAwcTAgLTE2MyAtOTIuNSAtMjU2LjV0LTI1Ny41IC05My41aC00MDBxLTE2MyAwIC0yNTYuNSA5NHQtOTMuNSAyNTZ2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXpNODAwIDkwMGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjUgdjUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNNTgwIDY5M2wxOTAgLTI1M3ExMiAtMTYgNi41IC0yOHQtMjYuNSAtMTJoLTQwMHEtMjEgMCAtMjYuNSAxMnQ2LjUgMjhsMTkwIDI1M3ExMiAxNyAzMCAxN3QzMCAtMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik01NTAgMTEwMGg0MDBxMTY1IDAgMjU3LjUgLTkyLjV0OTIuNSAtMjU3LjV2LTQwMHEwIC0xNjUgLTkyLjUgLTI1Ny41dC0yNTcuNSAtOTIuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC00NTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMzggODY3bDMyNCAtMjg0cTE2IC0xNCAxNiAtMzN0LTE2IC0zM2wtMzI0IC0yODRxLTE2IC0xNCAtMjcgLTl0LTExIDI2djE1MGgtMjUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI1MHYxNTBxMCAyMSAxMSAyNnQyNyAtOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTc5MyAxMTgybDkgLTlxOCAtMTAgNSAtMjdxLTMgLTExIC03OSAtMjI1LjV0LTc4IC0yMjEuNWwzMDAgMXEyNCAwIDMyLjUgLTE3LjV0LTUuNSAtMzUuNXEtMSAwIC0xMzMuNSAtMTU1dC0yNjcgLTMxMi41dC0xMzguNSAtMTYyLjVxLTEyIC0xNSAtMjYgLTE1aC05bC05IDhxLTkgMTEgLTQgMzJxMiA5IDQyIDEyMy41dDc5IDIyNC41bDM5IDExMGgtMzAycS0yMyAwIC0zMSAxOXEtMTAgMjEgNiA0MXE3NSA4NiAyMDkuNSAyMzcuNSB0MjI4IDI1N3Q5OC41IDExMS41cTkgMTYgMjUgMTZoOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYzOyIgZD0iTTM1MCAxMTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00NTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwIHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTkzOCA4NjdsMzI0IC0yODRxMTYgLTE0IDE2IC0zM3QtMTYgLTMzbC0zMjQgLTI4NHEtMTYgLTE0IC0yNyAtOXQtMTEgMjZ2MTUwaC0yNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjUwdjE1MHEwIDIxIDExIDI2dDI3IC05eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjQ7IiBkPSJNNzUwIDEyMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTEwLjUgLTI1dC0yNC41IDEwbC0xMDkgMTA5bC0zMTIgLTMxMnEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtMTQxIDE0MXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWwzMTIgMzEybC0xMDkgMTA5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41ek00NTYgOTAwaC0xNTZxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMCBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTQ4bDIwMCAyMDB2LTI5OHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41aDMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTYwMCAxMTg2cTExOSAwIDIyNy41IC00Ni41dDE4NyAtMTI1dDEyNSAtMTg3dDQ2LjUgLTIyNy41dC00Ni41IC0yMjcuNXQtMTI1IC0xODd0LTE4NyAtMTI1dC0yMjcuNSAtNDYuNXQtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXQ0Ni41IDIyNy41dDEyNSAxODd0MTg3IDEyNXQyMjcuNSA0Ni41ek02MDAgMTAyMnEtMTE1IDAgLTIxMiAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTJ0NTYuNSAtMjEyIHQxNTMuNSAtMTUzLjV0MjEyIC01Ni41dDIxMiA1Ni41dDE1My41IDE1My41dDU2LjUgMjEydC01Ni41IDIxMnQtMTUzLjUgMTUzLjV0LTIxMiA1Ni41ek02MDAgNzk0cTgwIDAgMTM3IC01N3Q1NyAtMTM3dC01NyAtMTM3dC0xMzcgLTU3dC0xMzcgNTd0LTU3IDEzN3Q1NyAxMzd0MTM3IDU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjY7IiBkPSJNNDUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMjQ1cTIwIDAgMjUgLTExdC05IC0yNmwtMzgzIC00MjZxLTE0IC0xNSAtMzMuNSAtMTV0LTMyLjUgMTVsLTM3OSA0MjZxLTEzIDE1IC04LjUgMjZ0MjUuNSAxMWgyNTB2MzUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMTEwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiBNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NzsiIGQ9Ik01ODMgMTE4MmwzNzggLTQzNXExNCAtMTUgOSAtMzF0LTI2IC0xNmgtMjQ0di0yNTBxMCAtMjAgLTE3IC0zNXQtMzkgLTE1aC0yMDBxLTIwIDAgLTMyIDE0LjV0LTEyIDM1LjV2MjUwaC0yNTBxLTIwIDAgLTI1LjUgMTYuNXQ4LjUgMzEuNWwzODMgNDMxcTE0IDE2IDMzLjUgMTd0MzMuNSAtMTR6TTUwIDMwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXogTTkwMCAyMDB2LTUwaDEwMHY1MGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjg7IiBkPSJNMzk2IDcyM2wzNjkgMzY5cTcgNyAxNy41IDd0MTcuNSAtN2wxMzkgLTEzOXE3IC04IDcgLTE4LjV0LTcgLTE3LjVsLTUyNSAtNTI1cS03IC04IC0xNy41IC04dC0xNy41IDhsLTI5MiAyOTFxLTcgOCAtNyAxOHQ3IDE4bDEzOSAxMzlxOCA3IDE4LjUgN3QxNy41IC03ek01MCAzMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaC0xMTAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAyMDB2LTUwaDEwMHY1MCBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTEzNSAxMDIzbDE0MiAxNDJxMTQgMTQgMzUgMTR0MzUgLTE0bDc3IC03N2wtMjEyIC0yMTJsLTc3IDc2cS0xNCAxNSAtMTQgMzZ0MTQgMzV6TTY1NSA4NTVsMjEwIDIxMHExNCAxNCAyNC41IDEwdDEwLjUgLTI1bC0yIC01OTlxLTEgLTIwIC0xNS41IC0zNXQtMzUuNSAtMTVsLTU5NyAtMXEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIwOCAyMDhsLTE1NCAxNTVsMjEyIDIxMnpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MDsiIGQ9Ik0zNTAgMTIwMGw1OTkgLTJxMjAgLTEgMzUgLTE1LjV0MTUgLTM1LjVsMSAtNTk3cTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtMjA4IDIwOGwtMTU1IC0xNTRsLTIxMiAyMTJsMTU1IDE1NGwtMjEwIDIxMHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNNTI0IDUxMmwtNzYgLTc3cS0xNSAtMTQgLTM2IC0xNHQtMzUgMTRsLTE0MiAxNDJxLTE0IDE0IC0xNCAzNXQxNCAzNWw3NyA3N3pNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41IHQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MTsiIGQ9Ik0xMjAwIDEwM2wtNDgzIDI3NmwtMzE0IC0zOTl2NDIzaC0zOTlsMTE5NiA3OTZ2LTEwOTZ6TTQ4MyA0MjR2LTIzMGw2ODMgOTUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMTEwMCAxMDAwdi04NTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzM7IiBkPSJNMTEwMCAxMDAwbC0yIC0xNDlsLTI5OSAtMjk5bC05NSA5NXEtOSA5IC0yMS41IDl0LTIxLjUgLTlsLTE0OSAtMTQ3aC0zMTJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTEzMiA2MzhsMTA2IC0xMDZxNyAtNyA3IC0xNy41dC03IC0xNy41bC00MjAgLTQyMXEtOCAtNyAtMTggLTcgdC0xOCA3bC0yMDIgMjAzcS04IDcgLTggMTcuNXQ4IDE3LjVsMTA2IDEwNnE3IDggMTcuNSA4dDE3LjUgLThsNzkgLTc5bDI5NyAyOTdxNyA3IDE3LjUgN3QxNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzQ7IiBkPSJNMTEwMCAxMDAwdi0yNjlsLTEwMyAtMTAzbC0xMzQgMTM0cS0xNSAxNSAtMzMuNSAxNi41dC0zNC41IC0xMi41bC0yNjYgLTI2NmgtMzI5di00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMHpNNzAwIDEwMDBoLTEwMHYyMDBoMTAwdi0yMDB6TTEyMDIgNTcybDcwIC03MHExNSAtMTUgMTUgLTM1LjV0LTE1IC0zNS41bC0xMzEgLTEzMSBsMTMxIC0xMzFxMTUgLTE1IDE1IC0zNS41dC0xNSAtMzUuNWwtNzAgLTcwcS0xNSAtMTUgLTM1LjUgLTE1dC0zNS41IDE1bC0xMzEgMTMxbC0xMzEgLTEzMXEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtNzAgNzBxLTE1IDE1IC0xNSAzNS41dDE1IDM1LjVsMTMxIDEzMWwtMTMxIDEzMXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWw3MCA3MHExNSAxNSAzNS41IDE1dDM1LjUgLTE1bDEzMSAtMTMxbDEzMSAxMzFxMTUgMTUgMzUuNSAxNSB0MzUuNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NTsiIGQ9Ik0xMTAwIDEwMDB2LTMwMGgtMzUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTBoLTUwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAwek04NTAgNjAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNSBsLTIzMCAtMjMwcS0xNCAtMTQgLTM1IC0xNHQtMzUgMTRsLTIzMCAyMzBxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjVoMTUwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0xMTAwIDEwMDB2LTQwMGwtMTY1IDE2NXEtMTQgMTUgLTM1IDE1dC0zNSAtMTVsLTI2MyAtMjY1aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNOTM1IDU2NWwyMzAgLTIyOXExNCAtMTUgMTAgLTI1LjV0LTI1IC0xMC41aC0xNTB2LTI1MHEwIC0yMCAtMTQuNSAtMzUgdC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1djI1MGgtMTUwcS0yMSAwIC0yNSAxMC41dDEwIDI1LjVsMjMwIDIyOXExNCAxNSAzNSAxNXQzNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik01MCAxMTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtMTIwMHYxNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjAwIDgwMHYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1NTBoMTIwMHpNMTAwIDUwMHYtMjAwaDQwMHYyMDBoLTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTc4OyIgZD0iTTkzNSAxMTY1bDI0OCAtMjMwcTE0IC0xNCAxNCAtMzV0LTE0IC0zNWwtMjQ4IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC00MDB2MjAwaDQwMHYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEwek0yMDAgODAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHYtMjAwek00MDAgODAwaC0xMDB2MjAwaDEwMHYtMjAwek0xOCA0MzVsMjQ3IDIzMCBxMTQgMTQgMjQuNSAxMHQxMC41IC0yNXYtMTUwaDQwMHYtMjAwaC00MDB2LTE1MHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTI0NyAyMzBxLTE1IDE0IC0xNSAzNXQxNSAzNXpNOTAwIDMwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTAwMCA1MDBoNTFxMjAgMCAzNC41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzQuNSAtMTQuNWgtNTF2MjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzk7IiBkPSJNODYyIDEwNzNsMjc2IDExNnEyNSAxOCA0My41IDh0MTguNSAtNDF2LTExMDZxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2Mzk3cS00IDEgLTExIDV0LTI0IDE3LjV0LTMwIDI5dC0yNCA0MnQtMTEgNTYuNXYzNTlxMCAzMSAxOC41IDY1dDQzLjUgNTJ6TTU1MCAxMjAwcTIyIDAgMzQuNSAtMTIuNXQxNC41IC0yNC41bDEgLTEzdi00NTBxMCAtMjggLTEwLjUgLTU5LjUgdC0yNSAtNTZ0LTI5IC00NXQtMjUuNSAtMzEuNWwtMTAgLTExdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3cS00IDQgLTExIDExLjV0LTI0IDMwLjV0LTMwIDQ2dC0yNCA1NXQtMTEgNjB2NDUwcTAgMiAwLjUgNS41dDQgMTJ0OC41IDE1dDE0LjUgMTJ0MjIuNSA1LjVxMjAgMCAzMi41IC0xMi41dDE0LjUgLTI0LjVsMyAtMTN2LTM1MGgxMDB2MzUwdjUuNXQyLjUgMTIgdDcgMTV0MTUgMTJ0MjUuNSA1LjVxMjMgMCAzNS41IC0xMi41dDEzLjUgLTI0LjVsMSAtMTN2LTM1MGgxMDB2MzUwcTAgMiAwLjUgNS41dDMgMTJ0NyAxNXQxNSAxMnQyNC41IDUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgwOyIgZD0iTTEyMDAgMTEwMHYtNTZxLTQgMCAtMTEgLTAuNXQtMjQgLTN0LTMwIC03LjV0LTI0IC0xNXQtMTEgLTI0di04ODhxMCAtMjIgMjUgLTM0LjV0NTAgLTEzLjVsMjUgLTJ2LTU2aC00MDB2NTZxNzUgMCA4Ny41IDYuNXQxMi41IDQzLjV2Mzk0aC01MDB2LTM5NHEwIC0zNyAxMi41IC00My41dDg3LjUgLTYuNXYtNTZoLTQwMHY1NnE0IDAgMTEgMC41dDI0IDN0MzAgNy41dDI0IDE1dDExIDI0djg4OHEwIDIyIC0yNSAzNC41dC01MCAxMy41IGwtMjUgMnY1Nmg0MDB2LTU2cS03NSAwIC04Ny41IC02LjV0LTEyLjUgLTQzLjV2LTM5NGg1MDB2Mzk0cTAgMzcgLTEyLjUgNDMuNXQtODcuNSA2LjV2NTZoNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNNjc1IDEwMDBoMzc1cTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTEwNWwtMjk1IC05OHY5OGwtMjAwIDIwMGgtNDAwbDEwMCAxMDBoMzc1ek0xMDAgOTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNTAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0zMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTEwMCA4MDB2LTIwMGgzMDB2MjAwIGgtMzAwek0xMTAwIDUzNWwtNDAwIC0xMzN2MTYzbDQwMCAxMzN2LTE2M3pNMTAwIDUwMHYtMjAwaDMwMHYyMDBoLTMwMHpNMTEwMCAzOTh2LTI0OHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzc1bC0xMDAgLTEwMGgtMzc1bC0xMDAgMTAwaDQwMGwyMDAgMjAwaDEwNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgyOyIgZD0iTTE3IDEwMDdsMTYyIDE2MnExNyAxNyA0MCAxNHQzNyAtMjJsMTM5IC0xOTRxMTQgLTIwIDExIC00NC41dC0yMCAtNDEuNWwtMTE5IC0xMThxMTAyIC0xNDIgMjI4IC0yNjh0MjY3IC0yMjdsMTE5IDExOHExNyAxNyA0Mi41IDE5dDQ0LjUgLTEybDE5MiAtMTM2cTE5IC0xNCAyMi41IC0zNy41dC0xMy41IC00MC41bC0xNjMgLTE2MnEtMyAtMSAtOS41IC0xdC0yOS41IDJ0LTQ3LjUgNnQtNjIuNSAxNC41dC03Ny41IDI2LjV0LTkwIDQyLjUgdC0xMDEuNSA2MHQtMTExIDgzdC0xMTkgMTA4LjVxLTc0IDc0IC0xMzMuNSAxNTAuNXQtOTQuNSAxMzguNXQtNjAgMTE5LjV0LTM0LjUgMTAwdC0xNSA3NC41dC00LjUgNDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik02MDAgMTEwMHE5MiAwIDE3NSAtMTAuNXQxNDEuNSAtMjd0MTA4LjUgLTM2LjV0ODEuNSAtNDB0NTMuNSAtMzd0MzEgLTI3bDkgLTEwdi0yMDBxMCAtMjEgLTE0LjUgLTMzdC0zNC41IC05bC0yMDIgMzRxLTIwIDMgLTM0LjUgMjB0LTE0LjUgMzh2MTQ2cS0xNDEgMjQgLTMwMCAyNHQtMzAwIC0yNHYtMTQ2cTAgLTIxIC0xNC41IC0zOHQtMzQuNSAtMjBsLTIwMiAtMzRxLTIwIC0zIC0zNC41IDl0LTE0LjUgMzN2MjAwcTMgNCA5LjUgMTAuNSB0MzEgMjZ0NTQgMzcuNXQ4MC41IDM5LjV0MTA5IDM3LjV0MTQxIDI2LjV0MTc1IDEwLjV6TTYwMCA3OTVxNTYgMCA5NyAtOS41dDYwIC0yMy41dDMwIC0yOHQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNSAyNC41IC00MHQxMC41IC00NXYtMjEycTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMTJxMCAyMCAxMC41IDQ1dDI0LjUgNDBsMzY1IDMwM3Y1MCBxMCA0IDEgMTAuNXQxMiAyM3QzMCAyOXQ2MCAyMi41dDk3IDEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODQ7IiBkPSJNMTEwMCA3MDBsLTIwMCAtMjAwaC02MDBsLTIwMCAyMDB2NTAwaDIwMHYtMjAwaDIwMHYyMDBoMjAwdi0yMDBoMjAwdjIwMGgyMDB2LTUwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODU7IiBkPSJNNzAwIDExMDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtMTAwMGgzMDB2MTAwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMTEwMCA4MDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNzAwaDMwMHY3MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTQwMCAwaC0zMDB2NDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTQwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDcwMHYtMzAwbC0xMDAgLTEwMGgtMjAwdjUwMGgyMDB6IE03MDAgNzAwdi0zMDBoMTAwdjMwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODc7IiBkPSJNMjAwIDExMDBoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODh6TTEwMCA5MDB2LTcwMGg5MDB2NzAwaC05MDB6TTUwMCAzMDBoLTEwMHYyMDBoLTEwMHYtMjAwaC0xMDB2NTAwaDEwMHYtMjAwaDEwMHYyMDBoMTAwdi01MDB6TTkwMCA3MDB2LTMwMGwtMTAwIC0xMDBoLTIwMHY1MDBoMjAweiBNNzAwIDcwMHYtMzAwaDEwMHYzMDBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek01MDAgNzAwaC0yMDB2LTMwMGgyMDB2LTEwMGgtMzAwdjUwMGgzMDB2LTEwMHpNOTAwIDcwMGgtMjAwdi0zMDBoMjAwdi0xMDBoLTMwMHY1MDBoMzAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4OTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDQwMGwtMzAwIDE1MGwzMDAgMTUwdi0zMDB6TTkwMCA1NTBsLTMwMCAtMTUwdjMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTkwOyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek05MDAgMzAwaC03MDB2NTAwaDcwMHYtNTAwek04MDAgNzAwaC0xMzBxLTM4IDAgLTY2LjUgLTQzdC0yOC41IC0xMDh0MjcgLTEwN3Q2OCAtNDJoMTMwdjMwMHpNMzAwIDcwMHYtMzAwIGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNMzAwIDcwMGgyMDB2LTQwMGgtMzAwdjUwMGgxMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMzAwIDYwMHYtMjAwaDEwMHYyMDBoLTEwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MzsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDUwMGwtMTk5IC0yMDBoLTEwMHY1MGwxOTkgMjAwdjE1MGgtMjAwdjEwMGgzMDB2LTMwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNNzAxIDMwMGgtMTAwIHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NDsiIGQ9Ik02MDAgMTE5MXExMjAgMCAyMjkuNSAtNDd0MTg4LjUgLTEyNnQxMjYgLTE4OC41dDQ3IC0yMjkuNXQtNDcgLTIyOS41dC0xMjYgLTE4OC41dC0xODguNSAtMTI2dC0yMjkuNSAtNDd0LTIyOS41IDQ3dC0xODguNSAxMjZ0LTEyNiAxODguNXQtNDcgMjI5LjV0NDcgMjI5LjV0MTI2IDE4OC41dDE4OC41IDEyNnQyMjkuNSA0N3pNNjAwIDEwMjFxLTExNCAwIC0yMTEgLTU2LjV0LTE1My41IC0xNTMuNXQtNTYuNSAtMjExdDU2LjUgLTIxMSB0MTUzLjUgLTE1My41dDIxMSAtNTYuNXQyMTEgNTYuNXQxNTMuNSAxNTMuNXQ1Ni41IDIxMXQtNTYuNSAyMTF0LTE1My41IDE1My41dC0yMTEgNTYuNXpNODAwIDcwMGgtMzAwdi0yMDBoMzAwdi0xMDBoLTMwMGwtMTAwIDEwMHYyMDBsMTAwIDEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk1OyIgZD0iTTYwMCAxMTkxcTEyMCAwIDIyOS41IC00N3QxODguNSAtMTI2dDEyNiAtMTg4LjV0NDcgLTIyOS41dC00NyAtMjI5LjV0LTEyNiAtMTg4LjV0LTE4OC41IC0xMjZ0LTIyOS41IC00N3QtMjI5LjUgNDd0LTE4OC41IDEyNnQtMTI2IDE4OC41dC00NyAyMjkuNXQ0NyAyMjkuNXQxMjYgMTg4LjV0MTg4LjUgMTI2dDIyOS41IDQ3ek02MDAgMTAyMXEtMTE0IDAgLTIxMSAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTF0NTYuNSAtMjExIHQxNTMuNSAtMTUzLjV0MjExIC01Ni41dDIxMSA1Ni41dDE1My41IDE1My41dDU2LjUgMjExdC01Ni41IDIxMXQtMTUzLjUgMTUzLjV0LTIxMSA1Ni41ek04MDAgNzAwdi0xMDBsLTUwIC01MGwxMDAgLTEwMHYtNTBoLTEwMGwtMTAwIDEwMGgtMTUwdi0xMDBoLTEwMHY0MDBoMzAwek01MDAgNzAwdi0xMDBoMjAwdjEwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTc7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA3dC04NSAtMjA3dC0yMDUgLTg2LjVoLTEyOHYyNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMjUwaC0yMjJxLTgwIDAgLTEzNiA1Ny41dC01NiAxMzYuNXEwIDY5IDQzIDEyMi41dDEwOCA2Ny41cS0yIDE5IC0yIDM3cTAgMTAwIDQ5IDE4NSB0MTM0IDEzNHQxODUgNDl6TTUyNSA1MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMjc1aDEzN3EyMSAwIDI2IC0xMS41dC04IC0yNy41bC0yMjMgLTI0NHEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC0yMjMgMjQ0cS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMTM3djI3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTg7IiBkPSJNNTAyIDEwODlxMTEwIDAgMjAxIC01OS41dDEzNSAtMTU2LjVxNDMgMTUgODkgMTVxMTIxIDAgMjA2IC04Ni41dDg2IC0yMDYuNXEwIC05OSAtNjAgLTE4MXQtMTUwIC0xMTBsLTM3OCAzNjBxLTEzIDE2IC0zMS41IDE2dC0zMS41IC0xNmwtMzgxIC0zNjVoLTlxLTc5IDAgLTEzNS41IDU3LjV0LTU2LjUgMTM2LjVxMCA2OSA0MyAxMjIuNXQxMDggNjcuNXEtMiAxOSAtMiAzOHEwIDEwMCA0OSAxODQuNXQxMzMuNSAxMzR0MTg0LjUgNDkuNXogTTYzMiA0NjdsMjIzIC0yMjhxMTMgLTE2IDggLTI3LjV0LTI2IC0xMS41aC0xMzd2LTI3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djI3NWgtMTM3cS0yMSAwIC0yNiAxMS41dDggMjcuNXExOTkgMjA0IDIyMyAyMjhxMTkgMTkgMzEuNSAxOXQzMi41IC0xOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTcwMCAxMDB2MTAwaDQwMGwtMjcwIDMwMGgxNzBsLTI3MCAzMDBoMTcwbC0zMDAgMzMzbC0zMDAgLTMzM2gxNzBsLTI3MCAtMzAwaDE3MGwtMjcwIC0zMDBoNDAwdi0xMDBoLTUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di01MGg0MDB2NTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDA7IiBkPSJNNjAwIDExNzlxOTQgMCAxNjcuNSAtNTYuNXQ5OS41IC0xNDUuNXE4OSAtNiAxNTAuNSAtNzEuNXQ2MS41IC0xNTUuNXEwIC02MSAtMjkuNSAtMTEyLjV0LTc5LjUgLTgyLjVxOSAtMjkgOSAtNTVxMCAtNzQgLTUyLjUgLTEyNi41dC0xMjYuNSAtNTIuNXEtNTUgMCAtMTAwIDMwdi0yNTFxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaC0zMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41djI1MXEtNDUgLTMwIC0xMDAgLTMwIHEtNzQgMCAtMTI2LjUgNTIuNXQtNTIuNSAxMjYuNXEwIDE4IDQgMzhxLTQ3IDIxIC03NS41IDY1dC0yOC41IDk3cTAgNzQgNTIuNSAxMjYuNXQxMjYuNSA1Mi41cTUgMCAyMyAtMnEwIDIgLTEgMTB0LTEgMTNxMCAxMTYgODEuNSAxOTcuNXQxOTcuNSA4MS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDE7IiBkPSJNMTAxMCAxMDEwcTExMSAtMTExIDE1MC41IC0yNjAuNXQwIC0yOTl0LTE1MC41IC0yNjAuNXEtODMgLTgzIC0xOTEuNSAtMTI2LjV0LTIxOC41IC00My41dC0yMTguNSA0My41dC0xOTEuNSAxMjYuNXEtMTExIDExMSAtMTUwLjUgMjYwLjV0MCAyOTl0MTUwLjUgMjYwLjVxODMgODMgMTkxLjUgMTI2LjV0MjE4LjUgNDMuNXQyMTguNSAtNDMuNXQxOTEuNSAtMTI2LjV6TTQ3NiAxMDY1cS00IDAgLTggLTFxLTEyMSAtMzQgLTIwOS41IC0xMjIuNSB0LTEyMi41IC0yMDkuNXEtNCAtMTIgMi41IC0yM3QxOC41IC0xNGwzNiAtOXEzIC0xIDcgLTFxMjMgMCAyOSAyMnEyNyA5NiA5OCAxNjZxNzAgNzEgMTY2IDk4cTExIDMgMTcuNSAxMy41dDMuNSAyMi41bC05IDM1cS0zIDEzIC0xNCAxOXEtNyA0IC0xNSA0ek01MTIgOTIwcS00IDAgLTkgLTJxLTgwIC0yNCAtMTM4LjUgLTgyLjV0LTgyLjUgLTEzOC41cS00IC0xMyAyIC0yNHQxOSAtMTRsMzQgLTlxNCAtMSA4IC0xcTIyIDAgMjggMjEgcTE4IDU4IDU4LjUgOTguNXQ5Ny41IDU4LjVxMTIgMyAxOCAxMy41dDMgMjEuNWwtOSAzNXEtMyAxMiAtMTQgMTlxLTcgNCAtMTUgNHpNNzE5LjUgNzE5LjVxLTQ5LjUgNDkuNSAtMTE5LjUgNDkuNXQtMTE5LjUgLTQ5LjV0LTQ5LjUgLTExOS41dDQ5LjUgLTExOS41dDExOS41IC00OS41dDExOS41IDQ5LjV0NDkuNSAxMTkuNXQtNDkuNSAxMTkuNXpNODU1IDU1MXEtMjIgMCAtMjggLTIxcS0xOCAtNTggLTU4LjUgLTk4LjV0LTk4LjUgLTU3LjUgcS0xMSAtNCAtMTcgLTE0LjV0LTMgLTIxLjVsOSAtMzVxMyAtMTIgMTQgLTE5cTcgLTQgMTUgLTRxNCAwIDkgMnE4MCAyNCAxMzguNSA4Mi41dDgyLjUgMTM4LjVxNCAxMyAtMi41IDI0dC0xOC41IDE0bC0zNCA5cS00IDEgLTggMXpNMTAwMCA1MTVxLTIzIDAgLTI5IC0yMnEtMjcgLTk2IC05OCAtMTY2cS03MCAtNzEgLTE2NiAtOThxLTExIC0zIC0xNy41IC0xMy41dC0zLjUgLTIyLjVsOSAtMzVxMyAtMTMgMTQgLTE5cTcgLTQgMTUgLTQgcTQgMCA4IDFxMTIxIDM0IDIwOS41IDEyMi41dDEyMi41IDIwOS41cTQgMTIgLTIuNSAyM3QtMTguNSAxNGwtMzYgOXEtMyAxIC03IDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMjsiIGQ9Ik03MDAgODAwaDMwMHYtMzgwaC0xODB2MjAwaC0zNDB2LTIwMGgtMzgwdjc1NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDU3NXYtNDAwek0xMDAwIDkwMGgtMjAwdjIwMHpNNzAwIDMwMGgxNjJsLTIxMiAtMjEybC0yMTIgMjEyaDE2MnYyMDBoMTAwdi0yMDB6TTUyMCAwaC0zOTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzOTV6TTEwMDAgMjIwdi0xOTVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xOTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMzsiIGQ9Ik03MDAgODAwaDMwMHYtNTIwbC0zNTAgMzUwbC01NTAgLTU1MHYxMDk1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNTc1di00MDB6TTEwMDAgOTAwaC0yMDB2MjAwek04NjIgMjAwaC0xNjJ2LTIwMGgtMTAwdjIwMGgtMTYybDIxMiAyMTJ6TTQ4MCAwaC0zNTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NWgzODB2LTgwek0xMDAwIDgwdi01NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1NXY4MGgxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwNDsiIGQ9Ik0xMTYyIDgwMGgtMTYydi0yMDBoMTAwbDEwMCAtMTAwaC0zMDB2MzAwaC0xNjJsMjEyIDIxMnpNMjAwIDgwMGgyMDBxMjcgMCA0MCAtMnQyOS41IC0xMC41dDIzLjUgLTMwdDcgLTU3LjVoMzAwdi0xMDBoLTYwMGwtMjAwIC0zNTB2NDUwaDEwMHEwIDM2IDcgNTcuNXQyMy41IDMwdDI5LjUgMTAuNXQ0MCAyek04MDAgNDAwaDI0MGwtMjQwIC00MDBoLTgwMGwzMDAgNTAwaDUwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDU7IiBkPSJNNjUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMDAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTgwMCBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtMSAwIC0yMCA0bDI0NiAyNDZsLTMyNiAzMjZ2MzI0cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXYtMTUwcTAgLTYyIDQ0IC0xMDZ0MTA2IC00NGgzMDBxNjIgMCAxMDYgNDR0NDQgMTA2ek00MTIgMjUwbC0yMTIgLTIxMnYxNjJoLTIwMHYxMDBoMjAwdjE2MnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjA2OyIgZD0iTTQ1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDUwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTUwMCBoLTIwMHYtMzAwaDIwMHEwIC0zNiAtNyAtNTcuNXQtMjMuNSAtMzB0LTI5LjUgLTEwLjV0LTQwIC0yaC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djgwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV2LTE1MHEwIC02MiA0NCAtMTA2dDEwNiAtNDRoMzAwcTYyIDAgMTA2IDQ0dDQ0IDEwNnpNMTIxMiAyNTBsLTIxMiAtMjEydjE2MmgtMjAwdjEwMGgyMDB2MTYyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDk7IiBkPSJNNjU4IDExOTdsNjM3IC0xMTA0cTIzIC0zOCA3IC02NS41dC02MCAtMjcuNWgtMTI3NnEtNDQgMCAtNjAgMjcuNXQ3IDY1LjVsNjM3IDExMDRxMjIgMzkgNTQgMzl0NTQgLTM5ek03MDQgODAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNXQzNy41IC0xNC41aDU0cTIwIDAgMzcuNSAxNC41dDIxLjUgMzQuNWw1OCAzMDJxNCAyMCAtOCAzNC41dC0zMiAxNC41ek01MDAgMzAwdi0xMDBoMjAwIHYxMDBoLTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjEwOyIgZD0iTTQyNSAxMTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgODAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41IHQxNy41IDcuNXpNODI1IDgwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMjUgNTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNODI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNSB2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTgyNSAyMDBoMjUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxMTsiIGQ9Ik03MDAgMTIwMGgxMDB2LTIwMGgtMTAwdi0xMDBoMzUwcTYyIDAgODYuNSAtMzkuNXQtMy41IC05NC41bC02NiAtMTMycS00MSAtODMgLTgxIC0xMzRoLTc3MnEtNDAgNTEgLTgxIDEzNGwtNjYgMTMycS0yOCA1NSAtMy41IDk0LjV0ODYuNSAzOS41aDM1MHYxMDBoLTEwMHYyMDBoMTAwdjEwMGgyMDB2LTEwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwIGgtOTUwbDEzOCAxMDBoLTEzcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTI7IiBkPSJNNjAwIDEzMDBxNDAgMCA2OC41IC0yOS41dDI4LjUgLTcwLjVoLTE5NHEwIDQxIDI4LjUgNzAuNXQ2OC41IDI5LjV6TTQ0MyAxMTAwaDMxNHExOCAtMzcgMTggLTc1cTAgLTggLTMgLTI1aDMyOHE0MSAwIDQ0LjUgLTE2LjV0LTMwLjUgLTM4LjVsLTE3NSAtMTQ1aC02NzhsLTE3OCAxNDVxLTM0IDIyIC0yOSAzOC41dDQ2IDE2LjVoMzI4cS0zIDE3IC0zIDI1cTAgMzggMTggNzV6TTI1MCA3MDBoNzAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTUwdi0yMDBsMjc1IC0yMDBoLTk1MGwyNzUgMjAwdjIwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTM7IiBkPSJNNjAwIDExODFxNzUgMCAxMjggLTUzdDUzIC0xMjh0LTUzIC0xMjh0LTEyOCAtNTN0LTEyOCA1M3QtNTMgMTI4dDUzIDEyOHQxMjggNTN6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTMgbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNDsiIGQ9Ik02MDAgMTMwMHE0NyAwIDkyLjUgLTUzLjV0NzEgLTEyM3QyNS41IC0xMjMuNXEwIC03OCAtNTUuNSAtMTMzLjV0LTEzMy41IC01NS41dC0xMzMuNSA1NS41dC01NS41IDEzMy41cTAgNjIgMzQgMTQzbDE0NCAtMTQzbDExMSAxMTFsLTE2MyAxNjNxMzQgMjYgNjMgMjZ6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1IHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEzbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNTsiIGQ9Ik02MDAgMTIwMGwzMDAgLTE2MXYtMTM5aC0zMDBxMCAtNTcgMTguNSAtMTA4dDUwIC05MS41dDYzIC03MnQ3MCAtNjcuNXQ1Ny41IC02MWgtNTMwcS02MCA4MyAtOTAuNSAxNzcuNXQtMzAuNSAxNzguNXQzMyAxNjQuNXQ4Ny41IDEzOS41dDEyNiA5Ni41dDE0NS41IDQxLjV2LTk4ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTNsMTM4IC0xMDBoLTk1MGwxMzcgMTAwIGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNjsiIGQ9Ik02MDAgMTMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNzhxNDYgLTI2IDczIC03MnQyNyAtMTAwdi01MGgtNDAwdjUwcTAgNTQgMjcgMTAwdDczIDcydjc4cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNDAwIDgwMGg0MDBxNTQgMCAxMDAgLTI3dDcyIC03M2gtMTcydi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaDIwMHYtMTAwaC0yMDB2LTEwMGgyMDBxMCAtODMgLTU4LjUgLTE0MS41dC0xNDEuNSAtNTguNWgtNDAwIHEtODMgMCAtMTQxLjUgNTguNXQtNTguNSAxNDEuNXY0MDBxMCA4MyA1OC41IDE0MS41dDE0MS41IDU4LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxODsiIGQ9Ik0xNTAgMTEwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjUgNDAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjgzbDIyNCAtMjI0cTEzIC0xMyAxMyAtMzEuNXQtMTMgLTMyIHQtMzEuNSAtMTMuNXQtMzEuNSAxM2wtODggODhoLTUyNGwtODcgLTg4cS0xMyAtMTMgLTMyIC0xM3QtMzIgMTMuNXQtMTMgMzJ0MTMgMzEuNWwyMjQgMjI0aC0yODlxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01NDEgMzAwbC0xMDAgLTEwMGgzMjRsLTEwMCAxMDBoLTEyNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjE5OyIgZD0iTTIwMCAxMTAwaDgwMHE4MyAwIDE0MS41IC01OC41dDU4LjUgLTE0MS41di0yMDBoLTEwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtMjUwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41aC0xMDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTI1MHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNWgtMTAwdjIwMHEwIDgzIDU4LjUgMTQxLjV0MTQxLjUgNTguNXpNMTAwIDYwMGgxMDAwcTQxIDAgNzAuNSAtMjkuNSB0MjkuNSAtNzAuNXYtMzAwaC0xMjAwdjMwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTMwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHpNMTEwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIxOyIgZD0iTTQ4MCAxMTY1bDY4MiAtNjgzcTMxIC0zMSAzMSAtNzUuNXQtMzEgLTc1LjVsLTEzMSAtMTMxaC00ODFsLTUxNyA1MThxLTMyIDMxIC0zMiA3NS41dDMyIDc1LjVsMjk1IDI5NnEzMSAzMSA3NS41IDMxdDc2LjUgLTMxek0xMDggNzk0bDM0MiAtMzQybDMwMyAzMDRsLTM0MSAzNDF6TTI1MCAxMDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtOTAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIzOyIgZD0iTTEwNTcgNjQ3bC0xODkgNTA2cS04IDE5IC0yNy41IDMzdC00MC41IDE0aC00MDBxLTIxIDAgLTQwLjUgLTE0dC0yNy41IC0zM2wtMTg5IC01MDZxLTggLTE5IDEuNSAtMzN0MzAuNSAtMTRoNjI1di0xNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41dDM1LjUgMTQuNXQxNC41IDM1LjV2MTUwaDEyNXEyMSAwIDMwLjUgMTR0MS41IDMzek04OTcgMGgtNTk1djUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ4djMwMGgyMDB2LTMwMGg0N3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjQ7IiBkPSJNOTAwIDgwMGgzMDB2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTM3NXY1OTFsLTMwMCAzMDB2ODRxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNMTIwMCA5MDBoLTIwMHYyMDB6TTQwMCA2MDBoMzAwdi01NzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC02NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNNzAwIDcwMGgtMjAwdjIwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIyNTsiIGQ9Ik00ODQgMTA5NWgxOTVxNzUgMCAxNDYgLTMyLjV0MTI0IC04NnQ4OS41IC0xMjIuNXQ0OC41IC0xNDJxMTggLTE0IDM1IC0yMHEzMSAtMTAgNjQuNSA2LjV0NDMuNSA0OC41cTEwIDM0IC0xNSA3MXEtMTkgMjcgLTkgNDNxNSA4IDEyLjUgMTF0MTkgLTF0MjMuNSAtMTZxNDEgLTQ0IDM5IC0xMDVxLTMgLTYzIC00NiAtMTA2LjV0LTEwNCAtNDMuNWgtNjJxLTcgLTU1IC0zNSAtMTE3dC01NiAtMTAwbC0zOSAtMjM0cS0zIC0yMCAtMjAgLTM0LjUgdC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMTIgNzBxLTQ5IC0xNCAtOTEgLTE0aC0xOTVxLTI0IDAgLTY1IDhsLTExIC02NHEtMyAtMjAgLTIwIC0zNC41dC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMjYgMTU3cS04NCA3NCAtMTI4IDE3NWwtMTU5IDUzcS0xOSA3IC0zMyAyNnQtMTQgNDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEyNHExMSA4NyA1NiAxNjZsLTExMSA5NSBxLTE2IDE0IC0xMi41IDIzLjV0MjQuNSA5LjVoMjAzcTExNiAxMDEgMjUwIDEwMXpNNjc1IDEwMDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMjUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjY7IiBkPSJNNjQxIDkwMGw0MjMgMjQ3cTE5IDggNDIgMi41dDM3IC0yMS41bDMyIC0zOHExNCAtMTUgMTIuNSAtMzZ0LTE3LjUgLTM0bC0xMzkgLTEyMGgtMzkwek01MCAxMTAwaDEwNnE2NyAwIDEwMyAtMTd0NjYgLTcxbDEwMiAtMjEyaDgyM3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBxMCAtMjEgLTE0IC00MHQtMzMgLTI2bC03MzcgLTEzMnEtMjMgLTQgLTQwIDZ0LTI2IDI1cS00MiA2NyAtMTAwIDY3aC0zMDBxLTYyIDAgLTEwNiA0NCB0LTQ0IDEwNnYyMDBxMCA2MiA0NCAxMDZ0MTA2IDQ0ek0xNzMgOTI4aC04MHEtMTkgMCAtMjggLTE0dC05IC0zNXYtNTZxMCAtNTEgNDIgLTUxaDEzNHExNiAwIDIxLjUgOHQ1LjUgMjRxMCAxMSAtMTYgNDV0LTI3IDUxcS0xOCAyOCAtNDMgMjh6TTU1MCA3MjdxLTMyIDAgLTU0LjUgLTIyLjV0LTIyLjUgLTU0LjV0MjIuNSAtNTQuNXQ1NC41IC0yMi41dDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41ek0xMzAgMzg5IGwxNTIgMTMwcTE4IDE5IDM0IDI0dDMxIC0zLjV0MjQuNSAtMTcuNXQyNS41IC0yOHEyOCAtMzUgNTAuNSAtNTF0NDguNSAtMTNsNjMgNWw0OCAtMTc5cTEzIC02MSAtMy41IC05Ny41dC02Ny41IC03OS41bC04MCAtNjlxLTQ3IC00MCAtMTA5IC0zNS41dC0xMDMgNTEuNWwtMTMwIDE1MXEtNDAgNDcgLTM1LjUgMTA5LjV0NTEuNSAxMDIuNXpNMzgwIDM3N2wtMTAyIC04OHEtMzEgLTI3IDIgLTY1bDM3IC00M3ExMyAtMTUgMjcuNSAtMTkuNSB0MzEuNSA2LjVsNjEgNTNxMTkgMTYgMTQgNDlxLTIgMjAgLTEyIDU2dC0xNyA0NXEtMTEgMTIgLTE5IDE0dC0yMyAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjI3OyIgZD0iTTYyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwOXE3OSAtMzMgMTMxIC04Ny41dDUzIC0xMjguNXExIC00NiAtMTUgLTg0LjV0LTM5IC02MXQtNDYgLTM4dC0zOSAtMjEuNWwtMTcgLTZxNiAwIDE1IC0xLjV0MzUgLTl0NTAgLTE3LjV0NTMgLTMwdDUwIC00NXQzNS41IC02NHQxNC41IC04NHEwIC01OSAtMTEuNSAtMTA1LjV0LTI4LjUgLTc2LjV0LTQ0IC01MXQtNDkuNSAtMzEuNXQtNTQuNSAtMTZ0LTQ5LjUgLTYuNSB0LTQzLjUgLTF2LTc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzVoLTEwMHYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtMTc1cS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNzV2NjAwaC03NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNzV2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWgxMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDAwIDkwMHYtMjAwaDI2M3EyOCAwIDQ4LjUgMTAuNXQzMCAyNXQxNSAyOXQ1LjUgMjUuNWwxIDEwcTAgNCAtMC41IDExdC02IDI0dC0xNSAzMHQtMzAgMjR0LTQ4LjUgMTFoLTI2M3pNNDAwIDUwMHYtMjAwaDM2M3EyOCAwIDQ4LjUgMTAuNSB0MzAgMjV0MTUgMjl0NS41IDI1LjVsMSAxMHEwIDQgLTAuNSAxMXQtNiAyNHQtMTUgMzB0LTMwIDI0dC00OC41IDExaC0zNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMDsiIGQ9Ik0yMTIgMTE5OGg3ODBxODYgMCAxNDcgLTYxdDYxIC0xNDd2LTQxNnEwIC01MSAtMTggLTE0Mi41dC0zNiAtMTU3LjVsLTE4IC02NnEtMjkgLTg3IC05My41IC0xNDYuNXQtMTQ2LjUgLTU5LjVoLTU3MnEtODIgMCAtMTQ3IDU5dC05MyAxNDdxLTggMjggLTIwIDczdC0zMiAxNDMuNXQtMjAgMTQ5LjV2NDE2cTAgODYgNjEgMTQ3dDE0NyA2MXpNNjAwIDEwNDVxLTcwIDAgLTEzMi41IC0xMS41dC0xMDUuNSAtMzAuNXQtNzguNSAtNDEuNSB0LTU3IC00NXQtMzYgLTQxdC0yMC41IC0zMC41bC02IC0xMmwxNTYgLTI0M2g1NjBsMTU2IDI0M3EtMiA1IC02IDEyLjV0LTIwIDI5LjV0LTM2LjUgNDJ0LTU3IDQ0LjV0LTc5IDQydC0xMDUgMjkuNXQtMTMyLjUgMTJ6TTc2MiA3MDNoLTE1N2wxOTUgMjYxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzE7IiBkPSJNNDc1IDEzMDBoMTUwcTEwMyAwIDE4OSAtODZ0ODYgLTE4OXYtNTAwcTAgLTQxIC00MiAtODN0LTgzIC00MmgtNDUwcS00MSAwIC04MyA0MnQtNDIgODN2NTAwcTAgMTAzIDg2IDE4OXQxODkgODZ6TTcwMCAzMDB2LTIyNXEwIC0yMSAtMjcgLTQ4dC00OCAtMjdoLTE1MHEtMjEgMCAtNDggMjd0LTI3IDQ4djIyNWgzMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMjsiIGQ9Ik00NzUgMTMwMGg5NnEwIC0xNTAgODkuNSAtMjM5LjV0MjM5LjUgLTg5LjV2LTQ0NnEwIC00MSAtNDIgLTgzdC04MyAtNDJoLTQ1MHEtNDEgMCAtODMgNDJ0LTQyIDgzdjUwMHEwIDEwMyA4NiAxODl0MTg5IDg2ek03MDAgMzAwdi0yMjVxMCAtMjEgLTI3IC00OHQtNDggLTI3aC0xNTBxLTIxIDAgLTQ4IDI3dC0yNyA0OHYyMjVoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzM7IiBkPSJNMTI5NCA3NjdsLTYzOCAtMjgzbC0zNzggMTcwbC03OCAtNjB2LTIyNGwxMDAgLTE1MHYtMTk5bC0xNTAgMTQ4bC0xNTAgLTE0OXYyMDBsMTAwIDE1MHYyNTBxMCA0IC0wLjUgMTAuNXQwIDkuNXQxIDh0MyA4dDYuNSA2bDQ3IDQwbC0xNDcgNjVsNjQyIDI4M3pNMTAwMCAzODBsLTM1MCAtMTY2bC0zNTAgMTY2djE0N2wzNTAgLTE2NWwzNTAgMTY1di0xNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzNDsiIGQ9Ik0yNTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek02NTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek0xMDUwIDgwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnQtNDQgLTEwNnQtMTA2IC00NHQtMTA2IDQ0dC00NCAxMDZ0NDQgMTA2dDEwNiA0NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjM1OyIgZD0iTTU1MCAxMTAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgNzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgMzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzY7IiBkPSJNMTI1IDExMDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEyNSA3MDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjUgdDE3LjUgNy41ek0xMjUgMzAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTk1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzc7IiBkPSJNMzUwIDEyMDBoNTAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTUwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNTAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY1MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek05MDAgMTAwMGgtNjAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDYwMHE0MSAwIDcwLjUgMjkuNSB0MjkuNSA3MC41djYwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMzUwIDkwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek00MDAgODAwdi0yMDBoNDAwdjIwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzg7IiBkPSJNMTUwIDExMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MjAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV0MTQuNSAzNS41dDM1LjUgMTQuNWg1MHYyMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41aDUwdjIwMGgtNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzOTsiIGQ9Ik02NTAgMTE4N3E4NyAtNjcgMTE4LjUgLTE1NnQwIC0xNzh0LTExOC41IC0xNTVxLTg3IDY2IC0xMTguNSAxNTV0MCAxNzh0MTE4LjUgMTU2ek0zMDAgODAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAwIDgwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhxMCAxMjQgODggMjEydDIxMiA4OHpNMzAwIDUwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnogTTEwMDAgNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek03MDAgMTk5di0xNDRxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djE0MnE0MCAtNCA0MyAtNHExNyAwIDU3IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0MDsiIGQ9Ik03NDUgODc4bDY5IDE5cTI1IDYgNDUgLTEybDI5OCAtMjk1cTExIC0xMSAxNSAtMjYuNXQtMiAtMzAuNXEtNSAtMTQgLTE4IC0yMy41dC0yOCAtOS41aC04cTEgMCAxIC0xM3EwIC0yOSAtMiAtNTZ0LTguNSAtNjJ0LTIwIC02M3QtMzMgLTUzdC01MSAtMzl0LTcyLjUgLTE0aC0xNDZxLTE4NCAwIC0xODQgMjg4cTAgMjQgMTAgNDdxLTIwIDQgLTYyIDR0LTYzIC00cTExIC0yNCAxMSAtNDdxMCAtMjg4IC0xODQgLTI4OGgtMTQyIHEtNDggMCAtODQuNSAyMXQtNTYgNTF0LTMyIDcxLjV0LTE2IDc1dC0zLjUgNjguNXEwIDEzIDIgMTNoLTdxLTE1IDAgLTI3LjUgOS41dC0xOC41IDIzLjVxLTYgMTUgLTIgMzAuNXQxNSAyNS41bDI5OCAyOTZxMjAgMTggNDYgMTFsNzYgLTE5cTIwIC01IDMwLjUgLTIyLjV0NS41IC0zNy41dC0yMi41IC0zMXQtMzcuNSAtNWwtNTEgMTJsLTE4MiAtMTkzaDg5MWwtMTgyIDE5M2wtNDQgLTEycS0yMCAtNSAtMzcuNSA2dC0yMi41IDMxdDYgMzcuNSB0MzEgMjIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQxOyIgZD0iTTEyMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTUwMCA0NTBoLTI1cTAgMTUgLTQgMjQuNXQtOSAxNC41dC0xNyA3LjV0LTIwIDN0LTI1IDAuNWgtMTAwdi00MjVxMCAtMTEgMTIuNSAtMTcuNXQyNS41IC03LjVoMTJ2LTUwaC0yMDB2NTBxNTAgMCA1MCAyNXY0MjVoLTEwMHEtMTcgMCAtMjUgLTAuNXQtMjAgLTN0LTE3IC03LjV0LTkgLTE0LjV0LTQgLTI0LjVoLTI1djE1MGg1MDB2LTE1MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQyOyIgZD0iTTEwMDAgMzAwdjUwcS0yNSAwIC01NSAzMnEtMTQgMTQgLTI1IDMxdC0xNiAyN2wtNCAxMWwtMjg5IDc0N2gtNjlsLTMwMCAtNzU0cS0xOCAtMzUgLTM5IC01NnEtOSAtOSAtMjQuNSAtMTguNXQtMjYuNSAtMTQuNWwtMTEgLTV2LTUwaDI3M3Y1MHEtNDkgMCAtNzguNSAyMS41dC0xMS41IDY3LjVsNjkgMTc2aDI5M2w2MSAtMTY2cTEzIC0zNCAtMy41IC02Ni41dC01NS41IC0zMi41di01MGgzMTJ6TTQxMiA2OTFsMTM0IDM0MmwxMjEgLTM0MiBoLTI1NXpNMTEwMCAxNTB2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDM7IiBkPSJNNTAgMTIwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjExIDExMThoLTcwcS0xMyAwIC0xOCAtMTJsLTI5OSAtNzUzcS0xNyAtMzIgLTM1IC01MXEtMTggLTE4IC01NiAtMzRxLTEyIC01IC0xMiAtMTh2LTUwcTAgLTggNS41IC0xNHQxNC41IC02IGgyNzNxOCAwIDE0IDZ0NiAxNHY1MHEwIDggLTYgMTR0LTE0IDZxLTU1IDAgLTcxIDIzcS0xMCAxNCAwIDM5bDYzIDE2M2gyNjZsNTcgLTE1M3ExMSAtMzEgLTYgLTU1cS0xMiAtMTcgLTM2IC0xN3EtOCAwIC0xNCAtNnQtNiAtMTR2LTUwcTAgLTggNiAtMTR0MTQgLTZoMzEzcTggMCAxNCA2dDYgMTR2NTBxMCA3IC01LjUgMTN0LTEzLjUgN3EtMTcgMCAtNDIgMjVxLTI1IDI3IC00MCA2M2gtMWwtMjg4IDc0OHEtNSAxMiAtMTkgMTJ6TTYzOSA2MTEgaC0xOTdsMTAzIDI2NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ0OyIgZD0iTTEyMDAgMTEwMGgtMTIwMHYxMDBoMTIwMHYtMTAwek01MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtOTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djkwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgOTAwdi0zMDBoMzAwdjMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDU7IiBkPSJNNTAgMTIwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTkwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY5MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgNzAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgNjAwdi0zMDBoMzAwdjMwMGgtMzAwek0xMjAwIDBoLTEyMDB2MTAwaDEyMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ2OyIgZD0iTTUwIDEwMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMTAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoMTAwdi0xMDBoLTEwMHYtMTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djE1MGgtMTAwdi0zNTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA3MDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0NzsiIGQ9Ik0xMDAgMGgtMTAwdjEyMDBoMTAwdi0xMjAwek0yNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMDAgMTAwMHYtMzAwaDMwMHYzMDBoLTMwMHpNMjUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ4OyIgZD0iTTYwMCAxMTAwaDE1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTEwMGg0NTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDM1MHYxMDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41IHQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTUwdjEwMGgxMDB2LTEwMHpNNDAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0OTsiIGQ9Ik0xMjAwIDBoLTEwMHYxMjAwaDEwMHYtMTIwMHpNNTUwIDExMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUwOyIgZD0iTTg2NSA1NjVsLTQ5NCAtNDk0cS0yMyAtMjMgLTQxIC0yM3EtMTQgMCAtMjIgMTMuNXQtOCAzOC41djEwMDBxMCAyNSA4IDM4LjV0MjIgMTMuNXExOCAwIDQxIC0yM2w0OTQgLTQ5NHExNCAtMTQgMTQgLTM1dC0xNCAtMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI1MTsiIGQ9Ik0zMzUgNjM1bDQ5NCA0OTRxMjkgMjkgNTAgMjAuNXQyMSAtNDkuNXYtMTAwMHEwIC00MSAtMjEgLTQ5LjV0LTUwIDIwLjVsLTQ5NCA0OTRxLTE0IDE0IC0xNCAzNXQxNCAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUyOyIgZD0iTTEwMCA5MDBoMTAwMHE0MSAwIDQ5LjUgLTIxdC0yMC41IC01MGwtNDk0IC00OTRxLTE0IC0xNCAtMzUgLTE0dC0zNSAxNGwtNDk0IDQ5NHEtMjkgMjkgLTIwLjUgNTB0NDkuNSAyMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUzOyIgZD0iTTYzNSA4NjVsNDk0IC00OTRxMjkgLTI5IDIwLjUgLTUwdC00OS41IC0yMWgtMTAwMHEtNDEgMCAtNDkuNSAyMXQyMC41IDUwbDQ5NCA0OTRxMTQgMTQgMzUgMTR0MzUgLTE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTQ7IiBkPSJNNzAwIDc0MXYtMTgybC02OTIgLTMyM3YyMjFsNDEzIDE5M2wtNDEzIDE5M3YyMjF6TTEyMDAgMGgtODAwdjIwMGg4MDB2LTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU1OyIgZD0iTTEyMDAgOTAwaC0yMDB2LTEwMGgyMDB2LTEwMGgtMzAwdjMwMGgyMDB2MTAwaC0yMDB2MTAwaDMwMHYtMzAwek0wIDcwMGg1MHEwIDIxIDQgMzd0OS41IDI2LjV0MTggMTcuNXQyMiAxMXQyOC41IDUuNXQzMSAydDM3IDAuNWgxMDB2LTU1MHEwIC0yMiAtMjUgLTM0LjV0LTUwIC0xMy41bC0yNSAtMnYtMTAwaDQwMHYxMDBxLTQgMCAtMTEgMC41dC0yNCAzdC0zMCA3dC0yNCAxNXQtMTEgMjQuNXY1NTBoMTAwcTI1IDAgMzcgLTAuNXQzMSAtMiB0MjguNSAtNS41dDIyIC0xMXQxOCAtMTcuNXQ5LjUgLTI2LjV0NCAtMzdoNTB2MzAwaC04MDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU2OyIgZD0iTTgwMCA3MDBoLTUwcTAgMjEgLTQgMzd0LTkuNSAyNi41dC0xOCAxNy41dC0yMiAxMXQtMjguNSA1LjV0LTMxIDJ0LTM3IDAuNWgtMTAwdi01NTBxMCAtMjIgMjUgLTM0LjV0NTAgLTE0LjVsMjUgLTF2LTEwMGgtNDAwdjEwMHE0IDAgMTEgMC41dDI0IDN0MzAgN3QyNCAxNXQxMSAyNC41djU1MGgtMTAwcS0yNSAwIC0zNyAtMC41dC0zMSAtMnQtMjguNSAtNS41dC0yMiAtMTF0LTE4IC0xNy41dC05LjUgLTI2LjV0LTQgLTM3aC01MHYzMDAgaDgwMHYtMzAwek0xMTAwIDIwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTMwMHYzMDBoMjAwdjEwMGgtMjAwdjEwMGgzMDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU3OyIgZD0iTTcwMSAxMDk4aDE2MHExNiAwIDIxIC0xMXQtNyAtMjNsLTQ2NCAtNDY0bDQ2NCAtNDY0cTEyIC0xMiA3IC0yM3QtMjEgLTExaC0xNjBxLTEzIDAgLTIzIDlsLTQ3MSA0NzFxLTcgOCAtNyAxOHQ3IDE4bDQ3MSA0NzFxMTAgOSAyMyA5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTg7IiBkPSJNMzM5IDEwOThoMTYwcTEzIDAgMjMgLTlsNDcxIC00NzFxNyAtOCA3IC0xOHQtNyAtMThsLTQ3MSAtNDcxcS0xMCAtOSAtMjMgLTloLTE2MHEtMTYgMCAtMjEgMTF0NyAyM2w0NjQgNDY0bC00NjQgNDY0cS0xMiAxMiAtNyAyM3QyMSAxMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU5OyIgZD0iTTEwODcgODgycTExIC01IDExIC0yMXYtMTYwcTAgLTEzIC05IC0yM2wtNDcxIC00NzFxLTggLTcgLTE4IC03dC0xOCA3bC00NzEgNDcxcS05IDEwIC05IDIzdjE2MHEwIDE2IDExIDIxdDIzIC03bDQ2NCAtNDY0bDQ2NCA0NjRxMTIgMTIgMjMgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjYwOyIgZD0iTTYxOCA5OTNsNDcxIC00NzFxOSAtMTAgOSAtMjN2LTE2MHEwIC0xNiAtMTEgLTIxdC0yMyA3bC00NjQgNDY0bC00NjQgLTQ2NHEtMTIgLTEyIC0yMyAtN3QtMTEgMjF2MTYwcTAgMTMgOSAyM2w0NzEgNDcxcTggNyAxOCA3dDE4IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGY4ZmY7IiBkPSJNMTAwMCAxMjAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek00NTAgMTAwMGgxMDBxMjEgMCA0MCAtMTR0MjYgLTMzbDc5IC0xOTRxNSAxIDE2IDNxMzQgNiA1NCA5LjV0NjAgN3Q2NS41IDF0NjEgLTEwdDU2LjUgLTIzdDQyLjUgLTQydDI5IC02NHQ1IC05MnQtMTkuNSAtMTIxLjVxLTEgLTcgLTMgLTE5LjV0LTExIC01MHQtMjAuNSAtNzN0LTMyLjUgLTgxLjV0LTQ2LjUgLTgzdC02NCAtNzAgdC04Mi41IC01MHEtMTMgLTUgLTQyIC01dC02NS41IDIuNXQtNDcuNSAyLjVxLTE0IDAgLTQ5LjUgLTMuNXQtNjMgLTMuNXQtNDMuNSA3cS01NyAyNSAtMTA0LjUgNzguNXQtNzUgMTExLjV0LTQ2LjUgMTEydC0yNiA5MGwtNyAzNXEtMTUgNjMgLTE4IDExNXQ0LjUgODguNXQyNiA2NHQzOS41IDQzLjV0NTIgMjUuNXQ1OC41IDEzdDYyLjUgMnQ1OS41IC00LjV0NTUuNSAtOGwtMTQ3IDE5MnEtMTIgMTggLTUuNSAzMHQyNy41IDEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNTExOyIgZD0iTTI1MCAxMjAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTUwMGwtMjU1IC0xNzhxLTE5IC05IC0zMiAtMXQtMTMgMjl2NjUwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQwMCAxMTAwdi0xMDBoMzAwdjEwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNmFhOyIgZD0iTTI1MCAxMjAwaDc1MHEzOSAwIDY5LjUgLTQwLjV0MzAuNSAtODQuNXYtOTMzbC03MDAgLTExN3Y5NTBsNjAwIDEyNWgtNzAwdi0xMDAwaC0xMDB2MTAyNXEwIDIzIDE1LjUgNDl0MzQuNSAyNnpNNTAwIDUyNXYtMTAwbDEwMCAyMHYxMDB6IiAvPgo8L2ZvbnQ%2BCjwvZGVmcz48L3N2Zz4g%29%20format%28%27svg%27%29%7D%2Eglyphicon%7Bposition%3Arelative%3Btop%3A1px%3Bdisplay%3Ainline%2Dblock%3Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eglyphicon%2Dasterisk%3Abefore%7Bcontent%3A%22%5C2a%22%7D%2Eglyphicon%2Dplus%3Abefore%7Bcontent%3A%22%5C2b%22%7D%2Eglyphicon%2Deur%3Abefore%2C%2Eglyphicon%2Deuro%3Abefore%7Bcontent%3A%22%5C20ac%22%7D%2Eglyphicon%2Dminus%3Abefore%7Bcontent%3A%22%5C2212%22%7D%2Eglyphicon%2Dcloud%3Abefore%7Bcontent%3A%22%5C2601%22%7D%2Eglyphicon%2Denvelope%3Abefore%7Bcontent%3A%22%5C2709%22%7D%2Eglyphicon%2Dpencil%3Abefore%7Bcontent%3A%22%5C270f%22%7D%2Eglyphicon%2Dglass%3Abefore%7Bcontent%3A%22%5Ce001%22%7D%2Eglyphicon%2Dmusic%3Abefore%7Bcontent%3A%22%5Ce002%22%7D%2Eglyphicon%2Dsearch%3Abefore%7Bcontent%3A%22%5Ce003%22%7D%2Eglyphicon%2Dheart%3Abefore%7Bcontent%3A%22%5Ce005%22%7D%2Eglyphicon%2Dstar%3Abefore%7Bcontent%3A%22%5Ce006%22%7D%2Eglyphicon%2Dstar%2Dempty%3Abefore%7Bcontent%3A%22%5Ce007%22%7D%2Eglyphicon%2Duser%3Abefore%7Bcontent%3A%22%5Ce008%22%7D%2Eglyphicon%2Dfilm%3Abefore%7Bcontent%3A%22%5Ce009%22%7D%2Eglyphicon%2Dth%2Dlarge%3Abefore%7Bcontent%3A%22%5Ce010%22%7D%2Eglyphicon%2Dth%3Abefore%7Bcontent%3A%22%5Ce011%22%7D%2Eglyphicon%2Dth%2Dlist%3Abefore%7Bcontent%3A%22%5Ce012%22%7D%2Eglyphicon%2Dok%3Abefore%7Bcontent%3A%22%5Ce013%22%7D%2Eglyphicon%2Dremove%3Abefore%7Bcontent%3A%22%5Ce014%22%7D%2Eglyphicon%2Dzoom%2Din%3Abefore%7Bcontent%3A%22%5Ce015%22%7D%2Eglyphicon%2Dzoom%2Dout%3Abefore%7Bcontent%3A%22%5Ce016%22%7D%2Eglyphicon%2Doff%3Abefore%7Bcontent%3A%22%5Ce017%22%7D%2Eglyphicon%2Dsignal%3Abefore%7Bcontent%3A%22%5Ce018%22%7D%2Eglyphicon%2Dcog%3Abefore%7Bcontent%3A%22%5Ce019%22%7D%2Eglyphicon%2Dtrash%3Abefore%7Bcontent%3A%22%5Ce020%22%7D%2Eglyphicon%2Dhome%3Abefore%7Bcontent%3A%22%5Ce021%22%7D%2Eglyphicon%2Dfile%3Abefore%7Bcontent%3A%22%5Ce022%22%7D%2Eglyphicon%2Dtime%3Abefore%7Bcontent%3A%22%5Ce023%22%7D%2Eglyphicon%2Droad%3Abefore%7Bcontent%3A%22%5Ce024%22%7D%2Eglyphicon%2Ddownload%2Dalt%3Abefore%7Bcontent%3A%22%5Ce025%22%7D%2Eglyphicon%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce026%22%7D%2Eglyphicon%2Dupload%3Abefore%7Bcontent%3A%22%5Ce027%22%7D%2Eglyphicon%2Dinbox%3Abefore%7Bcontent%3A%22%5Ce028%22%7D%2Eglyphicon%2Dplay%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce029%22%7D%2Eglyphicon%2Drepeat%3Abefore%7Bcontent%3A%22%5Ce030%22%7D%2Eglyphicon%2Drefresh%3Abefore%7Bcontent%3A%22%5Ce031%22%7D%2Eglyphicon%2Dlist%2Dalt%3Abefore%7Bcontent%3A%22%5Ce032%22%7D%2Eglyphicon%2Dlock%3Abefore%7Bcontent%3A%22%5Ce033%22%7D%2Eglyphicon%2Dflag%3Abefore%7Bcontent%3A%22%5Ce034%22%7D%2Eglyphicon%2Dheadphones%3Abefore%7Bcontent%3A%22%5Ce035%22%7D%2Eglyphicon%2Dvolume%2Doff%3Abefore%7Bcontent%3A%22%5Ce036%22%7D%2Eglyphicon%2Dvolume%2Ddown%3Abefore%7Bcontent%3A%22%5Ce037%22%7D%2Eglyphicon%2Dvolume%2Dup%3Abefore%7Bcontent%3A%22%5Ce038%22%7D%2Eglyphicon%2Dqrcode%3Abefore%7Bcontent%3A%22%5Ce039%22%7D%2Eglyphicon%2Dbarcode%3Abefore%7Bcontent%3A%22%5Ce040%22%7D%2Eglyphicon%2Dtag%3Abefore%7Bcontent%3A%22%5Ce041%22%7D%2Eglyphicon%2Dtags%3Abefore%7Bcontent%3A%22%5Ce042%22%7D%2Eglyphicon%2Dbook%3Abefore%7Bcontent%3A%22%5Ce043%22%7D%2Eglyphicon%2Dbookmark%3Abefore%7Bcontent%3A%22%5Ce044%22%7D%2Eglyphicon%2Dprint%3Abefore%7Bcontent%3A%22%5Ce045%22%7D%2Eglyphicon%2Dcamera%3Abefore%7Bcontent%3A%22%5Ce046%22%7D%2Eglyphicon%2Dfont%3Abefore%7Bcontent%3A%22%5Ce047%22%7D%2Eglyphicon%2Dbold%3Abefore%7Bcontent%3A%22%5Ce048%22%7D%2Eglyphicon%2Ditalic%3Abefore%7Bcontent%3A%22%5Ce049%22%7D%2Eglyphicon%2Dtext%2Dheight%3Abefore%7Bcontent%3A%22%5Ce050%22%7D%2Eglyphicon%2Dtext%2Dwidth%3Abefore%7Bcontent%3A%22%5Ce051%22%7D%2Eglyphicon%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce052%22%7D%2Eglyphicon%2Dalign%2Dcenter%3Abefore%7Bcontent%3A%22%5Ce053%22%7D%2Eglyphicon%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce054%22%7D%2Eglyphicon%2Dalign%2Djustify%3Abefore%7Bcontent%3A%22%5Ce055%22%7D%2Eglyphicon%2Dlist%3Abefore%7Bcontent%3A%22%5Ce056%22%7D%2Eglyphicon%2Dindent%2Dleft%3Abefore%7Bcontent%3A%22%5Ce057%22%7D%2Eglyphicon%2Dindent%2Dright%3Abefore%7Bcontent%3A%22%5Ce058%22%7D%2Eglyphicon%2Dfacetime%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce059%22%7D%2Eglyphicon%2Dpicture%3Abefore%7Bcontent%3A%22%5Ce060%22%7D%2Eglyphicon%2Dmap%2Dmarker%3Abefore%7Bcontent%3A%22%5Ce062%22%7D%2Eglyphicon%2Dadjust%3Abefore%7Bcontent%3A%22%5Ce063%22%7D%2Eglyphicon%2Dtint%3Abefore%7Bcontent%3A%22%5Ce064%22%7D%2Eglyphicon%2Dedit%3Abefore%7Bcontent%3A%22%5Ce065%22%7D%2Eglyphicon%2Dshare%3Abefore%7Bcontent%3A%22%5Ce066%22%7D%2Eglyphicon%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce067%22%7D%2Eglyphicon%2Dmove%3Abefore%7Bcontent%3A%22%5Ce068%22%7D%2Eglyphicon%2Dstep%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce069%22%7D%2Eglyphicon%2Dfast%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce070%22%7D%2Eglyphicon%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce071%22%7D%2Eglyphicon%2Dplay%3Abefore%7Bcontent%3A%22%5Ce072%22%7D%2Eglyphicon%2Dpause%3Abefore%7Bcontent%3A%22%5Ce073%22%7D%2Eglyphicon%2Dstop%3Abefore%7Bcontent%3A%22%5Ce074%22%7D%2Eglyphicon%2Dforward%3Abefore%7Bcontent%3A%22%5Ce075%22%7D%2Eglyphicon%2Dfast%2Dforward%3Abefore%7Bcontent%3A%22%5Ce076%22%7D%2Eglyphicon%2Dstep%2Dforward%3Abefore%7Bcontent%3A%22%5Ce077%22%7D%2Eglyphicon%2Deject%3Abefore%7Bcontent%3A%22%5Ce078%22%7D%2Eglyphicon%2Dchevron%2Dleft%3Abefore%7Bcontent%3A%22%5Ce079%22%7D%2Eglyphicon%2Dchevron%2Dright%3Abefore%7Bcontent%3A%22%5Ce080%22%7D%2Eglyphicon%2Dplus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce081%22%7D%2Eglyphicon%2Dminus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce082%22%7D%2Eglyphicon%2Dremove%2Dsign%3Abefore%7Bcontent%3A%22%5Ce083%22%7D%2Eglyphicon%2Dok%2Dsign%3Abefore%7Bcontent%3A%22%5Ce084%22%7D%2Eglyphicon%2Dquestion%2Dsign%3Abefore%7Bcontent%3A%22%5Ce085%22%7D%2Eglyphicon%2Dinfo%2Dsign%3Abefore%7Bcontent%3A%22%5Ce086%22%7D%2Eglyphicon%2Dscreenshot%3Abefore%7Bcontent%3A%22%5Ce087%22%7D%2Eglyphicon%2Dremove%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce088%22%7D%2Eglyphicon%2Dok%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce089%22%7D%2Eglyphicon%2Dban%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce090%22%7D%2Eglyphicon%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce091%22%7D%2Eglyphicon%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce092%22%7D%2Eglyphicon%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce093%22%7D%2Eglyphicon%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce094%22%7D%2Eglyphicon%2Dshare%2Dalt%3Abefore%7Bcontent%3A%22%5Ce095%22%7D%2Eglyphicon%2Dresize%2Dfull%3Abefore%7Bcontent%3A%22%5Ce096%22%7D%2Eglyphicon%2Dresize%2Dsmall%3Abefore%7Bcontent%3A%22%5Ce097%22%7D%2Eglyphicon%2Dexclamation%2Dsign%3Abefore%7Bcontent%3A%22%5Ce101%22%7D%2Eglyphicon%2Dgift%3Abefore%7Bcontent%3A%22%5Ce102%22%7D%2Eglyphicon%2Dleaf%3Abefore%7Bcontent%3A%22%5Ce103%22%7D%2Eglyphicon%2Dfire%3Abefore%7Bcontent%3A%22%5Ce104%22%7D%2Eglyphicon%2Deye%2Dopen%3Abefore%7Bcontent%3A%22%5Ce105%22%7D%2Eglyphicon%2Deye%2Dclose%3Abefore%7Bcontent%3A%22%5Ce106%22%7D%2Eglyphicon%2Dwarning%2Dsign%3Abefore%7Bcontent%3A%22%5Ce107%22%7D%2Eglyphicon%2Dplane%3Abefore%7Bcontent%3A%22%5Ce108%22%7D%2Eglyphicon%2Dcalendar%3Abefore%7Bcontent%3A%22%5Ce109%22%7D%2Eglyphicon%2Drandom%3Abefore%7Bcontent%3A%22%5Ce110%22%7D%2Eglyphicon%2Dcomment%3Abefore%7Bcontent%3A%22%5Ce111%22%7D%2Eglyphicon%2Dmagnet%3Abefore%7Bcontent%3A%22%5Ce112%22%7D%2Eglyphicon%2Dchevron%2Dup%3Abefore%7Bcontent%3A%22%5Ce113%22%7D%2Eglyphicon%2Dchevron%2Ddown%3Abefore%7Bcontent%3A%22%5Ce114%22%7D%2Eglyphicon%2Dretweet%3Abefore%7Bcontent%3A%22%5Ce115%22%7D%2Eglyphicon%2Dshopping%2Dcart%3Abefore%7Bcontent%3A%22%5Ce116%22%7D%2Eglyphicon%2Dfolder%2Dclose%3Abefore%7Bcontent%3A%22%5Ce117%22%7D%2Eglyphicon%2Dfolder%2Dopen%3Abefore%7Bcontent%3A%22%5Ce118%22%7D%2Eglyphicon%2Dresize%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce119%22%7D%2Eglyphicon%2Dresize%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce120%22%7D%2Eglyphicon%2Dhdd%3Abefore%7Bcontent%3A%22%5Ce121%22%7D%2Eglyphicon%2Dbullhorn%3Abefore%7Bcontent%3A%22%5Ce122%22%7D%2Eglyphicon%2Dbell%3Abefore%7Bcontent%3A%22%5Ce123%22%7D%2Eglyphicon%2Dcertificate%3Abefore%7Bcontent%3A%22%5Ce124%22%7D%2Eglyphicon%2Dthumbs%2Dup%3Abefore%7Bcontent%3A%22%5Ce125%22%7D%2Eglyphicon%2Dthumbs%2Ddown%3Abefore%7Bcontent%3A%22%5Ce126%22%7D%2Eglyphicon%2Dhand%2Dright%3Abefore%7Bcontent%3A%22%5Ce127%22%7D%2Eglyphicon%2Dhand%2Dleft%3Abefore%7Bcontent%3A%22%5Ce128%22%7D%2Eglyphicon%2Dhand%2Dup%3Abefore%7Bcontent%3A%22%5Ce129%22%7D%2Eglyphicon%2Dhand%2Ddown%3Abefore%7Bcontent%3A%22%5Ce130%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce131%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce132%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce133%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce134%22%7D%2Eglyphicon%2Dglobe%3Abefore%7Bcontent%3A%22%5Ce135%22%7D%2Eglyphicon%2Dwrench%3Abefore%7Bcontent%3A%22%5Ce136%22%7D%2Eglyphicon%2Dtasks%3Abefore%7Bcontent%3A%22%5Ce137%22%7D%2Eglyphicon%2Dfilter%3Abefore%7Bcontent%3A%22%5Ce138%22%7D%2Eglyphicon%2Dbriefcase%3Abefore%7Bcontent%3A%22%5Ce139%22%7D%2Eglyphicon%2Dfullscreen%3Abefore%7Bcontent%3A%22%5Ce140%22%7D%2Eglyphicon%2Ddashboard%3Abefore%7Bcontent%3A%22%5Ce141%22%7D%2Eglyphicon%2Dpaperclip%3Abefore%7Bcontent%3A%22%5Ce142%22%7D%2Eglyphicon%2Dheart%2Dempty%3Abefore%7Bcontent%3A%22%5Ce143%22%7D%2Eglyphicon%2Dlink%3Abefore%7Bcontent%3A%22%5Ce144%22%7D%2Eglyphicon%2Dphone%3Abefore%7Bcontent%3A%22%5Ce145%22%7D%2Eglyphicon%2Dpushpin%3Abefore%7Bcontent%3A%22%5Ce146%22%7D%2Eglyphicon%2Dusd%3Abefore%7Bcontent%3A%22%5Ce148%22%7D%2Eglyphicon%2Dgbp%3Abefore%7Bcontent%3A%22%5Ce149%22%7D%2Eglyphicon%2Dsort%3Abefore%7Bcontent%3A%22%5Ce150%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%3Abefore%7Bcontent%3A%22%5Ce151%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%2Dalt%3Abefore%7Bcontent%3A%22%5Ce152%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%3Abefore%7Bcontent%3A%22%5Ce153%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%2Dalt%3Abefore%7Bcontent%3A%22%5Ce154%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%3Abefore%7Bcontent%3A%22%5Ce155%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%2Dalt%3Abefore%7Bcontent%3A%22%5Ce156%22%7D%2Eglyphicon%2Dunchecked%3Abefore%7Bcontent%3A%22%5Ce157%22%7D%2Eglyphicon%2Dexpand%3Abefore%7Bcontent%3A%22%5Ce158%22%7D%2Eglyphicon%2Dcollapse%2Ddown%3Abefore%7Bcontent%3A%22%5Ce159%22%7D%2Eglyphicon%2Dcollapse%2Dup%3Abefore%7Bcontent%3A%22%5Ce160%22%7D%2Eglyphicon%2Dlog%2Din%3Abefore%7Bcontent%3A%22%5Ce161%22%7D%2Eglyphicon%2Dflash%3Abefore%7Bcontent%3A%22%5Ce162%22%7D%2Eglyphicon%2Dlog%2Dout%3Abefore%7Bcontent%3A%22%5Ce163%22%7D%2Eglyphicon%2Dnew%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce164%22%7D%2Eglyphicon%2Drecord%3Abefore%7Bcontent%3A%22%5Ce165%22%7D%2Eglyphicon%2Dsave%3Abefore%7Bcontent%3A%22%5Ce166%22%7D%2Eglyphicon%2Dopen%3Abefore%7Bcontent%3A%22%5Ce167%22%7D%2Eglyphicon%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce168%22%7D%2Eglyphicon%2Dimport%3Abefore%7Bcontent%3A%22%5Ce169%22%7D%2Eglyphicon%2Dexport%3Abefore%7Bcontent%3A%22%5Ce170%22%7D%2Eglyphicon%2Dsend%3Abefore%7Bcontent%3A%22%5Ce171%22%7D%2Eglyphicon%2Dfloppy%2Ddisk%3Abefore%7Bcontent%3A%22%5Ce172%22%7D%2Eglyphicon%2Dfloppy%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce173%22%7D%2Eglyphicon%2Dfloppy%2Dremove%3Abefore%7Bcontent%3A%22%5Ce174%22%7D%2Eglyphicon%2Dfloppy%2Dsave%3Abefore%7Bcontent%3A%22%5Ce175%22%7D%2Eglyphicon%2Dfloppy%2Dopen%3Abefore%7Bcontent%3A%22%5Ce176%22%7D%2Eglyphicon%2Dcredit%2Dcard%3Abefore%7Bcontent%3A%22%5Ce177%22%7D%2Eglyphicon%2Dtransfer%3Abefore%7Bcontent%3A%22%5Ce178%22%7D%2Eglyphicon%2Dcutlery%3Abefore%7Bcontent%3A%22%5Ce179%22%7D%2Eglyphicon%2Dheader%3Abefore%7Bcontent%3A%22%5Ce180%22%7D%2Eglyphicon%2Dcompressed%3Abefore%7Bcontent%3A%22%5Ce181%22%7D%2Eglyphicon%2Dearphone%3Abefore%7Bcontent%3A%22%5Ce182%22%7D%2Eglyphicon%2Dphone%2Dalt%3Abefore%7Bcontent%3A%22%5Ce183%22%7D%2Eglyphicon%2Dtower%3Abefore%7Bcontent%3A%22%5Ce184%22%7D%2Eglyphicon%2Dstats%3Abefore%7Bcontent%3A%22%5Ce185%22%7D%2Eglyphicon%2Dsd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce186%22%7D%2Eglyphicon%2Dhd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce187%22%7D%2Eglyphicon%2Dsubtitles%3Abefore%7Bcontent%3A%22%5Ce188%22%7D%2Eglyphicon%2Dsound%2Dstereo%3Abefore%7Bcontent%3A%22%5Ce189%22%7D%2Eglyphicon%2Dsound%2Ddolby%3Abefore%7Bcontent%3A%22%5Ce190%22%7D%2Eglyphicon%2Dsound%2D5%2D1%3Abefore%7Bcontent%3A%22%5Ce191%22%7D%2Eglyphicon%2Dsound%2D6%2D1%3Abefore%7Bcontent%3A%22%5Ce192%22%7D%2Eglyphicon%2Dsound%2D7%2D1%3Abefore%7Bcontent%3A%22%5Ce193%22%7D%2Eglyphicon%2Dcopyright%2Dmark%3Abefore%7Bcontent%3A%22%5Ce194%22%7D%2Eglyphicon%2Dregistration%2Dmark%3Abefore%7Bcontent%3A%22%5Ce195%22%7D%2Eglyphicon%2Dcloud%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce197%22%7D%2Eglyphicon%2Dcloud%2Dupload%3Abefore%7Bcontent%3A%22%5Ce198%22%7D%2Eglyphicon%2Dtree%2Dconifer%3Abefore%7Bcontent%3A%22%5Ce199%22%7D%2Eglyphicon%2Dtree%2Ddeciduous%3Abefore%7Bcontent%3A%22%5Ce200%22%7D%2Eglyphicon%2Dcd%3Abefore%7Bcontent%3A%22%5Ce201%22%7D%2Eglyphicon%2Dsave%2Dfile%3Abefore%7Bcontent%3A%22%5Ce202%22%7D%2Eglyphicon%2Dopen%2Dfile%3Abefore%7Bcontent%3A%22%5Ce203%22%7D%2Eglyphicon%2Dlevel%2Dup%3Abefore%7Bcontent%3A%22%5Ce204%22%7D%2Eglyphicon%2Dcopy%3Abefore%7Bcontent%3A%22%5Ce205%22%7D%2Eglyphicon%2Dpaste%3Abefore%7Bcontent%3A%22%5Ce206%22%7D%2Eglyphicon%2Dalert%3Abefore%7Bcontent%3A%22%5Ce209%22%7D%2Eglyphicon%2Dequalizer%3Abefore%7Bcontent%3A%22%5Ce210%22%7D%2Eglyphicon%2Dking%3Abefore%7Bcontent%3A%22%5Ce211%22%7D%2Eglyphicon%2Dqueen%3Abefore%7Bcontent%3A%22%5Ce212%22%7D%2Eglyphicon%2Dpawn%3Abefore%7Bcontent%3A%22%5Ce213%22%7D%2Eglyphicon%2Dbishop%3Abefore%7Bcontent%3A%22%5Ce214%22%7D%2Eglyphicon%2Dknight%3Abefore%7Bcontent%3A%22%5Ce215%22%7D%2Eglyphicon%2Dbaby%2Dformula%3Abefore%7Bcontent%3A%22%5Ce216%22%7D%2Eglyphicon%2Dtent%3Abefore%7Bcontent%3A%22%5C26fa%22%7D%2Eglyphicon%2Dblackboard%3Abefore%7Bcontent%3A%22%5Ce218%22%7D%2Eglyphicon%2Dbed%3Abefore%7Bcontent%3A%22%5Ce219%22%7D%2Eglyphicon%2Dapple%3Abefore%7Bcontent%3A%22%5Cf8ff%22%7D%2Eglyphicon%2Derase%3Abefore%7Bcontent%3A%22%5Ce221%22%7D%2Eglyphicon%2Dhourglass%3Abefore%7Bcontent%3A%22%5C231b%22%7D%2Eglyphicon%2Dlamp%3Abefore%7Bcontent%3A%22%5Ce223%22%7D%2Eglyphicon%2Dduplicate%3Abefore%7Bcontent%3A%22%5Ce224%22%7D%2Eglyphicon%2Dpiggy%2Dbank%3Abefore%7Bcontent%3A%22%5Ce225%22%7D%2Eglyphicon%2Dscissors%3Abefore%7Bcontent%3A%22%5Ce226%22%7D%2Eglyphicon%2Dbitcoin%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dbtc%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dxbt%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dyen%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Djpy%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Druble%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Drub%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Dscale%3Abefore%7Bcontent%3A%22%5Ce230%22%7D%2Eglyphicon%2Dice%2Dlolly%3Abefore%7Bcontent%3A%22%5Ce231%22%7D%2Eglyphicon%2Dice%2Dlolly%2Dtasted%3Abefore%7Bcontent%3A%22%5Ce232%22%7D%2Eglyphicon%2Deducation%3Abefore%7Bcontent%3A%22%5Ce233%22%7D%2Eglyphicon%2Doption%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce234%22%7D%2Eglyphicon%2Doption%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce235%22%7D%2Eglyphicon%2Dmenu%2Dhamburger%3Abefore%7Bcontent%3A%22%5Ce236%22%7D%2Eglyphicon%2Dmodal%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce237%22%7D%2Eglyphicon%2Doil%3Abefore%7Bcontent%3A%22%5Ce238%22%7D%2Eglyphicon%2Dgrain%3Abefore%7Bcontent%3A%22%5Ce239%22%7D%2Eglyphicon%2Dsunglasses%3Abefore%7Bcontent%3A%22%5Ce240%22%7D%2Eglyphicon%2Dtext%2Dsize%3Abefore%7Bcontent%3A%22%5Ce241%22%7D%2Eglyphicon%2Dtext%2Dcolor%3Abefore%7Bcontent%3A%22%5Ce242%22%7D%2Eglyphicon%2Dtext%2Dbackground%3Abefore%7Bcontent%3A%22%5Ce243%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dtop%3Abefore%7Bcontent%3A%22%5Ce244%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce245%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce246%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce247%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce248%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce249%22%7D%2Eglyphicon%2Dtriangle%2Dright%3Abefore%7Bcontent%3A%22%5Ce250%22%7D%2Eglyphicon%2Dtriangle%2Dleft%3Abefore%7Bcontent%3A%22%5Ce251%22%7D%2Eglyphicon%2Dtriangle%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce252%22%7D%2Eglyphicon%2Dtriangle%2Dtop%3Abefore%7Bcontent%3A%22%5Ce253%22%7D%2Eglyphicon%2Dconsole%3Abefore%7Bcontent%3A%22%5Ce254%22%7D%2Eglyphicon%2Dsuperscript%3Abefore%7Bcontent%3A%22%5Ce255%22%7D%2Eglyphicon%2Dsubscript%3Abefore%7Bcontent%3A%22%5Ce256%22%7D%2Eglyphicon%2Dmenu%2Dleft%3Abefore%7Bcontent%3A%22%5Ce257%22%7D%2Eglyphicon%2Dmenu%2Dright%3Abefore%7Bcontent%3A%22%5Ce258%22%7D%2Eglyphicon%2Dmenu%2Ddown%3Abefore%7Bcontent%3A%22%5Ce259%22%7D%2Eglyphicon%2Dmenu%2Dup%3Abefore%7Bcontent%3A%22%5Ce260%22%7D%2A%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7D%3Aafter%2C%3Abefore%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dhtml%7Bfont%2Dsize%3A10px%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7Dbody%7Bfont%2Dfamily%3A%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23fff%7Dbutton%2Cinput%2Cselect%2Ctextarea%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Ainherit%7Da%7Bcolor%3A%23337ab7%3Btext%2Ddecoration%3Anone%7Da%3Afocus%2Ca%3Ahover%7Bcolor%3A%2323527c%3Btext%2Ddecoration%3Aunderline%7Da%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Dfigure%7Bmargin%3A0%7Dimg%7Bvertical%2Dalign%3Amiddle%7D%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Eimg%2Dresponsive%2C%2Ethumbnail%20a%3Eimg%2C%2Ethumbnail%3Eimg%7Bdisplay%3Ablock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Drounded%7Bborder%2Dradius%3A6px%7D%2Eimg%2Dthumbnail%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%3Bpadding%3A4px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%7D%2Eimg%2Dcircle%7Bborder%2Dradius%3A50%25%7Dhr%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A20px%3Bborder%3A0%3Bborder%2Dtop%3A1px%20solid%20%23eee%7D%2Esr%2Donly%7Bposition%3Aabsolute%3Bwidth%3A1px%3Bheight%3A1px%3Bpadding%3A0%3Bmargin%3A%2D1px%3Boverflow%3Ahidden%3Bclip%3Arect%280%2C0%2C0%2C0%29%3Bborder%3A0%7D%2Esr%2Donly%2Dfocusable%3Aactive%2C%2Esr%2Donly%2Dfocusable%3Afocus%7Bposition%3Astatic%3Bwidth%3Aauto%3Bheight%3Aauto%3Bmargin%3A0%3Boverflow%3Avisible%3Bclip%3Aauto%7D%5Brole%3Dbutton%5D%7Bcursor%3Apointer%7D%2Eh1%2C%2Eh2%2C%2Eh3%2C%2Eh4%2C%2Eh5%2C%2Eh6%2Ch1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dweight%3A500%3Bline%2Dheight%3A1%2E1%3Bcolor%3Ainherit%7D%2Eh1%20%2Esmall%2C%2Eh1%20small%2C%2Eh2%20%2Esmall%2C%2Eh2%20small%2C%2Eh3%20%2Esmall%2C%2Eh3%20small%2C%2Eh4%20%2Esmall%2C%2Eh4%20small%2C%2Eh5%20%2Esmall%2C%2Eh5%20small%2C%2Eh6%20%2Esmall%2C%2Eh6%20small%2Ch1%20%2Esmall%2Ch1%20small%2Ch2%20%2Esmall%2Ch2%20small%2Ch3%20%2Esmall%2Ch3%20small%2Ch4%20%2Esmall%2Ch4%20small%2Ch5%20%2Esmall%2Ch5%20small%2Ch6%20%2Esmall%2Ch6%20small%7Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%3Bcolor%3A%23777%7D%2Eh1%2C%2Eh2%2C%2Eh3%2Ch1%2Ch2%2Ch3%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A10px%7D%2Eh1%20%2Esmall%2C%2Eh1%20small%2C%2Eh2%20%2Esmall%2C%2Eh2%20small%2C%2Eh3%20%2Esmall%2C%2Eh3%20small%2Ch1%20%2Esmall%2Ch1%20small%2Ch2%20%2Esmall%2Ch2%20small%2Ch3%20%2Esmall%2Ch3%20small%7Bfont%2Dsize%3A65%25%7D%2Eh4%2C%2Eh5%2C%2Eh6%2Ch4%2Ch5%2Ch6%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Eh4%20%2Esmall%2C%2Eh4%20small%2C%2Eh5%20%2Esmall%2C%2Eh5%20small%2C%2Eh6%20%2Esmall%2C%2Eh6%20small%2Ch4%20%2Esmall%2Ch4%20small%2Ch5%20%2Esmall%2Ch5%20small%2Ch6%20%2Esmall%2Ch6%20small%7Bfont%2Dsize%3A75%25%7D%2Eh1%2Ch1%7Bfont%2Dsize%3A36px%7D%2Eh2%2Ch2%7Bfont%2Dsize%3A30px%7D%2Eh3%2Ch3%7Bfont%2Dsize%3A24px%7D%2Eh4%2Ch4%7Bfont%2Dsize%3A18px%7D%2Eh5%2Ch5%7Bfont%2Dsize%3A14px%7D%2Eh6%2Ch6%7Bfont%2Dsize%3A12px%7Dp%7Bmargin%3A0%200%2010px%7D%2Elead%7Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A300%3Bline%2Dheight%3A1%2E4%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Elead%7Bfont%2Dsize%3A21px%7D%7D%2Esmall%2Csmall%7Bfont%2Dsize%3A85%25%7D%2Emark%2Cmark%7Bpadding%3A%2E2em%3Bbackground%2Dcolor%3A%23fcf8e3%7D%2Etext%2Dleft%7Btext%2Dalign%3Aleft%7D%2Etext%2Dright%7Btext%2Dalign%3Aright%7D%2Etext%2Dcenter%7Btext%2Dalign%3Acenter%7D%2Etext%2Djustify%7Btext%2Dalign%3Ajustify%7D%2Etext%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7D%2Etext%2Dlowercase%7Btext%2Dtransform%3Alowercase%7D%2Etext%2Duppercase%7Btext%2Dtransform%3Auppercase%7D%2Etext%2Dcapitalize%7Btext%2Dtransform%3Acapitalize%7D%2Etext%2Dmuted%7Bcolor%3A%23777%7D%2Etext%2Dprimary%7Bcolor%3A%23337ab7%7Da%2Etext%2Dprimary%3Afocus%2Ca%2Etext%2Dprimary%3Ahover%7Bcolor%3A%23286090%7D%2Etext%2Dsuccess%7Bcolor%3A%233c763d%7Da%2Etext%2Dsuccess%3Afocus%2Ca%2Etext%2Dsuccess%3Ahover%7Bcolor%3A%232b542c%7D%2Etext%2Dinfo%7Bcolor%3A%2331708f%7Da%2Etext%2Dinfo%3Afocus%2Ca%2Etext%2Dinfo%3Ahover%7Bcolor%3A%23245269%7D%2Etext%2Dwarning%7Bcolor%3A%238a6d3b%7Da%2Etext%2Dwarning%3Afocus%2Ca%2Etext%2Dwarning%3Ahover%7Bcolor%3A%2366512c%7D%2Etext%2Ddanger%7Bcolor%3A%23a94442%7Da%2Etext%2Ddanger%3Afocus%2Ca%2Etext%2Ddanger%3Ahover%7Bcolor%3A%23843534%7D%2Ebg%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%7Da%2Ebg%2Dprimary%3Afocus%2Ca%2Ebg%2Dprimary%3Ahover%7Bbackground%2Dcolor%3A%23286090%7D%2Ebg%2Dsuccess%7Bbackground%2Dcolor%3A%23dff0d8%7Da%2Ebg%2Dsuccess%3Afocus%2Ca%2Ebg%2Dsuccess%3Ahover%7Bbackground%2Dcolor%3A%23c1e2b3%7D%2Ebg%2Dinfo%7Bbackground%2Dcolor%3A%23d9edf7%7Da%2Ebg%2Dinfo%3Afocus%2Ca%2Ebg%2Dinfo%3Ahover%7Bbackground%2Dcolor%3A%23afd9ee%7D%2Ebg%2Dwarning%7Bbackground%2Dcolor%3A%23fcf8e3%7Da%2Ebg%2Dwarning%3Afocus%2Ca%2Ebg%2Dwarning%3Ahover%7Bbackground%2Dcolor%3A%23f7ecb5%7D%2Ebg%2Ddanger%7Bbackground%2Dcolor%3A%23f2dede%7Da%2Ebg%2Ddanger%3Afocus%2Ca%2Ebg%2Ddanger%3Ahover%7Bbackground%2Dcolor%3A%23e4b9b9%7D%2Epage%2Dheader%7Bpadding%2Dbottom%3A9px%3Bmargin%3A40px%200%2020px%3Bborder%2Dbottom%3A1px%20solid%20%23eee%7Dol%2Cul%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A10px%7Dol%20ol%2Col%20ul%2Cul%20ol%2Cul%20ul%7Bmargin%2Dbottom%3A0%7D%2Elist%2Dunstyled%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%7Bpadding%2Dleft%3A0%3Bmargin%2Dleft%3A%2D5px%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%3Eli%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dright%3A5px%3Bpadding%2Dleft%3A5px%7Ddl%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A20px%7Ddd%2Cdt%7Bline%2Dheight%3A1%2E42857143%7Ddt%7Bfont%2Dweight%3A700%7Ddd%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Edl%2Dhorizontal%20dt%7Bfloat%3Aleft%3Bwidth%3A160px%3Boverflow%3Ahidden%3Bclear%3Aleft%3Btext%2Dalign%3Aright%3Btext%2Doverflow%3Aellipsis%3Bwhite%2Dspace%3Anowrap%7D%2Edl%2Dhorizontal%20dd%7Bmargin%2Dleft%3A180px%7D%7Dabbr%5Bdata%2Doriginal%2Dtitle%5D%2Cabbr%5Btitle%5D%7Bcursor%3Ahelp%3Bborder%2Dbottom%3A1px%20dotted%20%23777%7D%2Einitialism%7Bfont%2Dsize%3A90%25%3Btext%2Dtransform%3Auppercase%7Dblockquote%7Bpadding%3A10px%2020px%3Bmargin%3A0%200%2020px%3Bfont%2Dsize%3A17%2E5px%3Bborder%2Dleft%3A5px%20solid%20%23eee%7Dblockquote%20ol%3Alast%2Dchild%2Cblockquote%20p%3Alast%2Dchild%2Cblockquote%20ul%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7Dblockquote%20%2Esmall%2Cblockquote%20footer%2Cblockquote%20small%7Bdisplay%3Ablock%3Bfont%2Dsize%3A80%25%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23777%7Dblockquote%20%2Esmall%3Abefore%2Cblockquote%20footer%3Abefore%2Cblockquote%20small%3Abefore%7Bcontent%3A%27%5C2014%20%5C00A0%27%7D%2Eblockquote%2Dreverse%2Cblockquote%2Epull%2Dright%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A0%3Btext%2Dalign%3Aright%3Bborder%2Dright%3A5px%20solid%20%23eee%3Bborder%2Dleft%3A0%7D%2Eblockquote%2Dreverse%20%2Esmall%3Abefore%2C%2Eblockquote%2Dreverse%20footer%3Abefore%2C%2Eblockquote%2Dreverse%20small%3Abefore%2Cblockquote%2Epull%2Dright%20%2Esmall%3Abefore%2Cblockquote%2Epull%2Dright%20footer%3Abefore%2Cblockquote%2Epull%2Dright%20small%3Abefore%7Bcontent%3A%27%27%7D%2Eblockquote%2Dreverse%20%2Esmall%3Aafter%2C%2Eblockquote%2Dreverse%20footer%3Aafter%2C%2Eblockquote%2Dreverse%20small%3Aafter%2Cblockquote%2Epull%2Dright%20%2Esmall%3Aafter%2Cblockquote%2Epull%2Dright%20footer%3Aafter%2Cblockquote%2Epull%2Dright%20small%3Aafter%7Bcontent%3A%27%5C00A0%20%5C2014%27%7Daddress%7Bmargin%2Dbottom%3A20px%3Bfont%2Dstyle%3Anormal%3Bline%2Dheight%3A1%2E42857143%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%7Dcode%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23c7254e%3Bbackground%2Dcolor%3A%23f9f2f4%3Bborder%2Dradius%3A4px%7Dkbd%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23333%3Bborder%2Dradius%3A3px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E25%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E25%29%7Dkbd%20kbd%7Bpadding%3A0%3Bfont%2Dsize%3A100%25%3Bfont%2Dweight%3A700%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Dpre%7Bdisplay%3Ablock%3Bpadding%3A9%2E5px%3Bmargin%3A0%200%2010px%3Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23333%3Bword%2Dbreak%3Abreak%2Dall%3Bword%2Dwrap%3Abreak%2Dword%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23ccc%3Bborder%2Dradius%3A4px%7Dpre%20code%7Bpadding%3A0%3Bfont%2Dsize%3Ainherit%3Bcolor%3Ainherit%3Bwhite%2Dspace%3Apre%2Dwrap%3Bbackground%2Dcolor%3Atransparent%3Bborder%2Dradius%3A0%7D%2Epre%2Dscrollable%7Bmax%2Dheight%3A340px%3Boverflow%2Dy%3Ascroll%7D%2Econtainer%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%7Bwidth%3A750px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Econtainer%7Bwidth%3A970px%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Econtainer%7Bwidth%3A1170px%7D%7D%2Econtainer%2Dfluid%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7D%2Erow%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%7Bposition%3Arelative%3Bmin%2Dheight%3A1px%3Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dxs%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dxs%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dxs%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dxs%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dxs%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dxs%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dxs%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dxs%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dxs%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dxs%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dxs%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dxs%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dxs%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dxs%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dxs%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dxs%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dxs%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dxs%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dxs%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dxs%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dxs%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dsm%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dsm%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dsm%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dsm%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dsm%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dsm%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dsm%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dsm%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dsm%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dsm%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dsm%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dsm%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dsm%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dsm%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dsm%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dsm%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dsm%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dsm%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dsm%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dsm%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dsm%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dsm%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dsm%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dsm%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dsm%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dsm%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dmd%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dmd%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dmd%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dmd%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dmd%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dmd%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dmd%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dmd%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dmd%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dmd%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dmd%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dmd%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dmd%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dmd%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dmd%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dmd%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dmd%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dmd%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dmd%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dmd%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dmd%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dmd%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dmd%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dmd%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dmd%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dmd%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dlg%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dlg%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dlg%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dlg%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dlg%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dlg%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dlg%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dlg%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dlg%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dlg%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dlg%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dlg%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dlg%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dlg%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dlg%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dlg%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dlg%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dlg%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dlg%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dlg%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dlg%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dlg%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dlg%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dlg%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dlg%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dlg%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%7Dtable%7Bbackground%2Dcolor%3Atransparent%7Dcaption%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bcolor%3A%23777%3Btext%2Dalign%3Aleft%7Dth%7B%7D%2Etable%7Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A20px%7D%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2C%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%3Ethead%3Etr%3Eth%7Bpadding%3A8px%3Bline%2Dheight%3A1%2E42857143%3Bvertical%2Dalign%3Atop%3Bborder%2Dtop%3A1px%20solid%20%23ddd%7D%2Etable%3Ethead%3Etr%3Eth%7Bvertical%2Dalign%3Abottom%3Bborder%2Dbottom%3A2px%20solid%20%23ddd%7D%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dtop%3A0%7D%2Etable%3Etbody%2Btbody%7Bborder%2Dtop%3A2px%20solid%20%23ddd%7D%2Etable%20%2Etable%7Bbackground%2Dcolor%3A%23fff%7D%2Etable%2Dcondensed%3Etbody%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Eth%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Etd%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Eth%7Bpadding%3A5px%7D%2Etable%2Dbordered%7Bborder%3A1px%20solid%20%23ddd%7D%2Etable%2Dbordered%3Etbody%3Etr%3Etd%2C%2Etable%2Dbordered%3Etbody%3Etr%3Eth%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Ethead%3Etr%3Eth%7Bborder%3A1px%20solid%20%23ddd%7D%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Ethead%3Etr%3Eth%7Bborder%2Dbottom%2Dwidth%3A2px%7D%2Etable%2Dstriped%3Etbody%3Etr%3Anth%2Dof%2Dtype%28odd%29%7Bbackground%2Dcolor%3A%23f9f9f9%7D%2Etable%2Dhover%3Etbody%3Etr%3Ahover%7Bbackground%2Dcolor%3A%23f5f5f5%7Dtable%20col%5Bclass%2A%3Dcol%2D%5D%7Bposition%3Astatic%3Bdisplay%3Atable%2Dcolumn%3Bfloat%3Anone%7Dtable%20td%5Bclass%2A%3Dcol%2D%5D%2Ctable%20th%5Bclass%2A%3Dcol%2D%5D%7Bposition%3Astatic%3Bdisplay%3Atable%2Dcell%3Bfloat%3Anone%7D%2Etable%3Etbody%3Etr%2Eactive%3Etd%2C%2Etable%3Etbody%3Etr%2Eactive%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Eactive%2C%2Etable%3Etbody%3Etr%3Eth%2Eactive%2C%2Etable%3Etfoot%3Etr%2Eactive%3Etd%2C%2Etable%3Etfoot%3Etr%2Eactive%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Eactive%2C%2Etable%3Etfoot%3Etr%3Eth%2Eactive%2C%2Etable%3Ethead%3Etr%2Eactive%3Etd%2C%2Etable%3Ethead%3Etr%2Eactive%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Eactive%2C%2Etable%3Ethead%3Etr%3Eth%2Eactive%7Bbackground%2Dcolor%3A%23f5f5f5%7D%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Eactive%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Eactive%3Ahover%7Bbackground%2Dcolor%3A%23e8e8e8%7D%2Etable%3Etbody%3Etr%2Esuccess%3Etd%2C%2Etable%3Etbody%3Etr%2Esuccess%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Esuccess%2C%2Etable%3Etbody%3Etr%3Eth%2Esuccess%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Etd%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Eth%2Esuccess%2C%2Etable%3Ethead%3Etr%2Esuccess%3Etd%2C%2Etable%3Ethead%3Etr%2Esuccess%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Esuccess%2C%2Etable%3Ethead%3Etr%3Eth%2Esuccess%7Bbackground%2Dcolor%3A%23dff0d8%7D%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Esuccess%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Esuccess%3Ahover%7Bbackground%2Dcolor%3A%23d0e9c6%7D%2Etable%3Etbody%3Etr%2Einfo%3Etd%2C%2Etable%3Etbody%3Etr%2Einfo%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Einfo%2C%2Etable%3Etbody%3Etr%3Eth%2Einfo%2C%2Etable%3Etfoot%3Etr%2Einfo%3Etd%2C%2Etable%3Etfoot%3Etr%2Einfo%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Einfo%2C%2Etable%3Etfoot%3Etr%3Eth%2Einfo%2C%2Etable%3Ethead%3Etr%2Einfo%3Etd%2C%2Etable%3Ethead%3Etr%2Einfo%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Einfo%2C%2Etable%3Ethead%3Etr%3Eth%2Einfo%7Bbackground%2Dcolor%3A%23d9edf7%7D%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Einfo%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Einfo%3Ahover%7Bbackground%2Dcolor%3A%23c4e3f3%7D%2Etable%3Etbody%3Etr%2Ewarning%3Etd%2C%2Etable%3Etbody%3Etr%2Ewarning%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Ewarning%2C%2Etable%3Etbody%3Etr%3Eth%2Ewarning%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Etd%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Eth%2Ewarning%2C%2Etable%3Ethead%3Etr%2Ewarning%3Etd%2C%2Etable%3Ethead%3Etr%2Ewarning%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Ewarning%2C%2Etable%3Ethead%3Etr%3Eth%2Ewarning%7Bbackground%2Dcolor%3A%23fcf8e3%7D%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Ewarning%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Ewarning%3Ahover%7Bbackground%2Dcolor%3A%23faf2cc%7D%2Etable%3Etbody%3Etr%2Edanger%3Etd%2C%2Etable%3Etbody%3Etr%2Edanger%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Edanger%2C%2Etable%3Etbody%3Etr%3Eth%2Edanger%2C%2Etable%3Etfoot%3Etr%2Edanger%3Etd%2C%2Etable%3Etfoot%3Etr%2Edanger%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Edanger%2C%2Etable%3Etfoot%3Etr%3Eth%2Edanger%2C%2Etable%3Ethead%3Etr%2Edanger%3Etd%2C%2Etable%3Ethead%3Etr%2Edanger%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Edanger%2C%2Etable%3Ethead%3Etr%3Eth%2Edanger%7Bbackground%2Dcolor%3A%23f2dede%7D%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Edanger%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Edanger%3Ahover%7Bbackground%2Dcolor%3A%23ebcccc%7D%2Etable%2Dresponsive%7Bmin%2Dheight%3A%2E01%25%3Boverflow%2Dx%3Aauto%7D%40media%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Etable%2Dresponsive%7Bwidth%3A100%25%3Bmargin%2Dbottom%3A15px%3Boverflow%2Dy%3Ahidden%3B%2Dms%2Doverflow%2Dstyle%3A%2Dms%2Dautohiding%2Dscrollbar%3Bborder%3A1px%20solid%20%23ddd%7D%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Eth%7Bwhite%2Dspace%3Anowrap%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%7Dfieldset%7Bmin%2Dwidth%3A0%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%7Dlegend%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bpadding%3A0%3Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A21px%3Bline%2Dheight%3Ainherit%3Bcolor%3A%23333%3Bborder%3A0%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7Dlabel%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A5px%3Bfont%2Dweight%3A700%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dinput%5Btype%3Dcheckbox%5D%2Cinput%5Btype%3Dradio%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%5C9%3Bline%2Dheight%3Anormal%7Dinput%5Btype%3Dfile%5D%7Bdisplay%3Ablock%7Dinput%5Btype%3Drange%5D%7Bdisplay%3Ablock%3Bwidth%3A100%25%7Dselect%5Bmultiple%5D%2Cselect%5Bsize%5D%7Bheight%3Aauto%7Dinput%5Btype%3Dfile%5D%3Afocus%2Cinput%5Btype%3Dcheckbox%5D%3Afocus%2Cinput%5Btype%3Dradio%5D%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Doutput%7Bdisplay%3Ablock%3Bpadding%2Dtop%3A7px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555%7D%2Eform%2Dcontrol%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A34px%3Bpadding%3A6px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23fff%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20%23ccc%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3B%2Dwebkit%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2C%2Dwebkit%2Dbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3B%2Do%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3Btransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%7D%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366afe9%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C%2E6%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C%2E6%29%7D%2Eform%2Dcontrol%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23999%3Bopacity%3A1%7D%2Eform%2Dcontrol%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23999%7D%2Eform%2Dcontrol%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23999%7D%2Eform%2Dcontrol%5Bdisabled%5D%2C%2Eform%2Dcontrol%5Breadonly%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bbackground%2Dcolor%3A%23eee%3Bopacity%3A1%7D%2Eform%2Dcontrol%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bcursor%3Anot%2Dallowed%7Dtextarea%2Eform%2Dcontrol%7Bheight%3Aauto%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dappearance%3Anone%7D%40media%20screen%20and%20%28%2Dwebkit%2Dmin%2Ddevice%2Dpixel%2Dratio%3A0%29%7Binput%5Btype%3Ddate%5D%2Eform%2Dcontrol%2Cinput%5Btype%3Dtime%5D%2Eform%2Dcontrol%2Cinput%5Btype%3Ddatetime%2Dlocal%5D%2Eform%2Dcontrol%2Cinput%5Btype%3Dmonth%5D%2Eform%2Dcontrol%7Bline%2Dheight%3A34px%7D%2Einput%2Dgroup%2Dsm%20input%5Btype%3Ddate%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3Dtime%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3Ddatetime%2Dlocal%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3Dmonth%5D%2Cinput%5Btype%3Ddate%5D%2Einput%2Dsm%2Cinput%5Btype%3Dtime%5D%2Einput%2Dsm%2Cinput%5Btype%3Ddatetime%2Dlocal%5D%2Einput%2Dsm%2Cinput%5Btype%3Dmonth%5D%2Einput%2Dsm%7Bline%2Dheight%3A30px%7D%2Einput%2Dgroup%2Dlg%20input%5Btype%3Ddate%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3Dtime%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3Ddatetime%2Dlocal%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3Dmonth%5D%2Cinput%5Btype%3Ddate%5D%2Einput%2Dlg%2Cinput%5Btype%3Dtime%5D%2Einput%2Dlg%2Cinput%5Btype%3Ddatetime%2Dlocal%5D%2Einput%2Dlg%2Cinput%5Btype%3Dmonth%5D%2Einput%2Dlg%7Bline%2Dheight%3A46px%7D%7D%2Eform%2Dgroup%7Bmargin%2Dbottom%3A15px%7D%2Echeckbox%2C%2Eradio%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Echeckbox%20label%2C%2Eradio%20label%7Bmin%2Dheight%3A20px%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bcursor%3Apointer%7D%2Echeckbox%20input%5Btype%3Dcheckbox%5D%2C%2Echeckbox%2Dinline%20input%5Btype%3Dcheckbox%5D%2C%2Eradio%20input%5Btype%3Dradio%5D%2C%2Eradio%2Dinline%20input%5Btype%3Dradio%5D%7Bposition%3Aabsolute%3Bmargin%2Dtop%3A4px%5C9%3Bmargin%2Dleft%3A%2D20px%7D%2Echeckbox%2B%2Echeckbox%2C%2Eradio%2B%2Eradio%7Bmargin%2Dtop%3A%2D5px%7D%2Echeckbox%2Dinline%2C%2Eradio%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bvertical%2Dalign%3Amiddle%3Bcursor%3Apointer%7D%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%2C%2Eradio%2Dinline%2B%2Eradio%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7Dfieldset%5Bdisabled%5D%20input%5Btype%3Dcheckbox%5D%2Cfieldset%5Bdisabled%5D%20input%5Btype%3Dradio%5D%2Cinput%5Btype%3Dcheckbox%5D%2Edisabled%2Cinput%5Btype%3Dcheckbox%5D%5Bdisabled%5D%2Cinput%5Btype%3Dradio%5D%2Edisabled%2Cinput%5Btype%3Dradio%5D%5Bdisabled%5D%7Bcursor%3Anot%2Dallowed%7D%2Echeckbox%2Dinline%2Edisabled%2C%2Eradio%2Dinline%2Edisabled%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%2Dinline%2Cfieldset%5Bdisabled%5D%20%2Eradio%2Dinline%7Bcursor%3Anot%2Dallowed%7D%2Echeckbox%2Edisabled%20label%2C%2Eradio%2Edisabled%20label%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%20label%2Cfieldset%5Bdisabled%5D%20%2Eradio%20label%7Bcursor%3Anot%2Dallowed%7D%2Eform%2Dcontrol%2Dstatic%7Bmin%2Dheight%3A34px%3Bpadding%2Dtop%3A7px%3Bpadding%2Dbottom%3A7px%3Bmargin%2Dbottom%3A0%7D%2Eform%2Dcontrol%2Dstatic%2Einput%2Dlg%2C%2Eform%2Dcontrol%2Dstatic%2Einput%2Dsm%7Bpadding%2Dright%3A0%3Bpadding%2Dleft%3A0%7D%2Einput%2Dsm%7Bheight%3A30px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7Dselect%2Einput%2Dsm%7Bheight%3A30px%3Bline%2Dheight%3A30px%7Dselect%5Bmultiple%5D%2Einput%2Dsm%2Ctextarea%2Einput%2Dsm%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%7Bheight%3A30px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7D%2Eform%2Dgroup%2Dsm%20select%2Eform%2Dcontrol%7Bheight%3A30px%3Bline%2Dheight%3A30px%7D%2Eform%2Dgroup%2Dsm%20select%5Bmultiple%5D%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dsm%20textarea%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A30px%3Bmin%2Dheight%3A32px%3Bpadding%3A6px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Einput%2Dlg%7Bheight%3A46px%3Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7Dselect%2Einput%2Dlg%7Bheight%3A46px%3Bline%2Dheight%3A46px%7Dselect%5Bmultiple%5D%2Einput%2Dlg%2Ctextarea%2Einput%2Dlg%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%7Bheight%3A46px%3Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7D%2Eform%2Dgroup%2Dlg%20select%2Eform%2Dcontrol%7Bheight%3A46px%3Bline%2Dheight%3A46px%7D%2Eform%2Dgroup%2Dlg%20select%5Bmultiple%5D%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dlg%20textarea%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A46px%3Bmin%2Dheight%3A38px%3Bpadding%3A11px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Ehas%2Dfeedback%7Bposition%3Arelative%7D%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%7Bpadding%2Dright%3A42%2E5px%7D%2Eform%2Dcontrol%2Dfeedback%7Bposition%3Aabsolute%3Btop%3A0%3Bright%3A0%3Bz%2Dindex%3A2%3Bdisplay%3Ablock%3Bwidth%3A34px%3Bheight%3A34px%3Bline%2Dheight%3A34px%3Btext%2Dalign%3Acenter%3Bpointer%2Devents%3Anone%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A46px%3Bheight%3A46px%3Bline%2Dheight%3A46px%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A30px%3Bheight%3A30px%3Bline%2Dheight%3A30px%7D%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%7Bcolor%3A%233c763d%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%233c763d%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%232b542c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%2367b168%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%2367b168%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%3Bborder%2Dcolor%3A%233c763d%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%233c763d%7D%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%7Bcolor%3A%238a6d3b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%238a6d3b%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366512c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23c0a16b%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23c0a16b%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%3Bborder%2Dcolor%3A%238a6d3b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%238a6d3b%7D%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%7Bcolor%3A%23a94442%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23a94442%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23843534%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23ce8483%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23ce8483%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%3Bborder%2Dcolor%3A%23a94442%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23a94442%7D%2Ehas%2Dfeedback%20label%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A25px%7D%2Ehas%2Dfeedback%20label%2Esr%2Donly%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%2Ehelp%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dtop%3A5px%3Bmargin%2Dbottom%3A10px%3Bcolor%3A%23737373%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dinline%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Eform%2Dinline%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%7Bwidth%3Aauto%7D%2Eform%2Dinline%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Eform%2Dinline%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Echeckbox%2C%2Eform%2Dinline%20%2Eradio%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Echeckbox%20label%2C%2Eform%2Dinline%20%2Eradio%20label%7Bpadding%2Dleft%3A0%7D%2Eform%2Dinline%20%2Echeckbox%20input%5Btype%3Dcheckbox%5D%2C%2Eform%2Dinline%20%2Eradio%20input%5Btype%3Dradio%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Eform%2Dinline%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Echeckbox%2Dinline%2C%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Eradio%2Dinline%7Bpadding%2Dtop%3A7px%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%7D%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Eradio%7Bmin%2Dheight%3A27px%7D%2Eform%2Dhorizontal%20%2Eform%2Dgroup%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A7px%3Bmargin%2Dbottom%3A0%3Btext%2Dalign%3Aright%7D%7D%2Eform%2Dhorizontal%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Bright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dlg%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A14%2E33px%3Bfont%2Dsize%3A18px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dsm%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A6px%3Bfont%2Dsize%3A12px%7D%7D%2Ebtn%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A6px%2012px%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%3B%2Dms%2Dtouch%2Daction%3Amanipulation%3Btouch%2Daction%3Amanipulation%3Bcursor%3Apointer%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ebtn%2Eactive%2Efocus%2C%2Ebtn%2Eactive%3Afocus%2C%2Ebtn%2Efocus%2C%2Ebtn%3Aactive%2Efocus%2C%2Ebtn%3Aactive%3Afocus%2C%2Ebtn%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7D%2Ebtn%2Efocus%2C%2Ebtn%3Afocus%2C%2Ebtn%3Ahover%7Bcolor%3A%23333%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Eactive%2C%2Ebtn%3Aactive%7Bbackground%2Dimage%3Anone%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%7D%2Ebtn%2Edisabled%2C%2Ebtn%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%7Bcursor%3Anot%2Dallowed%3Bfilter%3Aalpha%28opacity%3D65%29%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%3Bopacity%3A%2E65%7Da%2Ebtn%2Edisabled%2Cfieldset%5Bdisabled%5D%20a%2Ebtn%7Bpointer%2Devents%3Anone%7D%2Ebtn%2Ddefault%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23ccc%7D%2Ebtn%2Ddefault%2Efocus%2C%2Ebtn%2Ddefault%3Afocus%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23e6e6e6%3Bborder%2Dcolor%3A%238c8c8c%7D%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23e6e6e6%3Bborder%2Dcolor%3A%23adadad%7D%2Ebtn%2Ddefault%2Eactive%2C%2Ebtn%2Ddefault%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23e6e6e6%3Bborder%2Dcolor%3A%23adadad%7D%2Ebtn%2Ddefault%2Eactive%2Efocus%2C%2Ebtn%2Ddefault%2Eactive%3Afocus%2C%2Ebtn%2Ddefault%2Eactive%3Ahover%2C%2Ebtn%2Ddefault%3Aactive%2Efocus%2C%2Ebtn%2Ddefault%3Aactive%3Afocus%2C%2Ebtn%2Ddefault%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23d4d4d4%3Bborder%2Dcolor%3A%238c8c8c%7D%2Ebtn%2Ddefault%2Eactive%2C%2Ebtn%2Ddefault%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddefault%2Edisabled%2C%2Ebtn%2Ddefault%2Edisabled%2Eactive%2C%2Ebtn%2Ddefault%2Edisabled%2Efocus%2C%2Ebtn%2Ddefault%2Edisabled%3Aactive%2C%2Ebtn%2Ddefault%2Edisabled%3Afocus%2C%2Ebtn%2Ddefault%2Edisabled%3Ahover%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Ahover%7Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23ccc%7D%2Ebtn%2Ddefault%20%2Ebadge%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23333%7D%2Ebtn%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%232e6da4%7D%2Ebtn%2Dprimary%2Efocus%2C%2Ebtn%2Dprimary%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23286090%3Bborder%2Dcolor%3A%23122b40%7D%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23286090%3Bborder%2Dcolor%3A%23204d74%7D%2Ebtn%2Dprimary%2Eactive%2C%2Ebtn%2Dprimary%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23286090%3Bborder%2Dcolor%3A%23204d74%7D%2Ebtn%2Dprimary%2Eactive%2Efocus%2C%2Ebtn%2Dprimary%2Eactive%3Afocus%2C%2Ebtn%2Dprimary%2Eactive%3Ahover%2C%2Ebtn%2Dprimary%3Aactive%2Efocus%2C%2Ebtn%2Dprimary%3Aactive%3Afocus%2C%2Ebtn%2Dprimary%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23204d74%3Bborder%2Dcolor%3A%23122b40%7D%2Ebtn%2Dprimary%2Eactive%2C%2Ebtn%2Dprimary%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dprimary%2Edisabled%2C%2Ebtn%2Dprimary%2Edisabled%2Eactive%2C%2Ebtn%2Dprimary%2Edisabled%2Efocus%2C%2Ebtn%2Dprimary%2Edisabled%3Aactive%2C%2Ebtn%2Dprimary%2Edisabled%3Afocus%2C%2Ebtn%2Dprimary%2Edisabled%3Ahover%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Ahover%7Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%232e6da4%7D%2Ebtn%2Dprimary%20%2Ebadge%7Bcolor%3A%23337ab7%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dsuccess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%235cb85c%3Bborder%2Dcolor%3A%234cae4c%7D%2Ebtn%2Dsuccess%2Efocus%2C%2Ebtn%2Dsuccess%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23449d44%3Bborder%2Dcolor%3A%23255625%7D%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23449d44%3Bborder%2Dcolor%3A%23398439%7D%2Ebtn%2Dsuccess%2Eactive%2C%2Ebtn%2Dsuccess%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23449d44%3Bborder%2Dcolor%3A%23398439%7D%2Ebtn%2Dsuccess%2Eactive%2Efocus%2C%2Ebtn%2Dsuccess%2Eactive%3Afocus%2C%2Ebtn%2Dsuccess%2Eactive%3Ahover%2C%2Ebtn%2Dsuccess%3Aactive%2Efocus%2C%2Ebtn%2Dsuccess%3Aactive%3Afocus%2C%2Ebtn%2Dsuccess%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23398439%3Bborder%2Dcolor%3A%23255625%7D%2Ebtn%2Dsuccess%2Eactive%2C%2Ebtn%2Dsuccess%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dsuccess%2Edisabled%2C%2Ebtn%2Dsuccess%2Edisabled%2Eactive%2C%2Ebtn%2Dsuccess%2Edisabled%2Efocus%2C%2Ebtn%2Dsuccess%2Edisabled%3Aactive%2C%2Ebtn%2Dsuccess%2Edisabled%3Afocus%2C%2Ebtn%2Dsuccess%2Edisabled%3Ahover%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Ahover%7Bbackground%2Dcolor%3A%235cb85c%3Bborder%2Dcolor%3A%234cae4c%7D%2Ebtn%2Dsuccess%20%2Ebadge%7Bcolor%3A%235cb85c%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dinfo%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%235bc0de%3Bborder%2Dcolor%3A%2346b8da%7D%2Ebtn%2Dinfo%2Efocus%2C%2Ebtn%2Dinfo%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331b0d5%3Bborder%2Dcolor%3A%231b6d85%7D%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331b0d5%3Bborder%2Dcolor%3A%23269abc%7D%2Ebtn%2Dinfo%2Eactive%2C%2Ebtn%2Dinfo%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331b0d5%3Bborder%2Dcolor%3A%23269abc%7D%2Ebtn%2Dinfo%2Eactive%2Efocus%2C%2Ebtn%2Dinfo%2Eactive%3Afocus%2C%2Ebtn%2Dinfo%2Eactive%3Ahover%2C%2Ebtn%2Dinfo%3Aactive%2Efocus%2C%2Ebtn%2Dinfo%3Aactive%3Afocus%2C%2Ebtn%2Dinfo%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23269abc%3Bborder%2Dcolor%3A%231b6d85%7D%2Ebtn%2Dinfo%2Eactive%2C%2Ebtn%2Dinfo%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dinfo%2Edisabled%2C%2Ebtn%2Dinfo%2Edisabled%2Eactive%2C%2Ebtn%2Dinfo%2Edisabled%2Efocus%2C%2Ebtn%2Dinfo%2Edisabled%3Aactive%2C%2Ebtn%2Dinfo%2Edisabled%3Afocus%2C%2Ebtn%2Dinfo%2Edisabled%3Ahover%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Ahover%7Bbackground%2Dcolor%3A%235bc0de%3Bborder%2Dcolor%3A%2346b8da%7D%2Ebtn%2Dinfo%20%2Ebadge%7Bcolor%3A%235bc0de%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dwarning%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23f0ad4e%3Bborder%2Dcolor%3A%23eea236%7D%2Ebtn%2Dwarning%2Efocus%2C%2Ebtn%2Dwarning%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ec971f%3Bborder%2Dcolor%3A%23985f0d%7D%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ec971f%3Bborder%2Dcolor%3A%23d58512%7D%2Ebtn%2Dwarning%2Eactive%2C%2Ebtn%2Dwarning%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ec971f%3Bborder%2Dcolor%3A%23d58512%7D%2Ebtn%2Dwarning%2Eactive%2Efocus%2C%2Ebtn%2Dwarning%2Eactive%3Afocus%2C%2Ebtn%2Dwarning%2Eactive%3Ahover%2C%2Ebtn%2Dwarning%3Aactive%2Efocus%2C%2Ebtn%2Dwarning%3Aactive%3Afocus%2C%2Ebtn%2Dwarning%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23d58512%3Bborder%2Dcolor%3A%23985f0d%7D%2Ebtn%2Dwarning%2Eactive%2C%2Ebtn%2Dwarning%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dwarning%2Edisabled%2C%2Ebtn%2Dwarning%2Edisabled%2Eactive%2C%2Ebtn%2Dwarning%2Edisabled%2Efocus%2C%2Ebtn%2Dwarning%2Edisabled%3Aactive%2C%2Ebtn%2Dwarning%2Edisabled%3Afocus%2C%2Ebtn%2Dwarning%2Edisabled%3Ahover%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Ahover%7Bbackground%2Dcolor%3A%23f0ad4e%3Bborder%2Dcolor%3A%23eea236%7D%2Ebtn%2Dwarning%20%2Ebadge%7Bcolor%3A%23f0ad4e%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Ddanger%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23d9534f%3Bborder%2Dcolor%3A%23d43f3a%7D%2Ebtn%2Ddanger%2Efocus%2C%2Ebtn%2Ddanger%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c9302c%3Bborder%2Dcolor%3A%23761c19%7D%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c9302c%3Bborder%2Dcolor%3A%23ac2925%7D%2Ebtn%2Ddanger%2Eactive%2C%2Ebtn%2Ddanger%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c9302c%3Bborder%2Dcolor%3A%23ac2925%7D%2Ebtn%2Ddanger%2Eactive%2Efocus%2C%2Ebtn%2Ddanger%2Eactive%3Afocus%2C%2Ebtn%2Ddanger%2Eactive%3Ahover%2C%2Ebtn%2Ddanger%3Aactive%2Efocus%2C%2Ebtn%2Ddanger%3Aactive%3Afocus%2C%2Ebtn%2Ddanger%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ac2925%3Bborder%2Dcolor%3A%23761c19%7D%2Ebtn%2Ddanger%2Eactive%2C%2Ebtn%2Ddanger%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddanger%2Edisabled%2C%2Ebtn%2Ddanger%2Edisabled%2Eactive%2C%2Ebtn%2Ddanger%2Edisabled%2Efocus%2C%2Ebtn%2Ddanger%2Edisabled%3Aactive%2C%2Ebtn%2Ddanger%2Edisabled%3Afocus%2C%2Ebtn%2Ddanger%2Edisabled%3Ahover%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Ahover%7Bbackground%2Dcolor%3A%23d9534f%3Bborder%2Dcolor%3A%23d43f3a%7D%2Ebtn%2Ddanger%20%2Ebadge%7Bcolor%3A%23d9534f%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dlink%7Bfont%2Dweight%3A400%3Bcolor%3A%23337ab7%3Bborder%2Dradius%3A0%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%2Eactive%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%7Bbackground%2Dcolor%3Atransparent%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Ahover%7Bborder%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%2323527c%3Btext%2Ddecoration%3Aunderline%3Bbackground%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23777%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%2C%2Ebtn%2Dlg%7Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7D%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%2C%2Ebtn%2Dsm%7Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7D%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%2C%2Ebtn%2Dxs%7Bpadding%3A1px%205px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7D%2Ebtn%2Dblock%7Bdisplay%3Ablock%3Bwidth%3A100%25%7D%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dtop%3A5px%7Dinput%5Btype%3Dbutton%5D%2Ebtn%2Dblock%2Cinput%5Btype%3Dreset%5D%2Ebtn%2Dblock%2Cinput%5Btype%3Dsubmit%5D%2Ebtn%2Dblock%7Bwidth%3A100%25%7D%2Efade%7Bopacity%3A0%3B%2Dwebkit%2Dtransition%3Aopacity%20%2E15s%20linear%3B%2Do%2Dtransition%3Aopacity%20%2E15s%20linear%3Btransition%3Aopacity%20%2E15s%20linear%7D%2Efade%2Ein%7Bopacity%3A1%7D%2Ecollapse%7Bdisplay%3Anone%7D%2Ecollapse%2Ein%7Bdisplay%3Ablock%7Dtr%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%7Dtbody%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%2Dgroup%7D%2Ecollapsing%7Bposition%3Arelative%3Bheight%3A0%3Boverflow%3Ahidden%3B%2Dwebkit%2Dtransition%2Dtiming%2Dfunction%3Aease%3B%2Do%2Dtransition%2Dtiming%2Dfunction%3Aease%3Btransition%2Dtiming%2Dfunction%3Aease%3B%2Dwebkit%2Dtransition%2Dduration%3A%2E35s%3B%2Do%2Dtransition%2Dduration%3A%2E35s%3Btransition%2Dduration%3A%2E35s%3B%2Dwebkit%2Dtransition%2Dproperty%3Aheight%2Cvisibility%3B%2Do%2Dtransition%2Dproperty%3Aheight%2Cvisibility%3Btransition%2Dproperty%3Aheight%2Cvisibility%7D%2Ecaret%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A0%3Bheight%3A0%3Bmargin%2Dleft%3A2px%3Bvertical%2Dalign%3Amiddle%3Bborder%2Dtop%3A4px%20dashed%3Bborder%2Dtop%3A4px%20solid%5C9%3Bborder%2Dright%3A4px%20solid%20transparent%3Bborder%2Dleft%3A4px%20solid%20transparent%7D%2Edropdown%2C%2Edropup%7Bposition%3Arelative%7D%2Edropdown%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Edropdown%2Dmenu%7Bposition%3Aabsolute%3Btop%3A100%25%3Bleft%3A0%3Bz%2Dindex%3A1000%3Bdisplay%3Anone%3Bfloat%3Aleft%3Bmin%2Dwidth%3A160px%3Bpadding%3A5px%200%3Bmargin%3A2px%200%200%3Bfont%2Dsize%3A14px%3Btext%2Dalign%3Aleft%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23fff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23ccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E15%29%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C%2E175%29%3Bbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C%2E175%29%7D%2Edropdown%2Dmenu%2Epull%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%20%2Edivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Edropdown%2Dmenu%3Eli%3Ea%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bclear%3Aboth%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23333%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bcolor%3A%23262626%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23f5f5f5%7D%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23337ab7%3Boutline%3A0%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23777%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Btext%2Ddecoration%3Anone%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28enabled%3Dfalse%29%7D%2Eopen%3E%2Edropdown%2Dmenu%7Bdisplay%3Ablock%7D%2Eopen%3Ea%7Boutline%3A0%7D%2Edropdown%2Dmenu%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%2Dleft%7Bright%3Aauto%3Bleft%3A0%7D%2Edropdown%2Dheader%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23777%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A990%7D%2Epull%2Dright%3E%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Edropup%20%2Ecaret%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Ecaret%7Bcontent%3A%22%22%3Bborder%2Dtop%3A0%3Bborder%2Dbottom%3A4px%20dashed%3Bborder%2Dbottom%3A4px%20solid%5C9%7D%2Edropup%20%2Edropdown%2Dmenu%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bbottom%3A100%25%3Bmargin%2Dbottom%3A2px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dright%20%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Enavbar%2Dright%20%2Edropdown%2Dmenu%2Dleft%7Bright%3Aauto%3Bleft%3A0%7D%7D%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%3E%2Ebtn%7Bposition%3Arelative%3Bfloat%3Aleft%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Ahover%7Bz%2Dindex%3A2%7D%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dleft%3A%2D1px%7D%2Ebtn%2Dtoolbar%7Bmargin%2Dleft%3A%2D5px%7D%2Ebtn%2Dtoolbar%20%2Ebtn%2C%2Ebtn%2Dtoolbar%20%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%20%2Einput%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dtoolbar%3E%2Ebtn%2C%2Ebtn%2Dtoolbar%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%3E%2Einput%2Dgroup%7Bmargin%2Dleft%3A5px%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%2C%2Ebtn%2Dgroup%3E%2Edropdown%2Dtoggle%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%20%2Edropdown%2Dtoggle%3Aactive%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7Boutline%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2B%2Edropdown%2Dtoggle%7Bpadding%2Dright%3A8px%3Bpadding%2Dleft%3A8px%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dlg%2B%2Edropdown%2Dtoggle%7Bpadding%2Dright%3A12px%3Bpadding%2Dleft%3A12px%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dlink%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%20%2Ecaret%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Edropup%20%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A0%205px%205px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bdisplay%3Ablock%3Bfloat%3Anone%3Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bfloat%3Anone%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dtop%3A%2D1px%3Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Djustified%7Bdisplay%3Atable%3Bwidth%3A100%25%3Btable%2Dlayout%3Afixed%3Bborder%2Dcollapse%3Aseparate%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%7Bdisplay%3Atable%2Dcell%3Bfloat%3Anone%3Bwidth%3A1%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Ebtn%7Bwidth%3A100%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Edropdown%2Dmenu%7Bleft%3Aauto%7D%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%20input%5Btype%3Dcheckbox%5D%2C%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%20input%5Btype%3Dradio%5D%2C%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3Dcheckbox%5D%2C%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3Dradio%5D%7Bposition%3Aabsolute%3Bclip%3Arect%280%2C0%2C0%2C0%29%3Bpointer%2Devents%3Anone%7D%2Einput%2Dgroup%7Bposition%3Arelative%3Bdisplay%3Atable%3Bborder%2Dcollapse%3Aseparate%7D%2Einput%2Dgroup%5Bclass%2A%3Dcol%2D%5D%7Bfloat%3Anone%3Bpadding%2Dright%3A0%3Bpadding%2Dleft%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bposition%3Arelative%3Bz%2Dindex%3A2%3Bfloat%3Aleft%3Bwidth%3A100%25%3Bmargin%2Dbottom%3A0%7D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A46px%3Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7Dselect%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A46px%3Bline%2Dheight%3A46px%7Dselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A30px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7Dselect%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A30px%3Bline%2Dheight%3A30px%7Dselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bdisplay%3Atable%2Dcell%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Daddon%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bwidth%3A1%25%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%7D%2Einput%2Dgroup%2Daddon%7Bpadding%3A6px%2012px%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%3Bcolor%3A%23555%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23eee%3Bborder%3A1px%20solid%20%23ccc%3Bborder%2Dradius%3A4px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dsm%7Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A3px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dlg%7Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bborder%2Dradius%3A6px%7D%2Einput%2Dgroup%2Daddon%20input%5Btype%3Dcheckbox%5D%2C%2Einput%2Dgroup%2Daddon%20input%5Btype%3Dradio%5D%7Bmargin%2Dtop%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%7Bborder%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Alast%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Edropdown%2Dtoggle%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%7Bborder%2Dleft%3A0%7D%2Einput%2Dgroup%2Dbtn%7Bposition%3Arelative%3Bfont%2Dsize%3A0%3Bwhite%2Dspace%3Anowrap%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bposition%3Arelative%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Aactive%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Afocus%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Ahover%7Bz%2Dindex%3A2%7D%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%7Bmargin%2Dright%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%7Bz%2Dindex%3A2%3Bmargin%2Dleft%3A%2D1px%7D%2Enav%7Bpadding%2Dleft%3A0%3Bmargin%2Dbottom%3A0%3Blist%2Dstyle%3Anone%7D%2Enav%3Eli%7Bposition%3Arelative%3Bdisplay%3Ablock%7D%2Enav%3Eli%3Ea%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%7D%2Enav%3Eli%3Ea%3Afocus%2C%2Enav%3Eli%3Ea%3Ahover%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eee%7D%2Enav%3Eli%2Edisabled%3Ea%7Bcolor%3A%23777%7D%2Enav%3Eli%2Edisabled%3Ea%3Afocus%2C%2Enav%3Eli%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23777%3Btext%2Ddecoration%3Anone%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3Atransparent%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Afocus%2C%2Enav%20%2Eopen%3Ea%3Ahover%7Bbackground%2Dcolor%3A%23eee%3Bborder%2Dcolor%3A%23337ab7%7D%2Enav%20%2Enav%2Ddivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Enav%3Eli%3Ea%3Eimg%7Bmax%2Dwidth%3Anone%7D%2Enav%2Dtabs%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%7D%2Enav%2Dtabs%3Eli%7Bfloat%3Aleft%3Bmargin%2Dbottom%3A%2D1px%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dright%3A2px%3Bline%2Dheight%3A1%2E42857143%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%7Bborder%2Dcolor%3A%23eee%20%23eee%20%23ddd%7D%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%7Bcolor%3A%23555%3Bcursor%3Adefault%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Enav%2Dtabs%2Enav%2Djustified%7Bwidth%3A100%25%3Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A5px%3Btext%2Dalign%3Acenter%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%3A1px%20solid%20%23ddd%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%2Dbottom%2Dcolor%3A%23fff%7D%7D%2Enav%2Dpills%3Eli%7Bfloat%3Aleft%7D%2Enav%2Dpills%3Eli%3Ea%7Bborder%2Dradius%3A4px%7D%2Enav%2Dpills%3Eli%2Bli%7Bmargin%2Dleft%3A2px%7D%2Enav%2Dpills%3Eli%2Eactive%3Ea%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%7D%2Enav%2Dstacked%3Eli%7Bfloat%3Anone%7D%2Enav%2Dstacked%3Eli%2Bli%7Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A0%7D%2Enav%2Djustified%7Bwidth%3A100%25%7D%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A5px%3Btext%2Dalign%3Acenter%7D%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Djustified%7Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%3A1px%20solid%20%23ddd%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%2Dbottom%2Dcolor%3A%23fff%7D%7D%2Etab%2Dcontent%3E%2Etab%2Dpane%7Bdisplay%3Anone%7D%2Etab%2Dcontent%3E%2Eactive%7Bdisplay%3Ablock%7D%2Enav%2Dtabs%20%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A%2D1px%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Enavbar%7Bposition%3Arelative%3Bmin%2Dheight%3A50px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%7Bborder%2Dradius%3A4px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dheader%7Bfloat%3Aleft%7D%7D%2Enavbar%2Dcollapse%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Boverflow%2Dx%3Avisible%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Bborder%2Dtop%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dcollapse%7Bwidth%3Aauto%3Bborder%2Dtop%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dcollapse%2Ecollapse%7Bdisplay%3Ablock%21important%3Bheight%3Aauto%21important%3Bpadding%2Dbottom%3A0%3Boverflow%3Avisible%21important%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Avisible%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dstatic%2Dtop%20%2Enavbar%2Dcollapse%7Bpadding%2Dright%3A0%3Bpadding%2Dleft%3A0%7D%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A340px%7D%40media%20%28max%2Ddevice%2Dwidth%3A480px%29%20and%20%28orientation%3Alandscape%29%7B%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A200px%7D%7D%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%3E%2Enavbar%2Dheader%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%3E%2Enavbar%2Dheader%7Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%7D%7D%2Enavbar%2Dstatic%2Dtop%7Bz%2Dindex%3A1000%3Bborder%2Dwidth%3A0%200%201px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dstatic%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dbottom%2C%2Enavbar%2Dfixed%2Dtop%7Bposition%3Afixed%3Bright%3A0%3Bleft%3A0%3Bz%2Dindex%3A1030%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dfixed%2Dbottom%2C%2Enavbar%2Dfixed%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%7Btop%3A0%3Bborder%2Dwidth%3A0%200%201px%7D%2Enavbar%2Dfixed%2Dbottom%7Bbottom%3A0%3Bmargin%2Dbottom%3A0%3Bborder%2Dwidth%3A1px%200%200%7D%2Enavbar%2Dbrand%7Bfloat%3Aleft%3Bheight%3A50px%3Bpadding%3A15px%2015px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A20px%7D%2Enavbar%2Dbrand%3Afocus%2C%2Enavbar%2Dbrand%3Ahover%7Btext%2Ddecoration%3Anone%7D%2Enavbar%2Dbrand%3Eimg%7Bdisplay%3Ablock%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%3E%2Econtainer%20%2Enavbar%2Dbrand%2C%2Enavbar%3E%2Econtainer%2Dfluid%20%2Enavbar%2Dbrand%7Bmargin%2Dleft%3A%2D15px%7D%7D%2Enavbar%2Dtoggle%7Bposition%3Arelative%3Bfloat%3Aright%3Bpadding%3A9px%2010px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dright%3A15px%3Bmargin%2Dbottom%3A8px%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Enavbar%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bdisplay%3Ablock%3Bwidth%3A22px%3Bheight%3A2px%3Bborder%2Dradius%3A1px%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%2B%2Eicon%2Dbar%7Bmargin%2Dtop%3A4px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtoggle%7Bdisplay%3Anone%7D%7D%2Enavbar%2Dnav%7Bmargin%3A7%2E5px%20%2D15px%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bline%2Dheight%3A20px%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%7Bposition%3Astatic%3Bfloat%3Anone%3Bwidth%3Aauto%3Bmargin%2Dtop%3A0%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edropdown%2Dheader%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bpadding%3A5px%2015px%205px%2025px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bline%2Dheight%3A20px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bbackground%2Dimage%3Anone%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dnav%7Bfloat%3Aleft%3Bmargin%3A0%7D%2Enavbar%2Dnav%3Eli%7Bfloat%3Aleft%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A15px%3Bpadding%2Dbottom%3A15px%7D%7D%2Enavbar%2Dform%7Bpadding%3A10px%2015px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dright%3A%2D15px%3Bmargin%2Dbottom%3A8px%3Bmargin%2Dleft%3A%2D15px%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%7Bwidth%3Aauto%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Enavbar%2Dform%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Echeckbox%2C%2Enavbar%2Dform%20%2Eradio%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Echeckbox%20label%2C%2Enavbar%2Dform%20%2Eradio%20label%7Bpadding%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Echeckbox%20input%5Btype%3Dcheckbox%5D%2C%2Enavbar%2Dform%20%2Eradio%20input%5Btype%3Dradio%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bmargin%2Dbottom%3A5px%7D%2Enavbar%2Dform%20%2Eform%2Dgroup%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%7Bwidth%3Aauto%3Bpadding%2Dtop%3A0%3Bpadding%2Dbottom%3A0%3Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%7D%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dbottom%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dbtn%7Bmargin%2Dtop%3A8px%3Bmargin%2Dbottom%3A8px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%7Bmargin%2Dtop%3A14px%3Bmargin%2Dbottom%3A14px%7D%2Enavbar%2Dtext%7Bmargin%2Dtop%3A15px%3Bmargin%2Dbottom%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtext%7Bfloat%3Aleft%3Bmargin%2Dright%3A15px%3Bmargin%2Dleft%3A15px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dleft%7Bfloat%3Aleft%21important%7D%2Enavbar%2Dright%7Bfloat%3Aright%21important%3Bmargin%2Dright%3A%2D15px%7D%2Enavbar%2Dright%7E%2Enavbar%2Dright%7Bmargin%2Dright%3A0%7D%7D%2Enavbar%2Ddefault%7Bbackground%2Dcolor%3A%23f8f8f8%3Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Ahover%7Bcolor%3A%235e5e5e%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtext%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23ccc%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23ddd%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Ahover%7Bbackground%2Dcolor%3A%23ddd%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23888%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%7Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23e7e7e7%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23ccc%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23ccc%7D%2Enavbar%2Dinverse%7Bbackground%2Dcolor%3A%23222%3Bborder%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtext%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23444%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23333%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Ahover%7Bbackground%2Dcolor%3A%23333%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23fff%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23101010%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23080808%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edropdown%2Dheader%7Bborder%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edivider%7Bbackground%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23444%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23fff%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23fff%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23444%7D%2Ebreadcrumb%7Bpadding%3A8px%2015px%3Bmargin%2Dbottom%3A20px%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dradius%3A4px%7D%2Ebreadcrumb%3Eli%7Bdisplay%3Ainline%2Dblock%7D%2Ebreadcrumb%3Eli%2Bli%3Abefore%7Bpadding%3A0%205px%3Bcolor%3A%23ccc%3Bcontent%3A%22%2F%5C00a0%22%7D%2Ebreadcrumb%3E%2Eactive%7Bcolor%3A%23777%7D%2Epagination%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Bborder%2Dradius%3A4px%7D%2Epagination%3Eli%7Bdisplay%3Ainline%7D%2Epagination%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%7Bposition%3Arelative%3Bfloat%3Aleft%3Bpadding%3A6px%2012px%3Bmargin%2Dleft%3A%2D1px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23337ab7%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%7D%2Epagination%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%3Eli%3Afirst%2Dchild%3Espan%7Bmargin%2Dleft%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Epagination%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%7D%2Epagination%3Eli%3Ea%3Afocus%2C%2Epagination%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Afocus%2C%2Epagination%3Eli%3Espan%3Ahover%7Bz%2Dindex%3A3%3Bcolor%3A%2323527c%3Bbackground%2Dcolor%3A%23eee%3Bborder%2Dcolor%3A%23ddd%7D%2Epagination%3E%2Eactive%3Ea%2C%2Epagination%3E%2Eactive%3Ea%3Afocus%2C%2Epagination%3E%2Eactive%3Ea%3Ahover%2C%2Epagination%3E%2Eactive%3Espan%2C%2Epagination%3E%2Eactive%3Espan%3Afocus%2C%2Epagination%3E%2Eactive%3Espan%3Ahover%7Bz%2Dindex%3A2%3Bcolor%3A%23fff%3Bcursor%3Adefault%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%23337ab7%7D%2Epagination%3E%2Edisabled%3Ea%2C%2Epagination%3E%2Edisabled%3Ea%3Afocus%2C%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%2C%2Epagination%3E%2Edisabled%3Espan%3Afocus%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%7Bcolor%3A%23777%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23ddd%7D%2Epagination%2Dlg%3Eli%3Ea%2C%2Epagination%2Dlg%3Eli%3Espan%7Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dtop%2Dleft%2Dradius%3A6px%3Bborder%2Dbottom%2Dleft%2Dradius%3A6px%7D%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dtop%2Dright%2Dradius%3A6px%3Bborder%2Dbottom%2Dright%2Dradius%3A6px%7D%2Epagination%2Dsm%3Eli%3Ea%2C%2Epagination%2Dsm%3Eli%3Espan%7Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epager%7Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Btext%2Dalign%3Acenter%3Blist%2Dstyle%3Anone%7D%2Epager%20li%7Bdisplay%3Ainline%7D%2Epager%20li%3Ea%2C%2Epager%20li%3Espan%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%2014px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A15px%7D%2Epager%20li%3Ea%3Afocus%2C%2Epager%20li%3Ea%3Ahover%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eee%7D%2Epager%20%2Enext%3Ea%2C%2Epager%20%2Enext%3Espan%7Bfloat%3Aright%7D%2Epager%20%2Eprevious%3Ea%2C%2Epager%20%2Eprevious%3Espan%7Bfloat%3Aleft%7D%2Epager%20%2Edisabled%3Ea%2C%2Epager%20%2Edisabled%3Ea%3Afocus%2C%2Epager%20%2Edisabled%3Ea%3Ahover%2C%2Epager%20%2Edisabled%3Espan%7Bcolor%3A%23777%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3A%23fff%7D%2Elabel%7Bdisplay%3Ainline%3Bpadding%3A%2E2em%20%2E6em%20%2E3em%3Bfont%2Dsize%3A75%25%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Abaseline%3Bborder%2Dradius%3A%2E25em%7Da%2Elabel%3Afocus%2Ca%2Elabel%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elabel%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Elabel%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Elabel%2Ddefault%7Bbackground%2Dcolor%3A%23777%7D%2Elabel%2Ddefault%5Bhref%5D%3Afocus%2C%2Elabel%2Ddefault%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%235e5e5e%7D%2Elabel%2Dprimary%7Bbackground%2Dcolor%3A%23337ab7%7D%2Elabel%2Dprimary%5Bhref%5D%3Afocus%2C%2Elabel%2Dprimary%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23286090%7D%2Elabel%2Dsuccess%7Bbackground%2Dcolor%3A%235cb85c%7D%2Elabel%2Dsuccess%5Bhref%5D%3Afocus%2C%2Elabel%2Dsuccess%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23449d44%7D%2Elabel%2Dinfo%7Bbackground%2Dcolor%3A%235bc0de%7D%2Elabel%2Dinfo%5Bhref%5D%3Afocus%2C%2Elabel%2Dinfo%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%2331b0d5%7D%2Elabel%2Dwarning%7Bbackground%2Dcolor%3A%23f0ad4e%7D%2Elabel%2Dwarning%5Bhref%5D%3Afocus%2C%2Elabel%2Dwarning%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23ec971f%7D%2Elabel%2Ddanger%7Bbackground%2Dcolor%3A%23d9534f%7D%2Elabel%2Ddanger%5Bhref%5D%3Afocus%2C%2Elabel%2Ddanger%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23c9302c%7D%2Ebadge%7Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A10px%3Bpadding%3A3px%207px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%3Bbackground%2Dcolor%3A%23777%3Bborder%2Dradius%3A10px%7D%2Ebadge%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Ebadge%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%20%2Ebadge%2C%2Ebtn%2Dxs%20%2Ebadge%7Btop%3A0%3Bpadding%3A1px%205px%7Da%2Ebadge%3Afocus%2Ca%2Ebadge%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elist%2Dgroup%2Ditem%2Eactive%3E%2Ebadge%2C%2Enav%2Dpills%3E%2Eactive%3Ea%3E%2Ebadge%7Bcolor%3A%23337ab7%3Bbackground%2Dcolor%3A%23fff%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%7Bfloat%3Aright%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%2B%2Ebadge%7Bmargin%2Dright%3A5px%7D%2Enav%2Dpills%3Eli%3Ea%3E%2Ebadge%7Bmargin%2Dleft%3A3px%7D%2Ejumbotron%7Bpadding%2Dtop%3A30px%3Bpadding%2Dbottom%3A30px%3Bmargin%2Dbottom%3A30px%3Bcolor%3Ainherit%3Bbackground%2Dcolor%3A%23eee%7D%2Ejumbotron%20%2Eh1%2C%2Ejumbotron%20h1%7Bcolor%3Ainherit%7D%2Ejumbotron%20p%7Bmargin%2Dbottom%3A15px%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A200%7D%2Ejumbotron%3Ehr%7Bborder%2Dtop%2Dcolor%3A%23d5d5d5%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bborder%2Dradius%3A6px%7D%2Ejumbotron%20%2Econtainer%7Bmax%2Dwidth%3A100%25%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ejumbotron%7Bpadding%2Dtop%3A48px%3Bpadding%2Dbottom%3A48px%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bpadding%2Dright%3A60px%3Bpadding%2Dleft%3A60px%7D%2Ejumbotron%20%2Eh1%2C%2Ejumbotron%20h1%7Bfont%2Dsize%3A63px%7D%7D%2Ethumbnail%7Bdisplay%3Ablock%3Bpadding%3A4px%3Bmargin%2Dbottom%3A20px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aborder%20%2E2s%20ease%2Din%2Dout%7D%2Ethumbnail%20a%3Eimg%2C%2Ethumbnail%3Eimg%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7Da%2Ethumbnail%2Eactive%2Ca%2Ethumbnail%3Afocus%2Ca%2Ethumbnail%3Ahover%7Bborder%2Dcolor%3A%23337ab7%7D%2Ethumbnail%20%2Ecaption%7Bpadding%3A9px%3Bcolor%3A%23333%7D%2Ealert%7Bpadding%3A15px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ealert%20h4%7Bmargin%2Dtop%3A0%3Bcolor%3Ainherit%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3A700%7D%2Ealert%3Ep%2C%2Ealert%3Eul%7Bmargin%2Dbottom%3A0%7D%2Ealert%3Ep%2Bp%7Bmargin%2Dtop%3A5px%7D%2Ealert%2Ddismissable%2C%2Ealert%2Ddismissible%7Bpadding%2Dright%3A35px%7D%2Ealert%2Ddismissable%20%2Eclose%2C%2Ealert%2Ddismissible%20%2Eclose%7Bposition%3Arelative%3Btop%3A%2D2px%3Bright%3A%2D21px%3Bcolor%3Ainherit%7D%2Ealert%2Dsuccess%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%3Bborder%2Dcolor%3A%23d6e9c6%7D%2Ealert%2Dsuccess%20hr%7Bborder%2Dtop%2Dcolor%3A%23c9e2b3%7D%2Ealert%2Dsuccess%20%2Ealert%2Dlink%7Bcolor%3A%232b542c%7D%2Ealert%2Dinfo%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23d9edf7%3Bborder%2Dcolor%3A%23bce8f1%7D%2Ealert%2Dinfo%20hr%7Bborder%2Dtop%2Dcolor%3A%23a6e1ec%7D%2Ealert%2Dinfo%20%2Ealert%2Dlink%7Bcolor%3A%23245269%7D%2Ealert%2Dwarning%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%3Bborder%2Dcolor%3A%23faebcc%7D%2Ealert%2Dwarning%20hr%7Bborder%2Dtop%2Dcolor%3A%23f7e1b5%7D%2Ealert%2Dwarning%20%2Ealert%2Dlink%7Bcolor%3A%2366512c%7D%2Ealert%2Ddanger%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%3Bborder%2Dcolor%3A%23ebccd1%7D%2Ealert%2Ddanger%20hr%7Bborder%2Dtop%2Dcolor%3A%23e4b9c0%7D%2Ealert%2Ddanger%20%2Ealert%2Dlink%7Bcolor%3A%23843534%7D%40%2Dwebkit%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40%2Do%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40keyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%2Eprogress%7Bheight%3A20px%3Bmargin%2Dbottom%3A20px%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C%2E1%29%7D%2Eprogress%2Dbar%7Bfloat%3Aleft%3Bwidth%3A0%3Bheight%3A100%25%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A20px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23337ab7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E15%29%3B%2Dwebkit%2Dtransition%3Awidth%20%2E6s%20ease%3B%2Do%2Dtransition%3Awidth%20%2E6s%20ease%3Btransition%3Awidth%20%2E6s%20ease%7D%2Eprogress%2Dbar%2Dstriped%2C%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3B%2Dwebkit%2Dbackground%2Dsize%3A40px%2040px%3Bbackground%2Dsize%3A40px%2040px%7D%2Eprogress%2Dbar%2Eactive%2C%2Eprogress%2Eactive%20%2Eprogress%2Dbar%7B%2Dwebkit%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3B%2Do%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3Banimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%7D%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dcolor%3A%235cb85c%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dcolor%3A%235bc0de%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dcolor%3A%23f0ad4e%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dcolor%3A%23d9534f%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Emedia%7Bmargin%2Dtop%3A15px%7D%2Emedia%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emedia%2C%2Emedia%2Dbody%7Boverflow%3Ahidden%3Bzoom%3A1%7D%2Emedia%2Dbody%7Bwidth%3A10000px%7D%2Emedia%2Dobject%7Bdisplay%3Ablock%7D%2Emedia%2Dobject%2Eimg%2Dthumbnail%7Bmax%2Dwidth%3Anone%7D%2Emedia%2Dright%2C%2Emedia%3E%2Epull%2Dright%7Bpadding%2Dleft%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%3E%2Epull%2Dleft%7Bpadding%2Dright%3A10px%7D%2Emedia%2Dbody%2C%2Emedia%2Dleft%2C%2Emedia%2Dright%7Bdisplay%3Atable%2Dcell%3Bvertical%2Dalign%3Atop%7D%2Emedia%2Dmiddle%7Bvertical%2Dalign%3Amiddle%7D%2Emedia%2Dbottom%7Bvertical%2Dalign%3Abottom%7D%2Emedia%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Emedia%2Dlist%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dgroup%7Bpadding%2Dleft%3A0%3Bmargin%2Dbottom%3A20px%7D%2Elist%2Dgroup%2Ditem%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%3Bmargin%2Dbottom%3A%2D1px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%7D%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%7D%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7Da%2Elist%2Dgroup%2Ditem%2Cbutton%2Elist%2Dgroup%2Ditem%7Bcolor%3A%23555%7Da%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3A%23333%7Da%2Elist%2Dgroup%2Ditem%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%3Ahover%7Bcolor%3A%23555%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23f5f5f5%7Dbutton%2Elist%2Dgroup%2Ditem%7Bwidth%3A100%25%3Btext%2Dalign%3Aleft%7D%2Elist%2Dgroup%2Ditem%2Edisabled%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%7Bcolor%3A%23777%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3A%23eee%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23777%7D%2Elist%2Dgroup%2Ditem%2Eactive%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%7Bz%2Dindex%3A2%3Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%23337ab7%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23c7ddef%7D%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%233c763d%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23d0e9c6%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%233c763d%3Bborder%2Dcolor%3A%233c763d%7D%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23d9edf7%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%2331708f%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23c4e3f3%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331708f%3Bborder%2Dcolor%3A%2331708f%7D%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%238a6d3b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23faf2cc%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%238a6d3b%3Bborder%2Dcolor%3A%238a6d3b%7D%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23a94442%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23ebcccc%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23a94442%3Bborder%2Dcolor%3A%23a94442%7D%2Elist%2Dgroup%2Ditem%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Elist%2Dgroup%2Ditem%2Dtext%7Bmargin%2Dbottom%3A0%3Bline%2Dheight%3A1%2E3%7D%2Epanel%7Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%3Bbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%7D%2Epanel%2Dbody%7Bpadding%3A15px%7D%2Epanel%2Dheading%7Bpadding%3A10px%2015px%3Bborder%2Dbottom%3A1px%20solid%20transparent%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%2Dheading%3E%2Edropdown%20%2Edropdown%2Dtoggle%7Bcolor%3Ainherit%7D%2Epanel%2Dtitle%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A16px%3Bcolor%3Ainherit%7D%2Epanel%2Dtitle%3E%2Esmall%2C%2Epanel%2Dtitle%3E%2Esmall%3Ea%2C%2Epanel%2Dtitle%3Ea%2C%2Epanel%2Dtitle%3Esmall%2C%2Epanel%2Dtitle%3Esmall%3Ea%7Bcolor%3Ainherit%7D%2Epanel%2Dfooter%7Bpadding%3A10px%2015px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dtop%3A1px%20solid%20%23ddd%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%7Bborder%2Dwidth%3A1px%200%3Bborder%2Dradius%3A0%7D%2Epanel%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bborder%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Epanel%2Dheading%2B%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dwidth%3A0%7D%2Elist%2Dgroup%2B%2Epanel%2Dfooter%7Bborder%2Dtop%2Dwidth%3A0%7D%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%2C%2Epanel%3E%2Etable%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%20caption%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2C%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2Dresponsive%2C%2Epanel%3E%2Etable%2B%2Epanel%2Dbody%2C%2Epanel%3E%2Etable%2Dresponsive%2B%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7D%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%2C%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%7Bborder%2Dtop%3A0%7D%2Epanel%3E%2Etable%2Dbordered%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dresponsive%7Bmargin%2Dbottom%3A0%3Bborder%3A0%7D%2Epanel%2Dgroup%7Bmargin%2Dbottom%3A20px%7D%2Epanel%2Dgroup%20%2Epanel%7Bmargin%2Dbottom%3A0%3Bborder%2Dradius%3A4px%7D%2Epanel%2Dgroup%20%2Epanel%2B%2Epanel%7Bmargin%2Dtop%3A5px%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%7Bborder%2Dbottom%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%2C%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%7Bborder%2Dtop%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%20%2Epanel%2Dbody%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%7D%2Epanel%2Ddefault%7Bborder%2Dcolor%3A%23ddd%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dcolor%3A%23ddd%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23ddd%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f5f5f5%3Bbackground%2Dcolor%3A%23333%7D%2Epanel%2Ddefault%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23ddd%7D%2Epanel%2Dprimary%7Bborder%2Dcolor%3A%23337ab7%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%23337ab7%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23337ab7%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23337ab7%3Bbackground%2Dcolor%3A%23fff%7D%2Epanel%2Dprimary%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23337ab7%7D%2Epanel%2Dsuccess%7Bborder%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%3Bborder%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23dff0d8%3Bbackground%2Dcolor%3A%233c763d%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dinfo%7Bborder%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23d9edf7%3Bborder%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23d9edf7%3Bbackground%2Dcolor%3A%2331708f%7D%2Epanel%2Dinfo%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dwarning%7Bborder%2Dcolor%3A%23faebcc%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%3Bborder%2Dcolor%3A%23faebcc%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23faebcc%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23fcf8e3%3Bbackground%2Dcolor%3A%238a6d3b%7D%2Epanel%2Dwarning%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23faebcc%7D%2Epanel%2Ddanger%7Bborder%2Dcolor%3A%23ebccd1%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%3Bborder%2Dcolor%3A%23ebccd1%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23ebccd1%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f2dede%3Bbackground%2Dcolor%3A%23a94442%7D%2Epanel%2Ddanger%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23ebccd1%7D%2Eembed%2Dresponsive%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bheight%3A0%3Bpadding%3A0%3Boverflow%3Ahidden%7D%2Eembed%2Dresponsive%20%2Eembed%2Dresponsive%2Ditem%2C%2Eembed%2Dresponsive%20embed%2C%2Eembed%2Dresponsive%20iframe%2C%2Eembed%2Dresponsive%20object%2C%2Eembed%2Dresponsive%20video%7Bposition%3Aabsolute%3Btop%3A0%3Bbottom%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bborder%3A0%7D%2Eembed%2Dresponsive%2D16by9%7Bpadding%2Dbottom%3A56%2E25%25%7D%2Eembed%2Dresponsive%2D4by3%7Bpadding%2Dbottom%3A75%25%7D%2Ewell%7Bmin%2Dheight%3A20px%3Bpadding%3A19px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23e3e3e3%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%7D%2Ewell%20blockquote%7Bborder%2Dcolor%3A%23ddd%3Bborder%2Dcolor%3Argba%280%2C0%2C0%2C%2E15%29%7D%2Ewell%2Dlg%7Bpadding%3A24px%3Bborder%2Dradius%3A6px%7D%2Ewell%2Dsm%7Bpadding%3A9px%3Bborder%2Dradius%3A3px%7D%2Eclose%7Bfloat%3Aright%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%3Bcolor%3A%23000%3Btext%2Dshadow%3A0%201px%200%20%23fff%3Bfilter%3Aalpha%28opacity%3D20%29%3Bopacity%3A%2E2%7D%2Eclose%3Afocus%2C%2Eclose%3Ahover%7Bcolor%3A%23000%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%3Bfilter%3Aalpha%28opacity%3D50%29%3Bopacity%3A%2E5%7Dbutton%2Eclose%7B%2Dwebkit%2Dappearance%3Anone%3Bpadding%3A0%3Bcursor%3Apointer%3Bbackground%3A0%200%3Bborder%3A0%7D%2Emodal%2Dopen%7Boverflow%3Ahidden%7D%2Emodal%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1050%3Bdisplay%3Anone%3Boverflow%3Ahidden%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Boutline%3A0%7D%2Emodal%2Efade%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E3s%20ease%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E3s%20ease%2Dout%3Btransition%3Atransform%20%2E3s%20ease%2Dout%3B%2Dwebkit%2Dtransform%3Atranslate%280%2C%2D25%25%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%2D25%25%29%3B%2Do%2Dtransform%3Atranslate%280%2C%2D25%25%29%3Btransform%3Atranslate%280%2C%2D25%25%29%7D%2Emodal%2Ein%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C0%29%3B%2Dms%2Dtransform%3Atranslate%280%2C0%29%3B%2Do%2Dtransform%3Atranslate%280%2C0%29%3Btransform%3Atranslate%280%2C0%29%7D%2Emodal%2Dopen%20%2Emodal%7Boverflow%2Dx%3Ahidden%3Boverflow%2Dy%3Aauto%7D%2Emodal%2Ddialog%7Bposition%3Arelative%3Bwidth%3Aauto%3Bmargin%3A10px%7D%2Emodal%2Dcontent%7Bposition%3Arelative%3Bbackground%2Dcolor%3A%23fff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23999%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E2%29%3Bborder%2Dradius%3A6px%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C%2E5%29%3Bbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C%2E5%29%7D%2Emodal%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1040%3Bbackground%2Dcolor%3A%23000%7D%2Emodal%2Dbackdrop%2Efade%7Bfilter%3Aalpha%28opacity%3D0%29%3Bopacity%3A0%7D%2Emodal%2Dbackdrop%2Ein%7Bfilter%3Aalpha%28opacity%3D50%29%3Bopacity%3A%2E5%7D%2Emodal%2Dheader%7Bmin%2Dheight%3A16%2E43px%3Bpadding%3A15px%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dheader%20%2Eclose%7Bmargin%2Dtop%3A%2D2px%7D%2Emodal%2Dtitle%7Bmargin%3A0%3Bline%2Dheight%3A1%2E42857143%7D%2Emodal%2Dbody%7Bposition%3Arelative%3Bpadding%3A15px%7D%2Emodal%2Dfooter%7Bpadding%3A15px%3Btext%2Dalign%3Aright%3Bborder%2Dtop%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dfooter%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dbottom%3A0%3Bmargin%2Dleft%3A5px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dleft%3A0%7D%2Emodal%2Dscrollbar%2Dmeasure%7Bposition%3Aabsolute%3Btop%3A%2D9999px%3Bwidth%3A50px%3Bheight%3A50px%3Boverflow%3Ascroll%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Emodal%2Ddialog%7Bwidth%3A600px%3Bmargin%3A30px%20auto%7D%2Emodal%2Dcontent%7B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C%2E5%29%3Bbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C%2E5%29%7D%2Emodal%2Dsm%7Bwidth%3A300px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Emodal%2Dlg%7Bwidth%3A900px%7D%7D%2Etooltip%7Bposition%3Aabsolute%3Bz%2Dindex%3A1070%3Bdisplay%3Ablock%3Bfont%2Dfamily%3A%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A12px%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bletter%2Dspacing%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bwhite%2Dspace%3Anormal%3Bfilter%3Aalpha%28opacity%3D0%29%3Bopacity%3A0%3Bline%2Dbreak%3Aauto%7D%2Etooltip%2Ein%7Bfilter%3Aalpha%28opacity%3D90%29%3Bopacity%3A%2E9%7D%2Etooltip%2Etop%7Bpadding%3A5px%200%3Bmargin%2Dtop%3A%2D3px%7D%2Etooltip%2Eright%7Bpadding%3A0%205px%3Bmargin%2Dleft%3A3px%7D%2Etooltip%2Ebottom%7Bpadding%3A5px%200%3Bmargin%2Dtop%3A3px%7D%2Etooltip%2Eleft%7Bpadding%3A0%205px%3Bmargin%2Dleft%3A%2D3px%7D%2Etooltip%2Dinner%7Bmax%2Dwidth%3A200px%3Bpadding%3A3px%208px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23000%3Bborder%2Dradius%3A4px%7D%2Etooltip%2Darrow%7Bposition%3Aabsolute%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Etooltip%2Etop%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000%7D%2Etooltip%2Etop%2Dleft%20%2Etooltip%2Darrow%7Bright%3A5px%3Bbottom%3A0%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000%7D%2Etooltip%2Etop%2Dright%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000%7D%2Etooltip%2Eright%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bleft%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%205px%200%3Bborder%2Dright%2Dcolor%3A%23000%7D%2Etooltip%2Eleft%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bright%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%200%205px%205px%3Bborder%2Dleft%2Dcolor%3A%23000%7D%2Etooltip%2Ebottom%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000%7D%2Etooltip%2Ebottom%2Dleft%20%2Etooltip%2Darrow%7Btop%3A0%3Bright%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000%7D%2Etooltip%2Ebottom%2Dright%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000%7D%2Epopover%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bz%2Dindex%3A1060%3Bdisplay%3Anone%3Bmax%2Dwidth%3A276px%3Bpadding%3A1px%3Bfont%2Dfamily%3A%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bletter%2Dspacing%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bwhite%2Dspace%3Anormal%3Bbackground%2Dcolor%3A%23fff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23ccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E2%29%3Bborder%2Dradius%3A6px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C%2E2%29%3Bbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C%2E2%29%3Bline%2Dbreak%3Aauto%7D%2Epopover%2Etop%7Bmargin%2Dtop%3A%2D10px%7D%2Epopover%2Eright%7Bmargin%2Dleft%3A10px%7D%2Epopover%2Ebottom%7Bmargin%2Dtop%3A10px%7D%2Epopover%2Eleft%7Bmargin%2Dleft%3A%2D10px%7D%2Epopover%2Dtitle%7Bpadding%3A8px%2014px%3Bmargin%3A0%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23f7f7f7%3Bborder%2Dbottom%3A1px%20solid%20%23ebebeb%3Bborder%2Dradius%3A5px%205px%200%200%7D%2Epopover%2Dcontent%7Bpadding%3A9px%2014px%7D%2Epopover%3E%2Earrow%2C%2Epopover%3E%2Earrow%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Epopover%3E%2Earrow%7Bborder%2Dwidth%3A11px%7D%2Epopover%3E%2Earrow%3Aafter%7Bcontent%3A%22%22%3Bborder%2Dwidth%3A10px%7D%2Epopover%2Etop%3E%2Earrow%7Bbottom%3A%2D11px%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dcolor%3A%23999%3Bborder%2Dtop%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Epopover%2Etop%3E%2Earrow%3Aafter%7Bbottom%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bcontent%3A%22%20%22%3Bborder%2Dtop%2Dcolor%3A%23fff%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Epopover%2Eright%3E%2Earrow%7Btop%3A50%25%3Bleft%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dcolor%3A%23999%3Bborder%2Dright%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%3Bborder%2Dleft%2Dwidth%3A0%7D%2Epopover%2Eright%3E%2Earrow%3Aafter%7Bbottom%3A%2D10px%3Bleft%3A1px%3Bcontent%3A%22%20%22%3Bborder%2Dright%2Dcolor%3A%23fff%3Bborder%2Dleft%2Dwidth%3A0%7D%2Epopover%2Ebottom%3E%2Earrow%7Btop%3A%2D11px%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23999%3Bborder%2Dbottom%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%7D%2Epopover%2Ebottom%3E%2Earrow%3Aafter%7Btop%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bcontent%3A%22%20%22%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23fff%7D%2Epopover%2Eleft%3E%2Earrow%7Btop%3A50%25%3Bright%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23999%3Bborder%2Dleft%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%7D%2Epopover%2Eleft%3E%2Earrow%3Aafter%7Bright%3A1px%3Bbottom%3A%2D10px%3Bcontent%3A%22%20%22%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23fff%7D%2Ecarousel%7Bposition%3Arelative%7D%2Ecarousel%2Dinner%7Bposition%3Arelative%3Bwidth%3A100%25%3Boverflow%3Ahidden%7D%2Ecarousel%2Dinner%3E%2Eitem%7Bposition%3Arelative%3Bdisplay%3Anone%3B%2Dwebkit%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3B%2Do%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3Btransition%3A%2E6s%20ease%2Din%2Dout%20left%7D%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%7Bline%2Dheight%3A1%7D%40media%20all%20and%20%28transform%2D3d%29%2C%28%2Dwebkit%2Dtransform%2D3d%29%7B%2Ecarousel%2Dinner%3E%2Eitem%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E6s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E6s%20ease%2Din%2Dout%3Btransition%3Atransform%20%2E6s%20ease%2Din%2Dout%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%3B%2Dwebkit%2Dperspective%3A1000px%3Bperspective%3A1000px%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eright%2C%2Ecarousel%2Dinner%3E%2Eitem%2Enext%7Bleft%3A0%3B%2Dwebkit%2Dtransform%3Atranslate3d%28100%25%2C0%2C0%29%3Btransform%3Atranslate3d%28100%25%2C0%2C0%29%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%7Bleft%3A0%3B%2Dwebkit%2Dtransform%3Atranslate3d%28%2D100%25%2C0%2C0%29%3Btransform%3Atranslate3d%28%2D100%25%2C0%2C0%29%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2C%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2Eright%7Bleft%3A0%3B%2Dwebkit%2Dtransform%3Atranslate3d%280%2C0%2C0%29%3Btransform%3Atranslate3d%280%2C0%2C0%29%7D%7D%2Ecarousel%2Dinner%3E%2Eactive%2C%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bdisplay%3Ablock%7D%2Ecarousel%2Dinner%3E%2Eactive%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bposition%3Aabsolute%3Btop%3A0%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Enext%7Bleft%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eprev%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eprev%2Eright%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eleft%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eright%7Bleft%3A100%25%7D%2Ecarousel%2Dcontrol%7Bposition%3Aabsolute%3Btop%3A0%3Bbottom%3A0%3Bleft%3A0%3Bwidth%3A15%25%3Bfont%2Dsize%3A20px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C%2E6%29%3Bfilter%3Aalpha%28opacity%3D50%29%3Bopacity%3A%2E5%7D%2Ecarousel%2Dcontrol%2Eleft%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E5%29%200%2Crgba%280%2C0%2C0%2C%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E5%29%200%2Crgba%280%2C0%2C0%2C%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cright%20top%2Cfrom%28rgba%280%2C0%2C0%2C%2E5%29%29%2Cto%28rgba%280%2C0%2C0%2C%2E0001%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2Crgba%280%2C0%2C0%2C%2E5%29%200%2Crgba%280%2C0%2C0%2C%2E0001%29%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2380000000%27%2C%20endColorstr%3D%27%2300000000%27%2C%20GradientType%3D1%29%3Bbackground%2Drepeat%3Arepeat%2Dx%7D%2Ecarousel%2Dcontrol%2Eright%7Bright%3A0%3Bleft%3Aauto%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E0001%29%200%2Crgba%280%2C0%2C0%2C%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E0001%29%200%2Crgba%280%2C0%2C0%2C%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cright%20top%2Cfrom%28rgba%280%2C0%2C0%2C%2E0001%29%29%2Cto%28rgba%280%2C0%2C0%2C%2E5%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2Crgba%280%2C0%2C0%2C%2E0001%29%200%2Crgba%280%2C0%2C0%2C%2E5%29%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2300000000%27%2C%20endColorstr%3D%27%2380000000%27%2C%20GradientType%3D1%29%3Bbackground%2Drepeat%3Arepeat%2Dx%7D%2Ecarousel%2Dcontrol%3Afocus%2C%2Ecarousel%2Dcontrol%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bfilter%3Aalpha%28opacity%3D90%29%3Boutline%3A0%3Bopacity%3A%2E9%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bposition%3Aabsolute%3Btop%3A50%25%3Bz%2Dindex%3A5%3Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bright%3A50%25%3Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bwidth%3A20px%3Bheight%3A20px%3Bfont%2Dfamily%3Aserif%3Bline%2Dheight%3A1%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%3Abefore%7Bcontent%3A%27%5C2039%27%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%3Abefore%7Bcontent%3A%27%5C203a%27%7D%2Ecarousel%2Dindicators%7Bposition%3Aabsolute%3Bbottom%3A10px%3Bleft%3A50%25%3Bz%2Dindex%3A15%3Bwidth%3A60%25%3Bpadding%2Dleft%3A0%3Bmargin%2Dleft%3A%2D30%25%3Btext%2Dalign%3Acenter%3Blist%2Dstyle%3Anone%7D%2Ecarousel%2Dindicators%20li%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A10px%3Bheight%3A10px%3Bmargin%3A1px%3Btext%2Dindent%3A%2D999px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3A%23000%5C9%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%3Bborder%3A1px%20solid%20%23fff%3Bborder%2Dradius%3A10px%7D%2Ecarousel%2Dindicators%20%2Eactive%7Bwidth%3A12px%3Bheight%3A12px%3Bmargin%3A0%3Bbackground%2Dcolor%3A%23fff%7D%2Ecarousel%2Dcaption%7Bposition%3Aabsolute%3Bright%3A15%25%3Bbottom%3A20px%3Bleft%3A15%25%3Bz%2Dindex%3A10%3Bpadding%2Dtop%3A20px%3Bpadding%2Dbottom%3A20px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C%2E6%29%7D%2Ecarousel%2Dcaption%20%2Ebtn%7Btext%2Dshadow%3Anone%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bwidth%3A30px%3Bheight%3A30px%3Bmargin%2Dtop%3A%2D15px%3Bfont%2Dsize%3A30px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bmargin%2Dleft%3A%2D15px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bmargin%2Dright%3A%2D15px%7D%2Ecarousel%2Dcaption%7Bright%3A20%25%3Bleft%3A20%25%3Bpadding%2Dbottom%3A30px%7D%2Ecarousel%2Dindicators%7Bbottom%3A20px%7D%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Abefore%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dtoolbar%3Abefore%2C%2Eclearfix%3Aafter%2C%2Eclearfix%3Abefore%2C%2Econtainer%2Dfluid%3Aafter%2C%2Econtainer%2Dfluid%3Abefore%2C%2Econtainer%3Aafter%2C%2Econtainer%3Abefore%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Abefore%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Abefore%2C%2Emodal%2Dfooter%3Aafter%2C%2Emodal%2Dfooter%3Abefore%2C%2Enav%3Aafter%2C%2Enav%3Abefore%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Enavbar%2Dcollapse%3Abefore%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dheader%3Abefore%2C%2Enavbar%3Aafter%2C%2Enavbar%3Abefore%2C%2Epager%3Aafter%2C%2Epager%3Abefore%2C%2Epanel%2Dbody%3Aafter%2C%2Epanel%2Dbody%3Abefore%2C%2Erow%3Aafter%2C%2Erow%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%20%22%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Eclearfix%3Aafter%2C%2Econtainer%2Dfluid%3Aafter%2C%2Econtainer%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Emodal%2Dfooter%3Aafter%2C%2Enav%3Aafter%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%3Aafter%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Aafter%2C%2Erow%3Aafter%7Bclear%3Aboth%7D%2Ecenter%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7D%2Epull%2Dright%7Bfloat%3Aright%21important%7D%2Epull%2Dleft%7Bfloat%3Aleft%21important%7D%2Ehide%7Bdisplay%3Anone%21important%7D%2Eshow%7Bdisplay%3Ablock%21important%7D%2Einvisible%7Bvisibility%3Ahidden%7D%2Etext%2Dhide%7Bfont%3A0%2F0%20a%3Bcolor%3Atransparent%3Btext%2Dshadow%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%7D%2Ehidden%7Bdisplay%3Anone%21important%7D%2Eaffix%7Bposition%3Afixed%7D%40%2Dms%2Dviewport%7Bwidth%3Adevice%2Dwidth%7D%2Evisible%2Dlg%2C%2Evisible%2Dmd%2C%2Evisible%2Dsm%2C%2Evisible%2Dxs%7Bdisplay%3Anone%21important%7D%2Evisible%2Dlg%2Dblock%2C%2Evisible%2Dlg%2Dinline%2C%2Evisible%2Dlg%2Dinline%2Dblock%2C%2Evisible%2Dmd%2Dblock%2C%2Evisible%2Dmd%2Dinline%2C%2Evisible%2Dmd%2Dinline%2Dblock%2C%2Evisible%2Dsm%2Dblock%2C%2Evisible%2Dsm%2Dinline%2C%2Evisible%2Dsm%2Dinline%2Dblock%2C%2Evisible%2Dxs%2Dblock%2C%2Evisible%2Dxs%2Dinline%2C%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Anone%21important%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dxs%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dxs%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dxs%2Cth%2Evisible%2Dxs%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dsm%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dsm%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dsm%2Cth%2Evisible%2Dsm%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dmd%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dmd%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dmd%2Cth%2Evisible%2Dmd%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dlg%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dlg%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dlg%2Cth%2Evisible%2Dlg%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Ehidden%2Dxs%7Bdisplay%3Anone%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Ehidden%2Dsm%7Bdisplay%3Anone%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Ehidden%2Dmd%7Bdisplay%3Anone%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ehidden%2Dlg%7Bdisplay%3Anone%21important%7D%7D%2Evisible%2Dprint%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dprint%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dprint%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dprint%2Cth%2Evisible%2Dprint%7Bdisplay%3Atable%2Dcell%21important%7D%7D%2Evisible%2Dprint%2Dblock%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%2Evisible%2Dprint%2Dinline%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20print%7B%2Ehidden%2Dprint%7Bdisplay%3Anone%21important%7D%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KTtkLmhhc0NsYXNzKCJidG4iKXx8KGQ9ZC5jbG9zZXN0KCIuYnRuIikpLGIuY2FsbChkLCJ0b2dnbGUiKSxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0icmFkaW8iXScpfHxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpfHxjLnByZXZlbnREZWZhdWx0KCl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO3JldHVybiBhPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmE/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtiLnRvKGEpfSk6Yz09YT90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGE+Yz8ibmV4dCI6InByZXYiLHRoaXMuJGl0ZW1zLmVxKGEpKX0sYy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxjLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxjLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxjLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGQpe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZj1kfHx0aGlzLmdldEl0ZW1Gb3JEaXJlY3Rpb24oYixlKSxnPXRoaXMuaW50ZXJ2YWwsaD0ibmV4dCI9PWI/ImxlZnQiOiJyaWdodCIsaT10aGlzO2lmKGYuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybiB0aGlzLnNsaWRpbmc9ITE7dmFyIGo9ZlswXSxrPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCFrLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZih0aGlzLnNsaWRpbmc9ITAsZyYmdGhpcy5wYXVzZSgpLHRoaXMuJGluZGljYXRvcnMubGVuZ3RoKXt0aGlzLiRpbmRpY2F0b3JzLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGw9YSh0aGlzLiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhpcy5nZXRJdGVtSW5kZXgoZildKTtsJiZsLmFkZENsYXNzKCJhY3RpdmUiKX12YXIgbT1hLkV2ZW50KCJzbGlkLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpPyhmLmFkZENsYXNzKGIpLGZbMF0ub2Zmc2V0V2lkdGgsZS5hZGRDbGFzcyhoKSxmLmFkZENsYXNzKGgpLGUub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Zi5yZW1vdmVDbGFzcyhbYixoXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixoXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKG0pfSwwKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikpOihlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxmLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKG0pKSxnJiZ0aGlzLmN5Y2xlKCksdGhpc319O3ZhciBkPWEuZm4uY2Fyb3VzZWw7YS5mbi5jYXJvdXNlbD1iLGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YyxhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe3ZhciBkLGU9YSh0aGlzKSxmPWEoZS5hdHRyKCJkYXRhLXRhcmdldCIpfHwoZD1lLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSk7aWYoZi5oYXNDbGFzcygiY2Fyb3VzZWwiKSl7dmFyIGc9YS5leHRlbmQoe30sZi5kYXRhKCksZS5kYXRhKCkpLGg9ZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7aCYmKGcuaW50ZXJ2YWw9ITEpLGIuY2FsbChmLGcpLGgmJmYuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhoKSxjLnByZXZlbnREZWZhdWx0KCl9fTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCJbZGF0YS1zbGlkZV0iLGUpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlLXRvXSIsZSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKTtiLmNhbGwoYyxjLmRhdGEoKSl9KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXt2YXIgYyxkPWIuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9Yi5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIik7cmV0dXJuIGEoZCl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYy5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTshZSYmZi50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoYikmJihmLnRvZ2dsZT0hMSksZXx8Yy5kYXRhKCJicy5jb2xsYXBzZSIsZT1uZXcgZCh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBkPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxkLkRFRkFVTFRTLGMpLHRoaXMuJHRyaWdnZXI9YSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK2IuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrYi5pZCsnIl0nKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50P3RoaXMuJHBhcmVudD10aGlzLmdldFBhcmVudCgpOnRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsdGhpcy4kdHJpZ2dlciksdGhpcy5vcHRpb25zLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX07ZC5WRVJTSU9OPSIzLjMuNSIsZC5UUkFOU0lUSU9OX0RVUkFUSU9OPTM1MCxkLkRFRkFVTFRTPXt0b2dnbGU6ITB9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpO2lmKCEoZSYmZS5sZW5ndGgmJihiPWUuZGF0YSgiYnMuY29sbGFwc2UiKSxiJiZiLnRyYW5zaXRpb25pbmcpKSl7dmFyIGY9YS5FdmVudCgic2hvdy5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihmKSwhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmZS5sZW5ndGgmJihjLmNhbGwoZSwiaGlkZSIpLGJ8fGUuZGF0YSgiYnMuY29sbGFwc2UiLG51bGwpKTt2YXIgZz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtnXSgwKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy4kdHJpZ2dlci5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSx0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9O2lmKCFhLnN1cHBvcnQudHJhbnNpdGlvbilyZXR1cm4gaC5jYWxsKHRoaXMpO3ZhciBpPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixnXS5qb2luKCItIikpO3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoaCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKVtnXSh0aGlzLiRlbGVtZW50WzBdW2ldKX19fX0sZC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudFtjXSh0aGlzLiRlbGVtZW50W2NdKCkpWzBdLm9mZnNldEhlaWdodCx0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJjb2xsYXBzaW5nIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIGluIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMuJHRyaWdnZXIuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZT1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShlLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmUuY2FsbCh0aGlzKX19fSxkLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX0sZC5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5vcHRpb25zLnBhcmVudCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtcGFyZW50PSInK3RoaXMub3B0aW9ucy5wYXJlbnQrJyJdJykuZWFjaChhLnByb3h5KGZ1bmN0aW9uKGMsZCl7dmFyIGU9YShkKTt0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhiKGUpLGUpfSx0aGlzKSkuZW5kKCl9LGQucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaGFzQ2xhc3MoImluIik7YS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKSxiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCFjKS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKX07dmFyIGU9YS5mbi5jb2xsYXBzZTthLmZuLmNvbGxhcHNlPWMsYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1kLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJyxmdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2UuYXR0cigiZGF0YS10YXJnZXQiKXx8ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWIoZSksZz1mLmRhdGEoImJzLmNvbGxhcHNlIiksaD1nPyJ0b2dnbGUiOmUuZGF0YSgpO2MuY2FsbChmLGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg/ZDpiLnBhcmVudCgpfWZ1bmN0aW9uIGMoYyl7YyYmMz09PWMud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1iKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoYyYmImNsaWNrIj09Yy50eXBlJiYvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpJiZhLmNvbnRhaW5zKGVbMF0sYy50YXJnZXQpfHwoZS50cmlnZ2VyKGM9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSkpfSkpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoImJzLmRyb3Bkb3duIik7ZHx8Yy5kYXRhKCJicy5kcm9wZG93biIsZD1uZXcgZyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZkW2JdLmNhbGwoYyl9KX12YXIgZT0iLmRyb3Bkb3duLWJhY2tkcm9wIixmPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGc9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zy5WRVJTSU9OPSIzLjMuNSIsZy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWIoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYygpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJkcm9wZG93bi1iYWNrZHJvcCIpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYyk7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGMpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YihkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWMud2hpY2h8fGcmJjI3PT1jLndoaWNoKXJldHVybiAyNz09Yy53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXNhYmxlZCk6dmlzaWJsZSBhIixpPWUuZmluZCgiLmRyb3Bkb3duLW1lbnUiK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGMudGFyZ2V0KTszOD09Yy53aGljaCYmaj4wJiZqLS0sNDA9PWMud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93bi1tZW51IixnLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYixkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSxmPWUuZGF0YSgiYnMubW9kYWwiKSxnPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTtmfHxlLmRhdGEoImJzLm1vZGFsIixmPW5ldyBjKHRoaXMsZykpLCJzdHJpbmciPT10eXBlb2YgYj9mW2JdKGQpOmcuc2hvdyYmZi5zaG93KGQpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRib2R5PWEoZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGRpYWxvZz10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiYWNrZHJvcD1udWxsLHRoaXMuaXNTaG93bj1udWxsLHRoaXMub3JpZ2luYWxCb2R5UGFkPW51bGwsdGhpcy5zY3JvbGxiYXJXaWR0aD0wLHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLm9wdGlvbnMucmVtb3RlJiZ0aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1jb250ZW50IikubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoImxvYWRlZC5icy5tb2RhbCIpfSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj0zMDAsYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLkRFRkFVTFRTPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coYSl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPWEuRXZlbnQoInNob3cuYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSksdGhpcy5pc1Nob3dufHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuY2hlY2tTY3JvbGxiYXIoKSx0aGlzLnNldFNjcm9sbGJhcigpLHRoaXMuJGJvZHkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSx0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmlzKGQuJGVsZW1lbnQpJiYoZC5pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGQuZW5mb3JjZUZvY3VzKCk7dmFyIGY9YS5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTtlP2QuJGRpYWxvZy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KSl9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGI9YS5FdmVudCgiaGlkZS5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSx0aGlzLmlzU2hvd24mJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSxhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLm9mZigibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiksdGhpcy4kZGlhbG9nLm9mZigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkodGhpcy5oaWRlTW9kYWwsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6dGhpcy5oaWRlTW9kYWwoKSl9LGMucHJvdG90eXBlLmVuZm9yY2VGb2N1cz1mdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLm9uKCJmb2N1c2luLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuJGVsZW1lbnRbMF09PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpfSx0aGlzKSl9LGMucHJvdG90eXBlLmVzY2FwZT1mdW5jdGlvbigpe3RoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmtleWJvYXJkP3RoaXMuJGVsZW1lbnQub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXsyNz09YS53aGljaCYmdGhpcy5oaWRlKCl9LHRoaXMpKTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duP2Eod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIixhLnByb3h5KHRoaXMuaGFuZGxlVXBkYXRlLHRoaXMpKTphKHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGEucmVzZXRBZGp1c3RtZW50cygpLGEucmVzZXRTY3JvbGxiYXIoKSxhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpfSl9LGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGMucHJvdG90eXBlLmJhY2tkcm9wPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/ImZhZGUiOiIiO2lmKHRoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmJhY2tkcm9wKXt2YXIgZj1hLnN1cHBvcnQudHJhbnNpdGlvbiYmZTtpZih0aGlzLiRiYWNrZHJvcD1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIitlKS5hcHBlbmRUbyh0aGlzLiRib2R5KSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s/dm9pZCh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITEpOnZvaWQoYS50YXJnZXQ9PT1hLmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09dGhpcy5vcHRpb25zLmJhY2tkcm9wP3RoaXMuJGVsZW1lbnRbMF0uZm9jdXMoKTp0aGlzLmhpZGUoKSkpfSx0aGlzKSksZiYmdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoImluIiksIWIpcmV0dXJuO2Y/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6YigpfWVsc2UgaWYoIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3Ape3RoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO3ZhciBnPWZ1bmN0aW9uKCl7ZC5yZW1vdmVCYWNrZHJvcCgpLGImJmIoKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZykuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpnKCl9ZWxzZSBiJiZiKCl9LGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuYWRqdXN0RGlhbG9nKCl9LGMucHJvdG90eXBlLmFkanVzdERpYWxvZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiF0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiIscGFkZGluZ1JpZ2h0OnRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJiFhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiJ9KX0sYy5wcm90b3R5cGUucmVzZXRBZGp1c3RtZW50cz1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDoiIixwYWRkaW5nUmlnaHQ6IiJ9KX0sYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuaW5uZXJXaWR0aDtpZighYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9Yi5yaWdodC1NYXRoLmFicyhiLmxlZnQpfXRoaXMuYm9keUlzT3ZlcmZsb3dpbmc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDxhLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMub3JpZ2luYWxCb2R5UGFkPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0fHwiIix0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZ0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsYSt0aGlzLnNjcm9sbGJhcldpZHRoKX0sYy5wcm90b3R5cGUucmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsdGhpcy5vcmlnaW5hbEJvZHlQYWQpfSxjLnByb3RvdHlwZS5tZWFzdXJlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIix0aGlzLiRib2R5LmFwcGVuZChhKTt2YXIgYj1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGg7cmV0dXJuIHRoaXMuJGJvZHlbMF0ucmVtb3ZlQ2hpbGQoYSksYn07dmFyIGQ9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWIsYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1jLGEuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLm1vZGFsPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLGU9ZC5hdHRyKCJocmVmIiksZj1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8ZSYmZS5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxnPWYuZGF0YSgiYnMubW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7cmVtb3RlOiEvIy8udGVzdChlKSYmZX0sZi5kYXRhKCksZC5kYXRhKCkpO2QuaXMoImEiKSYmYy5wcmV2ZW50RGVmYXVsdCgpLGYub25lKCJzaG93LmJzLm1vZGFsIixmdW5jdGlvbihhKXthLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLm9uZSgiaGlkZGVuLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuaXMoIjp2aXNpYmxlIikmJmQudHJpZ2dlcigiZm9jdXMiKX0pfSksYi5jYWxsKGYsZyx0aGlzKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMudG9vbHRpcCIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy41IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxiIGluc3RhbmNlb2YgYS5FdmVudCYmKGMuaW5TdGF0ZVsiZm9jdXNvdXQiPT1iLnR5cGU/ImZvY3VzIjoiaG92ZXIiXT0hMSksYy5pc0luU3RhdGVUcnVlKCk/dm9pZCAwOihjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCkpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO3ZhciBkPWEuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRlbGVtZW50WzBdKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhZClyZXR1cm47dmFyIGU9dGhpcyxmPXRoaXMudGlwKCksZz10aGlzLmdldFVJRCh0aGlzLnR5cGUpO3RoaXMuc2V0Q29udGVudCgpLGYuYXR0cigiaWQiLGcpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZyksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmZi5hZGRDbGFzcygiZmFkZSIpO3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50P3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGZbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxpPS9ccz9hdXRvP1xzPy9pLGo9aS50ZXN0KGgpO2omJihoPWgucmVwbGFjZShpLCIiKXx8InRvcCIpLGYuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYWRkQ2xhc3MoaCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsdGhpcyksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj9mLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOmYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnNlcnRlZC5icy4iK3RoaXMudHlwZSk7dmFyIGs9dGhpcy5nZXRQb3NpdGlvbigpLGw9ZlswXS5vZmZzZXRXaWR0aCxtPWZbMF0ub2Zmc2V0SGVpZ2h0O2lmKGope3ZhciBuPWgsbz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPm8uYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPG8udG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5vLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPG8ubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcD10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChwLGgpO3ZhciBxPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpxKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wKz1nLGIubGVmdCs9aCxhLm9mZnNldC5zZXRPZmZzZXQoZFswXSxhLmV4dGVuZCh7dXNpbmc6ZnVuY3Rpb24oYSl7ZC5jc3Moe3RvcDpNYXRoLnJvdW5kKGEudG9wKSxsZWZ0Ok1hdGgucm91bmQoYS5sZWZ0KX0pfX0sYiksMCksZC5hZGRDbGFzcygiaW4iKTt2YXIgaT1kWzBdLm9mZnNldFdpZHRoLGo9ZFswXS5vZmZzZXRIZWlnaHQ7InRvcCI9PWMmJmohPWYmJihiLnRvcD1iLnRvcCtmLWopO3ZhciBrPXRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKGMsYixpLGopO2subGVmdD9iLmxlZnQrPWsubGVmdDpiLnRvcCs9ay50b3A7dmFyIGw9L3RvcHxib3R0b20vLnRlc3QoYyksbT1sPzIqay5sZWZ0LWUraToyKmsudG9wLWYraixuPWw/Im9mZnNldFdpZHRoIjoib2Zmc2V0SGVpZ2h0IjtkLm9mZnNldChiKSx0aGlzLnJlcGxhY2VBcnJvdyhtLGRbMF1bbl0sbCl9LGMucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjPyJsZWZ0IjoidG9wIiw1MCooMS1hL2IpKyIlIikuY3NzKGM/InRvcCI6ImxlZnQiLCIiKX0sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpeyJpbiIhPWUuaG92ZXJTdGF0ZSYmZi5kZXRhY2goKSxlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIitlLnR5cGUpLGImJmIoKX12YXIgZT10aGlzLGY9YSh0aGlzLiR0aXApLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxjLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYy5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKGIpe2I9Ynx8dGhpcy4kZWxlbWVudDt2YXIgYz1iWzBdLGQ9IkJPRFkiPT1jLnRhZ05hbWUsZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO251bGw9PWUud2lkdGgmJihlPWEuZXh0ZW5kKHt9LGUse3dpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pKTt2YXIgZj1kP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCksZz17c2Nyb2xsOmQ/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A6Yi5zY3JvbGxUb3AoKX0saD1kP3t3aWR0aDphKHdpbmRvdykud2lkdGgoKSxoZWlnaHQ6YSh3aW5kb3cpLmhlaWdodCgpfTpudWxsO3JldHVybiBhLmV4dGVuZCh7fSxlLGcsaCxmKX0sYy5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxjLnByb3RvdHlwZS5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e3RvcDowLGxlZnQ6MH07aWYoIXRoaXMuJHZpZXdwb3J0KXJldHVybiBlO3ZhciBmPXRoaXMub3B0aW9ucy52aWV3cG9ydCYmdGhpcy5vcHRpb25zLnZpZXdwb3J0LnBhZGRpbmd8fDAsZz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtpZigvcmlnaHR8bGVmdC8udGVzdChhKSl7dmFyIGg9Yi50b3AtZi1nLnNjcm9sbCxpPWIudG9wK2YtZy5zY3JvbGwrZDtoPGcudG9wP2UudG9wPWcudG9wLWg6aT5nLnRvcCtnLmhlaWdodCYmKGUudG9wPWcudG9wK2cuaGVpZ2h0LWkpfWVsc2V7dmFyIGo9Yi5sZWZ0LWYsaz1iLmxlZnQrZitjO2o8Zy5sZWZ0P2UubGVmdD1nLmxlZnQtajprPmcucmlnaHQmJihlLmxlZnQ9Zy5sZWZ0K2cud2lkdGgtayl9cmV0dXJuIGV9LGMucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGMudGl0bGU/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpfSxjLnByb3RvdHlwZS5nZXRVSUQ9ZnVuY3Rpb24oYSl7ZG8gYSs9fn4oMWU2Kk1hdGgucmFuZG9tKCkpO3doaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKTtyZXR1cm4gYX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHRpcCYmKHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksMSE9dGhpcy4kdGlwLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7cmV0dXJuIHRoaXMuJHRpcH0sYy5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxjLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxjLnByb3RvdHlwZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2ImJihjPWEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSksY3x8KGM9bmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLGEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSxjKSkpLGI/KGMuaW5TdGF0ZS5jbGljaz0hYy5pblN0YXRlLmNsaWNrLGMuaXNJblN0YXRlVHJ1ZSgpP2MuZW50ZXIoYyk6Yy5sZWF2ZShjKSk6Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKSxhLiR0aXAmJmEuJHRpcC5kZXRhY2goKSxhLiR0aXA9bnVsbCxhLiRhcnJvdz1udWxsLGEuJHZpZXdwb3J0PW51bGx9KX07dmFyIGQ9YS5mbi50b29sdGlwO2EuZm4udG9vbHRpcD1iLGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1jLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy41IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNSIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpe3RoaXMuYWN0aXZlVGFyZ2V0PWIsdGhpcy5jbGVhcigpO3ZhciBjPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJytiKyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK2IrJyJdJyxkPWEoYykucGFyZW50cygibGkiKS5hZGRDbGFzcygiYWN0aXZlIik7ZC5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiYoZD1kLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSwKZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gYz5lPyJ0b3AiOiExO2lmKCJib3R0b20iPT10aGlzLmFmZml4ZWQpcmV0dXJuIG51bGwhPWM/ZSt0aGlzLnVucGluPD1mLnRvcD8hMToiYm90dG9tIjphLWQ+PWUrZz8hMToiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmYz49ZT8idG9wIjpudWxsIT1kJiZpK2o+PWEtZD8iYm90dG9tIjohMX0sYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5waW5uZWRPZmZzZXQpcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0O3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoImFmZml4Iik7dmFyIGE9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGI9dGhpcy4kZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ9Yi50b3AtYX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbldpdGhFdmVudExvb3A9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIGI9dGhpcy4kZWxlbWVudC5oZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQsZT1kLnRvcCxmPWQuYm90dG9tLGc9TWF0aC5tYXgoYShkb2N1bWVudCkuaGVpZ2h0KCksYShkb2N1bWVudC5ib2R5KS5oZWlnaHQoKSk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
<script src="data:application/x-javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/x-javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Owo="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uCiAgLy8gQHBhcmFtIHRhcmdldCBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSAidGhpcyIgZm9yIGVhY2ggZnVuY3Rpb24KICAvLyAgIGV4ZWN1dGlvbi4KICAvLyBAcGFyYW0gYXJncyBBcnJheSBvZiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbnMuIChUaGUKICAvLyAgIHNhbWUgYXJndW1lbnRzIHdpbGwgYmUgcGFzc2VkIHRvIGFsbCBmdW5jdGlvbnMuKQogIGZ1bmN0aW9uIGV2YWxBbmRSdW4odGFza3MsIHRhcmdldCwgYXJncykgewogICAgaWYgKHRhc2tzKSB7CiAgICAgIGZvckVhY2godGFza3MsIGZ1bmN0aW9uKHRhc2spIHsKICAgICAgICB2YXIgdGFza0Z1bmMgPSBldmFsKCIoIiArIHRhc2sgKyAiKSIpOwogICAgICAgIGlmICh0eXBlb2YodGFza0Z1bmMpICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRhc2sgbXVzdCBiZSBhIGZ1bmN0aW9uISBTb3VyY2U6XG4iICsgdGFzayk7CiAgICAgICAgfQogICAgICAgIHRhc2tGdW5jLmFwcGx5KHRhcmdldCwgYXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQoKICAgIC8vIFN1cHBvcnQgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zLiBPbGQtc3R5bGUgY2xhc3MtYm91bmQKICAgIC8vIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldCAib2JqZWN0IiBwZXIgd2lkZ2V0IHBlciB0eXBlL2NsYXNzIG9mCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cwogICAgLy8gdGFrZSBlbCBhbmQgaW5zdGFuY2UgYXJndW1lbnRzLCBiZWNhdXNlIHRoZSB3aWRnZXQgb2JqZWN0IGNhbid0CiAgICAvLyBzdG9yZSB0aGVtLiBOZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0CiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0CiAgICAvLyBwcm92aWRlIHJlbmRlclZhbHVlIG9yIHJlc2l6ZSBtZXRob2RzIGF0IGFsbCwganVzdCB0aGUgc2luZ2xlIG1ldGhvZAogICAgLy8gICBmYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4KICAgIC8vIFRoaXMgZW5hYmxlcyBhIGZhciBtb3JlIG5hdHVyYWwgcHJvZ3JhbW1pbmcgc3R5bGUgZm9yIHRoZSB3aWRnZXQKICAgIC8vIGF1dGhvciwgd2hvIGNhbiBzdG9yZSBwZXItaW5zdGFuY2Ugc3RhdGUgdXNpbmcgZWl0aGVyIE9PLXN0eWxlCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzCiAgICAvLyBpcyBpbiBjb250cmFzdCB0byB3aGF0IGNhbiBvbmx5IGJlIGNhbGxlZCBDLXN0eWxlIHBzZXVkby1PTyB3aGljaCBpcwogICAgLy8gd2hhdCB3ZSByZXF1aXJlZCBiZWZvcmUpLgogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgewogICAgICBkZWZpbml0aW9uID0gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmaW5pdGlvbik7CiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4KICAgICAgLy8gVGhlIGRlZmluaXRpb24gaXRzZWxmIHdpbGwgbm90IGJlIHRoZSBvdXRwdXQgYmluZGluZywgaW5zdGVhZAogICAgICAvLyB3ZSB3aWxsIG1ha2UgYW4gb3V0cHV0IGJpbmRpbmcgb2JqZWN0IHRoYXQgZGVsZWdhdGVzIHRvIHRoZQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kCiAgICAgIC8vIG5hbWUgKHJlbmRlclZhbHVlKSBmb3IgaHRtbHdpZGdldHMgZGVmaW5pdGlvbiBhbmQgU2hpbnkgYmluZGluZ3MKICAgICAgLy8gYnV0IHRoZXkgYWN0dWFsbHkgaGF2ZSBxdWl0ZSBkaWZmZXJlbnQgc2VtYW50aWNzICh0aGUgU2hpbnkKICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0CiAgICAgIC8vIHN0cmlwcyBvZmYgYmVmb3JlIGNhbGxpbmcgaHRtbHdpZGdldHMgcmVuZGVyVmFsdWUpLiBXZSBjYW4ndAogICAgICAvLyBqdXN0IGlnbm9yZSB0aGUgZGlmZmVyZW5jZSBiZWNhdXNlIGluIHNvbWUgd2lkZ2V0cyBpdCdzIGhlbHBmdWwKICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZgogICAgICAvLyB3ZSdyZSBub3QgZGVsZWdhdGluZywgdGhlbiB0aGF0IGNhbGwgd2lsbCBnbyB0byB0aGUgU2hpbnkKICAgICAgLy8gdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBodG1sd2lkZ2V0cyB2ZXJzaW9uLgoKICAgICAgLy8gTWVyZ2UgZGVmYXVsdHMgd2l0aCBkZWZpbml0aW9uLCB3aXRob3V0IG11dGF0aW5nIGVpdGhlci4KICAgICAgdmFyIGJpbmRpbmdEZWYgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKCiAgICAgIC8vIFRoaXMgb2JqZWN0IHdpbGwgYmUgb3VyIGFjdHVhbCBTaGlueSBiaW5kaW5nLgogICAgICB2YXIgc2hpbnlCaW5kaW5nID0gbmV3IFNoaW55Lk91dHB1dEJpbmRpbmcoKTsKCiAgICAgIC8vIFdpdGggYSBmZXcgZXhjZXB0aW9ucywgd2UnbGwgd2FudCB0byBzaW1wbHkgdXNlIHRoZSBiaW5kaW5nRGVmJ3MKICAgICAgLy8gdmVyc2lvbiBvZiBtZXRob2RzIGlmIHRoZXkgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwKICAgICAgLy8gbWV0aG9kcyBpbiB0aGUgZnV0dXJlLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIG92ZXJyaWRlYWJsZSBieQogICAgICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcgZGVmaW5pdGlvbnMsIHRoZW4gd2UnbGwgbmVlZCB0byBhZGQgdGhlbSB0byB0aGlzCiAgICAgIC8vIGxpc3QuCiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImdldElkIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVDaGFuZ2UiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInJlbmRlckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImNsZWFyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7CgogICAgICAvLyBUaGUgZmluZCwgcmVuZGVyVmFsdWUsIGFuZCByZXNpemUgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHksIGJlY2F1c2Ugd2UKICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4KCiAgICAgIHNoaW55QmluZGluZy5maW5kID0gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7CgogICAgICAgIC8vIE9ubHkgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIFNoaW55IG91dHB1dHMsIG5vdCBzdGF0aWMgb25lcwogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7CgogICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuCiAgICAgICAgLy8gU2luY2UgdGhlcmUgbWlnaHQgYmUgbG90cyBvZiBkaWZmZXJlbnQgaHRtbHdpZGdldHMgYmluZGluZ3MsIHdlCiAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAvLyB0aW1lcy4KICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IGR5bmFtaWNSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgIHJldHVybiBkeW5hbWljUmVzdWx0czsKICAgICAgfTsKCiAgICAgIC8vIFdyYXAgcmVuZGVyVmFsdWUgdG8gaGFuZGxlIGluaXRpYWxpemF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGlzbid0CiAgICAgIC8vIHN1cHBvcnRlZCBuYXRpdmVseSBieSBTaGlueSBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuCgogICAgICBzaGlueUJpbmRpbmcucmVuZGVyVmFsdWUgPSBmdW5jdGlvbihlbCwgZGF0YSkgewogICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgZGF0YS5ldmFscyAmJiBpIDwgZGF0YS5ldmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgfQogICAgICAgIGlmICghYmluZGluZ0RlZi5yZW5kZXJPbk51bGxWYWx1ZSkgewogICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICBpbml0U2l6aW5nKGVsKTsKCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICBpZiAoYmluZGluZ0RlZi5pbml0aWFsaXplKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBiaW5kaW5nRGVmLmluaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICAgIFNoaW55LnJlbmRlckRlcGVuZGVuY2llcyhkYXRhLmRlcHMpOwogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgfTsKCiAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcmVzaXplIGlmIGJpbmRpbmdEZWYgaW1wbGVtZW50cyBpdAogICAgICBpZiAoYmluZGluZ0RlZi5yZXNpemUpIHsKICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICAgIC8vIFNoaW55IGNhbiBjYWxsIHJlc2l6ZSBiZWZvcmUgaW5pdGlhbGl6ZS9yZW5kZXJWYWx1ZSBoYXZlIGJlZW4KICAgICAgICAgIC8vIGNhbGxlZCwgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGZvciB3aWRnZXRzLgogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgICBiaW5kaW5nRGVmLnJlc2l6ZShlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CgogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7CiAgICB9CiAgfTsKCiAgdmFyIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgZnVuY3Rpb24gc2NoZWR1bGVTdGF0aWNSZW5kZXIoKSB7CiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgewogICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9LCAxKTsKICAgIH0KICB9CgogIC8vIFJlbmRlciBzdGF0aWMgd2lkZ2V0cyBhZnRlciB0aGUgZG9jdW1lbnQgZmluaXNoZXMgbG9hZGluZwogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzCiAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJpbmRpbmdzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7CiAgICAgIHZhciBtYXRjaGVzID0gYmluZGluZy5maW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CiAgICAgIGZvckVhY2gobWF0Y2hlcywgZnVuY3Rpb24oZWwpIHsKICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOwoKICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsICJodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBlbC5jbGFzc05hbWUgPSBlbC5jbGFzc05hbWUgKyAiIGh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCI7CgogICAgICAgIHZhciBpbml0UmVzdWx0OwogICAgICAgIGlmIChiaW5kaW5nLmluaXRpYWxpemUpIHsKICAgICAgICAgIGluaXRSZXN1bHQgPSBiaW5kaW5nLmluaXRpYWxpemUoZWwsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICk7CiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsKICAgICAgICAgIHZhciBsYXN0U2l6ZSA9IHt9OwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gewogICAgICAgICAgICAgIHc6IHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSAwICYmIHNpemUuaCA9PT0gMCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgbGFzdFNpemUgPSBzaXplOwogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsKCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgY2FzZXMgd2hlcmUgd2UncmUgcnVubmluZyBpbiBhIFNoaW55CiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dAogICAgICAgICAgLy8gcmF0aGVyIGEgc2ltcGxlIHN0YXRpYyB3aWRnZXQuIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMKICAgICAgICAgIC8vIGFuIHJtYXJrZG93biBkb2N1bWVudCB0aGF0IGhhcyBydW50aW1lOnNoaW55IGFuZCB3aWRnZXQKICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8KICAgICAgICAgIC8vIGNhbGwgcmVzaXplIGhhbmRsZXJzIGZvciBTaGlueSBvdXRwdXRzLCBub3QgZm9yIHN0YXRpYwogICAgICAgICAgLy8gd2lkZ2V0cywgc28gd2UgZG8gaXQgb3Vyc2VsdmVzLgogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oInNob3duLmh0bWx3aWRnZXRzIHNob3duLmJzLnRhYi5odG1sd2lkZ2V0cyIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHNwZWNpZmljIGNhc2Ugb2YgaW9zbGlkZXMsIHdoaWNoCiAgICAgICAgICAvLyBmbGlwcyBzbGlkZXMgYmV0d2VlbiBkaXNwbGF5Om5vbmUgYW5kIGRpc3BsYXk6YmxvY2suCiAgICAgICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIG5vdCBoYXZlIHRvIGhhdmUgaW9zbGlkZS1zcGVjaWZpYyBjb2RlCiAgICAgICAgICAvLyBoZXJlLCBidXQgcmF0aGVyIGhhdmUgaW9zbGlkZXMgcmFpc2UgYSBnZW5lcmljIGV2ZW50LAogICAgICAgICAgLy8gYnV0IHRoZSBybWFya2Rvd24gcGFja2FnZSBqdXN0IHdlbnQgdG8gQ1JBTiBzbyB0aGUKICAgICAgICAgIC8vIHdpbmRvdyB0byBnZXR0aW5nIHRoYXQgZml4ZWQgbWF5IGJlIGxvbmcuCiAgICAgICAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgICAgICAgLy8gSXQncyBPSyB0byBsaW1pdCB0aGlzIHRvIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyCiAgICAgICAgICAgIC8vIGJyb3dzZXJzIGJlY2F1c2UgaW9zbGlkZXMgaXRzZWxmIG9ubHkgc3VwcG9ydHMKICAgICAgICAgICAgLy8gc3VjaCBicm93c2Vycy4KICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWVudGVyIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVsZWF2ZSIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHNjcmlwdERhdGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbZGF0YS1mb3I9JyIgKyBlbC5pZCArICInXVt0eXBlPSdhcHBsaWNhdGlvbi9qc29uJ10iKTsKICAgICAgICBpZiAoc2NyaXB0RGF0YSkgewogICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHNjcmlwdERhdGEudGV4dENvbnRlbnQgfHwgc2NyaXB0RGF0YS50ZXh0KTsKICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgICAgZm9yICh2YXIgayA9IDA7IGRhdGEuZXZhbHMgJiYgayA8IGRhdGEuZXZhbHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1trXSk7CiAgICAgICAgICB9CiAgICAgICAgICBiaW5kaW5nLnJlbmRlclZhbHVlKGVsLCBkYXRhLngsIGluaXRSZXN1bHQpOwogICAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBpbml0UmVzdWx0LCBbZWwsIGRhdGEueF0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKCiAgICBpbnZva2VQb3N0UmVuZGVySGFuZGxlcnMoKTsKICB9CgogIC8vIFdhaXQgdW50aWwgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBsb2FkZWQgdG8gcmVuZGVyIHRoZSB3aWRnZXRzLgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBhcmd1bWVudHMuY2FsbGVlLCBmYWxzZSk7CiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgIH0sIGZhbHNlKTsKICB9IGVsc2UgaWYgKGRvY3VtZW50LmF0dGFjaEV2ZW50KSB7CiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7CiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CiAgICAgICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfQogICAgfSk7CiAgfQoKCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsKICAgIC8vIElmIG5vIGtleSwgZGVmYXVsdCB0byB0aGUgZmlyc3QgaXRlbQogICAgaWYgKHR5cGVvZihrZXkpID09PSAidW5kZWZpbmVkIikKICAgICAga2V5ID0gMTsKCiAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlcG5hbWUgKyAiLSIgKyBrZXkgKyAiLWF0dGFjaG1lbnQiKTsKICAgIGlmICghbGluaykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGFjaG1lbnQgIiArIGRlcG5hbWUgKyAiLyIgKyBrZXkgKyAiIG5vdCBmb3VuZCBpbiBkb2N1bWVudCIpOwogICAgfQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgewogICAgdmFyIG5hbWVzID0gW107CiAgICB2YXIgbGVuZ3RoOwogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgewogICAgICAgIGlmIChkZi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTsKICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyIpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGxlbmd0aCkgIT09ICJ1bmRlZmluZWQiICYmIGxlbmd0aCAhPT0gZGZbbmFtZV0ubGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsKICAgICAgICB9CiAgICAgICAgbGVuZ3RoID0gZGZbbmFtZV0ubGVuZ3RoOwogICAgfQogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBpdGVtOwogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgewogICAgICAgIGl0ZW0gPSB7fTsKICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBuYW1lcy5sZW5ndGg7IGNvbCsrKSB7CiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOwogICAgICAgIH0KICAgICAgICByZXN1bHRzLnB1c2goaXRlbSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGFycmF5KSB7CiAgICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHJldHVybiBhcnJheTsKICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgewogICAgICAgICAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbihyb3cpIHsKICAgICAgICAgICAgICByZXR1cm4gcm93W2ldCiAgICAgICAgICB9KQogICAgICB9KTsKICAgICAgcmV0dXJuIG5ld0FycmF5OwogIH07CiAgLy8gU3BsaXQgdmFsdWUgYXQgc3BsaXRDaGFyLCBidXQgYWxsb3cgc3BsaXRDaGFyIHRvIGJlIGVzY2FwZWQKICAvLyB1c2luZyBlc2NhcGVDaGFyLiBBbnkgb3RoZXIgY2hhcmFjdGVycyBlc2NhcGVkIGJ5IGVzY2FwZUNoYXIKICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLgogIGZ1bmN0aW9uIHNwbGl0V2l0aEVzY2FwZSh2YWx1ZSwgc3BsaXRDaGFyLCBlc2NhcGVDaGFyKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgIHZhciBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCB2YWx1ZS5sZW5ndGg7IHBvcysrKSB7CiAgICAgIGlmICghZXNjYXBlTW9kZSkgewogICAgICAgIGlmICh2YWx1ZVtwb3NdID09PSBzcGxpdENoYXIpIHsKICAgICAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlW3Bvc10gPT09IGVzY2FwZUNoYXIpIHsKICAgICAgICAgIGVzY2FwZU1vZGUgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmIChjdXJyZW50UmVzdWx0ICE9PSAiIikgewogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9CiAgLy8gRnVuY3Rpb24gYXV0aG9yZWQgYnkgWWlodWkvSkogQWxsYWlyZQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlciA9IGZ1bmN0aW9uKG8sIG1lbWJlcikgewogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsKICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07CiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQogICAgICBpZiAobyAhPT0gbnVsbCAmJiB0eXBlb2YgbyA9PT0gIm9iamVjdCIgJiYgcGFydCBpbiBvKSB7CiAgICAgICAgaWYgKGkgPT0gKGwgLSAxKSkgeyAvLyBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGVuIGV2YWx1bGF0ZQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikKICAgICAgICAgICAgb1twYXJ0XSA9IGV2YWwoIigiICsgb1twYXJ0XSArICIpIik7CiAgICAgICAgfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIGNvbnRpbnVlIHRvIG5leHQgZW1iZWRkZWQgb2JqZWN0CiAgICAgICAgICBvID0gb1twYXJ0XTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuCiAgLy8gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCwgb3IgbnVsbCBpZiBub25lLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpOwogIH07CgogIC8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzY29wZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLAogIC8vIGFuZCByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGVsZW1lbnQsIGlmIGFueS4gSWYgbm8gZWxlbWVudCBtYXRjaGVzIHRoZQogIC8vIHNlbGVjdG9yLCBvciB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBoYXMgbm8gSFRNTFdpZGdldAogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICBpZiAoZWwgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKGVsKTsKICAgIH0KICB9OwoKICAvLyBGaW5kcyBhbGwgZWxlbWVudHMgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLCBhbmQKICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50cywgaW4gYW4gYXJyYXkuIElmIGVsZW1lbnRzIHRoYXQKICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgY29udGFpbiBudWxscy4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZEFsbCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBub2RlcyA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKICAgICAgcmVzdWx0cy5wdXNoKHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShub2Rlc1tpXSkpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOwogIGZ1bmN0aW9uIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpIHsKICAgIHdoaWxlIChwb3N0UmVuZGVySGFuZGxlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7CiAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgaGFuZGxlcigpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZWdpc3RlciB0aGUgZ2l2ZW4gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUKICAvLyBuZXh0IHRpbWUgc3RhdGljIHdpZGdldHMgYXJlIHJlbmRlcmVkLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICBwb3N0UmVuZGVySGFuZGxlcnMucHVzaChjYWxsYmFjayk7CiAgfTsKCiAgLy8gVGFrZXMgYSBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbiwgYW5kIHJldHVybnMgYW4KICAvLyBvbGQtc3R5bGUgY2xhc3MtYm91bmQgZGVmaW5pdGlvbi4gVGhpcyBzYXZlcyB1cyBmcm9tIGhhdmluZwogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoCiAgLy8gdHlwZXMgb2YgZGVmaW5pdGlvbnMuCiAgZnVuY3Rpb24gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmbikgewogICAgdmFyIHJlc3VsdCA9IHsKICAgICAgbmFtZTogZGVmbi5uYW1lLAogICAgICB0eXBlOiBkZWZuLnR5cGUsCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgcmV0dXJuIGRlZm4uZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0sCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVuZGVyVmFsdWUoeCk7CiAgICAgIH0sCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgfQogICAgfTsKCiAgICBpZiAoZGVmbi5maW5kKQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsKICAgIGlmIChkZWZuLnJlbmRlckVycm9yKQogICAgICByZXN1bHQucmVuZGVyRXJyb3IgPSBkZWZuLnJlbmRlckVycm9yOwogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikKICAgICAgcmVzdWx0LmNsZWFyRXJyb3IgPSBkZWZuLmNsZWFyRXJyb3I7CgogICAgcmV0dXJuIHJlc3VsdDsKICB9Cn0pKCk7Cgo="></script>
<link href="data:text/css;charset=utf-8,%0Aslide%3Anot%28%2Ecurrent%29%20%2Eplotly%2Ehtml%2Dwidget%7B%0Adisplay%3A%20none%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyoqCiogcGxvdGx5LmpzIHYxLjguMAoqIENvcHlyaWdodCAyMDEyLTIwMTYsIFBsb3RseSwgSW5jLgoqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiovCiFmdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPXQoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIGU7ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZS5QbG90bHk9dCgpfX0oZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbil7ZnVuY3Rpb24gaShhLHMpe2lmKCFyW2FdKXtpZighdFthXSl7dmFyIGw9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJmwpcmV0dXJuIGwoYSwhMCk7aWYobylyZXR1cm4gbyhhLCEwKTt2YXIgYz1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIithKyInIik7dGhyb3cgYy5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixjfXZhciB1PXJbYV09e2V4cG9ydHM6e319O3RbYV1bMF0uY2FsbCh1LmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFthXVsxXVtlXTtyZXR1cm4gaShyP3I6ZSl9LHUsdS5leHBvcnRzLGUsdCxyLG4pfXJldHVybiByW2FdLmV4cG9ydHN9Zm9yKHZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDthPG4ubGVuZ3RoO2ErKylpKG5bYV0pO3JldHVybiBpfSh7MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zcmMvcGxvdGx5IiksaT17IlgsWCBkaXYiOiJmb250LWZhbWlseTonT3BlbiBTYW5zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7bWFyZ2luOjA7cGFkZGluZzowOyIsIlggaW5wdXQsWCBidXR0b24iOiJmb250LWZhbWlseTonT3BlbiBTYW5zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7IiwiWCBpbnB1dDpmb2N1cyxYIGJ1dHRvbjpmb2N1cyI6Im91dGxpbmU6bm9uZTsiLCJYIGEiOiJ0ZXh0LWRlY29yYXRpb246bm9uZTsiLCJYIGE6aG92ZXIiOiJ0ZXh0LWRlY29yYXRpb246bm9uZTsiLCJYIC5jcmlzcCI6InNoYXBlLXJlbmRlcmluZzpjcmlzcEVkZ2VzOyIsIlggLnVzZXItc2VsZWN0LW5vbmUiOiItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lOy1vLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTsiLCJYIHN2ZyI6Im92ZXJmbG93OmhpZGRlbjsiLCJYIHN2ZyBhIjoiZmlsbDojNDQ3YWRiOyIsIlggc3ZnIGE6aG92ZXIiOiJmaWxsOiMzYzZkYzU7IiwiWCAubWFpbi1zdmciOiJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cG9pbnRlci1ldmVudHM6bm9uZTsiLCJYIC5tYWluLXN2ZyAuZHJhZ2xheWVyIjoicG9pbnRlci1ldmVudHM6YWxsOyIsIlggLmN1cnNvci1wb2ludGVyIjoiY3Vyc29yOnBvaW50ZXI7IiwiWCAuY3Vyc29yLWNyb3NzaGFpciI6ImN1cnNvcjpjcm9zc2hhaXI7IiwiWCAuY3Vyc29yLW1vdmUiOiJjdXJzb3I6bW92ZTsiLCJYIC5jdXJzb3ItY29sLXJlc2l6ZSI6ImN1cnNvcjpjb2wtcmVzaXplOyIsIlggLmN1cnNvci1yb3ctcmVzaXplIjoiY3Vyc29yOnJvdy1yZXNpemU7IiwiWCAuY3Vyc29yLW5zLXJlc2l6ZSI6ImN1cnNvcjpucy1yZXNpemU7IiwiWCAuY3Vyc29yLWV3LXJlc2l6ZSI6ImN1cnNvcjpldy1yZXNpemU7IiwiWCAuY3Vyc29yLXN3LXJlc2l6ZSI6ImN1cnNvcjpzdy1yZXNpemU7IiwiWCAuY3Vyc29yLXMtcmVzaXplIjoiY3Vyc29yOnMtcmVzaXplOyIsIlggLmN1cnNvci1zZS1yZXNpemUiOiJjdXJzb3I6c2UtcmVzaXplOyIsIlggLmN1cnNvci13LXJlc2l6ZSI6ImN1cnNvcjp3LXJlc2l6ZTsiLCJYIC5jdXJzb3ItZS1yZXNpemUiOiJjdXJzb3I6ZS1yZXNpemU7IiwiWCAuY3Vyc29yLW53LXJlc2l6ZSI6ImN1cnNvcjpudy1yZXNpemU7IiwiWCAuY3Vyc29yLW4tcmVzaXplIjoiY3Vyc29yOm4tcmVzaXplOyIsIlggLmN1cnNvci1uZS1yZXNpemUiOiJjdXJzb3I6bmUtcmVzaXplOyIsIlggLm1vZGViYXIiOiJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O3JpZ2h0OjJweDt6LWluZGV4OjEwMDE7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuNyk7IiwiWCAubW9kZWJhci0taG92ZXIiOiJvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlIDBzOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgZWFzZSAwczstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgZWFzZSAwczstby10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlIDBzO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzIGVhc2UgMHM7IiwiWDpob3ZlciAubW9kZWJhci0taG92ZXIiOiJvcGFjaXR5OjE7IiwiWCAubW9kZWJhci1ncm91cCI6ImZsb2F0OmxlZnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbi1sZWZ0OjhweDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwOyIsIlggLm1vZGViYXItZ3JvdXA6Zmlyc3QtY2hpbGQiOiJtYXJnaW4tbGVmdDowcHg7IiwiWCAubW9kZWJhci1idG4iOiJwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MTZweDtwYWRkaW5nOjNweCA0cHg7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6bm9ybWFsO2JveC1zaXppbmc6Ym9yZGVyLWJveDsiLCJYIC5tb2RlYmFyLWJ0biBzdmciOiJwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4OyIsIlggLm1vZGViYXItYnRuIHBhdGgiOiJmaWxsOnJnYmEoMCwzMSw5NSwwLjMpOyIsIlggLm1vZGViYXItYnRuLmFjdGl2ZSBwYXRoLFggLm1vZGViYXItYnRuOmhvdmVyIHBhdGgiOiJmaWxsOnJnYmEoMCwyMiw3MiwwLjUpOyIsIlggLm1vZGViYXItYnRuLm1vZGViYXItYnRuLS1sb2dvIjoicGFkZGluZzozcHggMXB4OyIsIlggLm1vZGViYXItYnRuLm1vZGViYXItYnRuLS1sb2dvIHBhdGgiOiJmaWxsOiM0NDdhZGIgIWltcG9ydGFudDsiLCJYIFtkYXRhLXRpdGxlXTpiZWZvcmUsWCBbZGF0YS10aXRsZV06YWZ0ZXIiOiJwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApOy1vLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7ZGlzcGxheTpub25lO29wYWNpdHk6MDt6LWluZGV4OjEwMDE7cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MTEwJTtyaWdodDo1MCU7IiwiWCBbZGF0YS10aXRsZV06aG92ZXI6YmVmb3JlLFggW2RhdGEtdGl0bGVdOmhvdmVyOmFmdGVyIjoiZGlzcGxheTpibG9jaztvcGFjaXR5OjE7IiwiWCBbZGF0YS10aXRsZV06YmVmb3JlIjoiY29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjo2cHggc29saWQgdHJhbnNwYXJlbnQ7ei1pbmRleDoxMDAyO21hcmdpbi10b3A6LTEycHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNjk3MzhhO21hcmdpbi1yaWdodDotNnB4OyIsIlggW2RhdGEtdGl0bGVdOmFmdGVyIjoiY29udGVudDphdHRyKGRhdGEtdGl0bGUpO2JhY2tncm91bmQ6IzY5NzM4YTtjb2xvcjp3aGl0ZTtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEycHg7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1yaWdodDotMThweDtib3JkZXItcmFkaXVzOjJweDsiLCJYIC5zZWxlY3Qtb3V0bGluZSI6ImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MTtzaGFwZS1yZW5kZXJpbmc6Y3Jpc3BFZGdlczsiLCJYIC5zZWxlY3Qtb3V0bGluZS0xIjoic3Ryb2tlOndoaXRlOyIsIlggLnNlbGVjdC1vdXRsaW5lLTIiOiJzdHJva2U6YmxhY2s7c3Ryb2tlLWRhc2hhcnJheToycHggMnB4OyIsWToiZm9udC1mYW1pbHk6J09wZW4gU2Fucyc7cG9zaXRpb246Zml4ZWQ7dG9wOjUwcHg7cmlnaHQ6MjBweDt6LWluZGV4OjEwMDAwO2ZvbnQtc2l6ZToxMHB0O21heC13aWR0aDoxODBweDsiLCJZIHAiOiJtYXJnaW46MDsiLCJZIC5ub3RpZmllci1ub3RlIjoibWluLXdpZHRoOjE4MHB4O21heC13aWR0aDoyNTBweDtib3JkZXI6MXB4IHNvbGlkICNmZmY7ei1pbmRleDozMDAwO21hcmdpbjowO2JhY2tncm91bmQtY29sb3I6IzhjOTdhZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTQwLDE1MSwxNzUsMC45KTtjb2xvcjojZmZmO3BhZGRpbmc6MTBweDsiLCJZIC5ub3RpZmllci1jbG9zZSI6ImNvbG9yOiNmZmY7b3BhY2l0eTowLjg7ZmxvYXQ6cmlnaHQ7cGFkZGluZzowIDVweDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoyMHB4OyIsIlkgLm5vdGlmaWVyLWNsb3NlOmhvdmVyIjoiY29sb3I6IzQ0NDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjsifTtmb3IodmFyIG8gaW4gaSl7dmFyIGE9by5yZXBsYWNlKC9eLC8sIiAsIikucmVwbGFjZSgvWC9nLCIuanMtcGxvdGx5LXBsb3QgLnBsb3RseSIpLnJlcGxhY2UoL1kvZywiLnBsb3RseS1ub3RpZmllciIpO24uTGliLmFkZFN0eWxlUnVsZShhLGlbb10pfX0seyIuLi9zcmMvcGxvdGx5IjozOTB9XSwyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17dW5kbzp7d2lkdGg6ODU3LjEscGF0aDoibTg1NyAzNTBxMC04Ny0zNC0xNjZ0LTkxLTEzNy0xMzctOTItMTY2LTM0cS05NiAwLTE4MyA0MXQtMTQ3IDExNHEtNCA2LTQgMTN0NSAxMWw3NiA3N3E2IDUgMTQgNSA5LTEgMTMtNyA0MS01MyAxMDAtODJ0MTI2LTI5cTU4IDAgMTEwIDIzdDkyIDYxIDYxIDkxIDIyIDExMS0yMiAxMTEtNjEgOTEtOTIgNjEtMTEwIDIzcS01NSAwLTEwNS0yMHQtOTAtNTdsNzctNzdxMTctMTYgOC0zOC0xMC0yMy0zMy0yM2gtMjUwcS0xNSAwLTI1IDExdC0xMSAyNXYyNTBxMCAyNCAyMiAzMyAyMiAxMCAzOS04bDcyLTcycTYwIDU3IDEzNyA4OHQxNTkgMzFxODcgMCAxNjYtMzR0MTM3LTkyIDkxLTEzNyAzNC0xNjZ6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0saG9tZTp7d2lkdGg6OTI4LjYscGF0aDoibTc4NiAyOTZ2LTI2N3EwLTE1LTExLTI2dC0yNS0xMGgtMjE0djIxNGgtMTQzdi0yMTRoLTIxNHEtMTUgMC0yNSAxMHQtMTEgMjZ2MjY3cTAgMSAwIDJ0MCAybDMyMSAyNjQgMzIxLTI2NHExLTEgMS00eiBtMTI0IDM5bC0zNC00MXEtNS01LTEyLTZoLTJxLTcgMC0xMiAzbC0zODYgMzIyLTM4Ni0zMjJxLTctNC0xMy00LTcgMi0xMiA3bC0zNSA0MXEtNCA1LTMgMTN0NiAxMmw0MDEgMzM0cTE4IDE1IDQyIDE1dDQzLTE1bDEzNi0xMTR2MTA5cTAgOCA1IDEzdDEzIDVoMTA3cTggMCAxMy01dDUtMTN2LTIyN2wxMjItMTAycTUtNSA2LTEydC00LTEzeiIsYXNjZW50Ojg1MCxkZXNjZW50Oi0xNTB9LCJjYW1lcmEtcmV0cm8iOnt3aWR0aDoxZTMscGF0aDoibTUxOCAzODZxMCA4LTUgMTN0LTEzIDVxLTM3IDAtNjMtMjd0LTI2LTYzcTAtOCA1LTEzdDEzLTUgMTIgNSA1IDEzcTAgMjMgMTYgMzh0MzggMTZxOCAwIDEzIDV0NSAxM3ogbTEyNS03M3EwLTU5LTQyLTEwMXQtMTAxLTQyLTEwMSA0Mi00MiAxMDEgNDIgMTAxIDEwMSA0MiAxMDEtNDIgNDItMTAxeiBtLTU3Mi0zMjBoODU4djcxaC04NTh2LTcxeiBtNjQzIDMyMHEwIDg5LTYyIDE1MnQtMTUyIDYyLTE1MS02Mi02My0xNTIgNjMtMTUxIDE1MS02MyAxNTIgNjMgNjIgMTUxeiBtLTU3MSAzNThoMjE0djcyaC0yMTR2LTcyeiBtLTcyLTEwN2g4NTh2MTQzaC00NjJsLTM2LTcxaC0zNjB2LTcyeiBtOTI5IDE0M3YtNzE0cTAtMzAtMjEtNTF0LTUwLTIxaC04NThxLTI5IDAtNTAgMjF0LTIxIDUxdjcxNHEwIDMwIDIxIDUxdDUwIDIxaDg1OHEyOSAwIDUwLTIxdDIxLTUxeiIsYXNjZW50Ojg1MCxkZXNjZW50Oi0xNTB9LHpvb21ib3g6e3dpZHRoOjFlMyxwYXRoOiJtMTAwMC0yNWwtMjUwIDI1MWM0MCA2MyA2MyAxMzggNjMgMjE4IDAgMjI0LTE4MiA0MDYtNDA3IDQwNi0yMjQgMC00MDYtMTgyLTQwNi00MDZzMTgzLTQwNiA0MDctNDA2YzgwIDAgMTU1IDIyIDIxOCA2MmwyNTAtMjUwIDEyNSAxMjV6IG0tODEyIDI1MGwwIDQzOCA0MzcgMCAwLTQzOC00MzcgMHogbTYyIDM3NWwzMTMgMCAwLTMxMi0zMTMgMCAwIDMxMnoiLGFzY2VudDo4NTAsZGVzY2VudDotMTUwfSxwYW46e3dpZHRoOjFlMyxwYXRoOiJtMTAwMCAzNTBsLTE4NyAxODggMC0xMjUtMjUwIDAgMCAyNTAgMTI1IDAtMTg4IDE4Ny0xODctMTg3IDEyNSAwIDAtMjUwLTI1MCAwIDAgMTI1LTE4OC0xODggMTg2LTE4NyAwIDEyNSAyNTIgMCAwLTI1MC0xMjUgMCAxODctMTg4IDE4OCAxODgtMTI1IDAgMCAyNTAgMjUwIDAgMC0xMjYgMTg3IDE4OHoiLGFzY2VudDo4NTAsZGVzY2VudDotMTUwfSx6b29tX3BsdXM6e3dpZHRoOjFlMyxwYXRoOiJtMSA3ODdsMC04NzUgODc1IDAgMCA4NzUtODc1IDB6IG02ODctNTAwbC0xODcgMCAwLTE4Ny0xMjUgMCAwIDE4Ny0xODggMCAwIDEyNSAxODggMCAwIDE4NyAxMjUgMCAwLTE4NyAxODcgMCAwLTEyNXoiLGFzY2VudDo4NTAsZGVzY2VudDotMTUwfSx6b29tX21pbnVzOnt3aWR0aDoxZTMscGF0aDoibTAgNzg4bDAtODc2IDg3NSAwIDAgODc2LTg3NSAweiBtNjg4LTUwMGwtNTAwIDAgMCAxMjUgNTAwIDAgMC0xMjV6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0sYXV0b3NjYWxlOnt3aWR0aDoxZTMscGF0aDoibTI1MCA4NTBsLTE4NyAwLTYzIDAgMC02MiAwLTE4OCA2MyAwIDAgMTg4IDE4NyAwIDAgNjJ6IG02ODggMGwtMTg4IDAgMC02MiAxODggMCAwLTE4OCA2MiAwIDAgMTg4IDAgNjItNjIgMHogbS04NzUtOTM4bDAgMTg4LTYzIDAgMC0xODggMC02MiA2MyAwIDE4NyAwIDAgNjItMTg3IDB6IG04NzUgMTg4bDAtMTg4LTE4OCAwIDAtNjIgMTg4IDAgNjIgMCAwIDYyIDAgMTg4LTYyIDB6IG0tMTI1IDE4OGwtMSAwLTkzLTk0LTE1NiAxNTYgMTU2IDE1NiA5Mi05MyAyIDAgMCAyNTAtMjUwIDAgMC0yIDkzLTkyLTE1Ni0xNTYtMTU2IDE1NiA5NCA5MiAwIDItMjUwIDAgMC0yNTAgMCAwIDkzIDkzIDE1Ny0xNTYtMTU3LTE1Ni05MyA5NCAwIDAgMC0yNTAgMjUwIDAgMCAwLTk0IDkzIDE1NiAxNTcgMTU2LTE1Ny05My05MyAwIDAgMjUwIDAgMCAyNTB6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0sdG9vbHRpcF9iYXNpYzp7d2lkdGg6MTUwMCxwYXRoOiJtMzc1IDcyNWwwIDAtMzc1LTM3NSAzNzUtMzc0IDAtMSAxMTI1IDAgMCA3NTAtMTEyNSAweiIsYXNjZW50Ojg1MCxkZXNjZW50Oi0xNTB9LHRvb2x0aXBfY29tcGFyZTp7d2lkdGg6MTEyNSxwYXRoOiJtMTg3IDc4NmwwIDItMTg3LTE4OCAxODgtMTg3IDAgMCA5MzcgMCAwIDM3My05MzggMHogbTAtNDk5bDAgMS0xODctMTg4IDE4OC0xODggMCAwIDkzNyAwIDAgMzc2LTkzOC0xeiIsYXNjZW50Ojg1MCxkZXNjZW50Oi0xNTB9LHBsb3RseWxvZ286e3dpZHRoOjE1NDIscGF0aDoibTAtMTBoMTgydi0xNDBoLTE4MnYxNDB6IG0yMjggMTQ2aDE4M3YtMjg2aC0xODN2Mjg2eiBtMjI1IDcxNGgxODJ2LTEwMDBoLTE4MnYxMDAweiBtMjI1LTI4NWgxODJ2LTcxNWgtMTgydjcxNXogbTIyNSAxNDJoMTgzdi04NTdoLTE4M3Y4NTd6IG0yMzEtNDI4aDE4MnYtNDI5aC0xODJ2NDI5eiBtMjI1LTI5MWgxODN2LTEzOGgtMTgzdjEzOHoiLGFzY2VudDo4NTAsZGVzY2VudDotMTUwfSwiei1heGlzIjp7d2lkdGg6MWUzLHBhdGg6Im04MzMgNWwtMTcgMTA4djQxbC0xMzAtNjUgMTMwLTY2YzAgMCAwIDM4IDAgMzkgMC0xIDM2LTE0IDM5LTI1IDQtMTUtNi0yMi0xNi0zMC0xNS0xMi0zOS0xNi01Ni0yMC05MC0yMi0xODctMjMtMjc5LTIzLTI2MSAwLTM0MSAzNC0zNTMgNTkgMyA2MCAyMjggMTEwIDIyOCAxMTAtMTQwLTgtMzUxLTM1LTM1MS0xMTYgMC0xMjAgMjkzLTE0MiA0NzQtMTQyIDE1NSAwIDQ3NyAyMiA0NzcgMTQyIDAgNTAtNzQgNzktMTYzIDk2eiBtLTM3NCA5NGMtNTgtNS05OS0yMS05OS00MCAwLTI0IDY1LTQzIDE0NC00MyA3OSAwIDE0MyAxOSAxNDMgNDMgMCAxOS00MiAzNC05OCA0MHYyMTZoODdsLTEzMiAxMzUtMTMzLTEzNWg4OHYtMjE2eiBtMTY3IDUxNWgtMTM2djFjMTYgMTYgMzEgMzQgNDYgNTJsODQgMTA5djU0aC0yMzB2LTcxaDEyNHYtMWMtMTYtMTctMjgtMzItNDQtNTFsLTg5LTExNHYtNTFoMjQ1djcyeiIsYXNjZW50Ojg1MCxkZXNjZW50Oi0xNTB9LCIzZF9yb3RhdGUiOnt3aWR0aDoxZTMscGF0aDoibTkyMiA2NjBjLTUgNC05IDctMTQgMTEtMzU5IDI2My01ODAtMzEtNTgwLTMxbC0xMDIgMjggNTgtNDAwYzAgMSAxIDEgMiAyIDExOCAxMDggMzUxIDI0OSAzNTEgMjQ5cy02MiAyNy0xMDAgNDJjODggODMgMjIyIDE4MyAzNDcgMTIyIDE2LTggMzAtMTcgNDQtMjctMiAxLTQgMi02IDR6IG0zNi0zMjljMCAwIDY0IDIyOS04OCAyOTYtNjIgMjctMTI0IDE0LTE3NS0xMSAxNTctNzggMjI1LTIwOCAyNDktMjY2IDgtMTkgMTEtMzEgMTEtMzEgMiA1IDYgMTUgMTEgMzItNS0xMy04LTIwLTgtMjB6IG0tNzc1LTIzOWM3MC0zMSAxMTctNTAgMTk4LTMyLTEyMSA4MC0xOTkgMzQ2LTE5OSAzNDZsLTk2LTE1LTU4LTEyYzAgMCA1NS0yMjYgMTU1LTI4N3ogbTYwMyAxMzNsLTMxNy0xMzljMCAwIDQtNCAxOS0xNCA3LTUgMjQtMTUgMjQtMTVzLTE3Ny0xNDctMzg5IDRjMjM1LTI4NyA1MzYtMTEyIDUzNi0xMTJsMzEtMjIgMTAwIDI5OS00LTF6IG0tMjk4LTE1M2M2LTQgMTQtOSAyNC0xNSAwIDAtMTcgMTAtMjQgMTV6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0sY2FtZXJhOnt3aWR0aDoxZTMscGF0aDoibTUwMCA0NTBjLTgzIDAtMTUwLTY3LTE1MC0xNTAgMC04MyA2Ny0xNTAgMTUwLTE1MCA4MyAwIDE1MCA2NyAxNTAgMTUwIDAgODMtNjcgMTUwLTE1MCAxNTB6IG00MDAgMTUwaC0xMjBjLTE2IDAtMzQgMTMtMzkgMjlsLTMxIDkzYy02IDE1LTIzIDI4LTQwIDI4aC0zNDBjLTE2IDAtMzQtMTMtMzktMjhsLTMxLTk0Yy02LTE1LTIzLTI4LTQwLTI4aC0xMjBjLTU1IDAtMTAwLTQ1LTEwMC0xMDB2LTQ1MGMwLTU1IDQ1LTEwMCAxMDAtMTAwaDgwMGM1NSAwIDEwMCA0NSAxMDAgMTAwdjQ1MGMwIDU1LTQ1IDEwMC0xMDAgMTAweiBtLTQwMC01NTBjLTEzOCAwLTI1MCAxMTItMjUwIDI1MCAwIDEzOCAxMTIgMjUwIDI1MCAyNTAgMTM4IDAgMjUwLTExMiAyNTAtMjUwIDAtMTM4LTExMi0yNTAtMjUwLTI1MHogbTM2NSAzODBjLTE5IDAtMzUgMTYtMzUgMzUgMCAxOSAxNiAzNSAzNSAzNSAxOSAwIDM1LTE2IDM1LTM1IDAtMTktMTYtMzUtMzUtMzV6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0sbW92aWU6e3dpZHRoOjFlMyxwYXRoOiJtOTM4IDQxM2wtMTg4LTEyNWMwIDM3LTE3IDcxLTQ0IDk0IDY0IDM4IDEwNyAxMDcgMTA3IDE4NyAwIDEyMS05OCAyMTktMjE5IDIxOS0xMjEgMC0yMTktOTgtMjE5LTIxOSAwLTYxIDI1LTExNyA2Ni0xNTZoLTExNWMzMCAzMyA0OSA3NiA0OSAxMjUgMCAxMDMtODQgMTg3LTE4NyAxODdzLTE4OC04NC0xODgtMTg3YzAtNTcgMjYtMTA3IDY1LTE0MS0zOC0yMi02NS02Mi02NS0xMDl2LTI1MGMwLTcwIDU2LTEyNiAxMjUtMTI2aDUwMGM2OSAwIDEyNSA1NiAxMjUgMTI2bDE4OC0xMjZjMzQgMCA2MiAyOCA2MiA2M3YzNzVjMCAzNS0yOCA2My02MiA2M3ogbS03NTAgMGMtNjkgMC0xMjUgNTYtMTI1IDEyNXM1NiAxMjUgMTI1IDEyNSAxMjUtNTYgMTI1LTEyNS01Ni0xMjUtMTI1LTEyNXogbTQwNi0xYy04NyAwLTE1NyA3MC0xNTcgMTU3IDAgODYgNzAgMTU2IDE1NyAxNTZzMTU2LTcwIDE1Ni0xNTYtNzAtMTU3LTE1Ni0xNTd6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0scXVlc3Rpb246e3dpZHRoOjg1Ny4xLHBhdGg6Im01MDAgODJ2MTA3cTAgOC01IDEzdC0xMyA1aC0xMDdxLTggMC0xMy01dC01LTEzdi0xMDdxMC04IDUtMTN0MTMtNWgxMDdxOCAwIDEzIDV0NSAxM3ogbTE0MyAzNzVxMCA0OS0zMSA5MXQtNzcgNjUtOTUgMjNxLTEzNiAwLTIwNy0xMTktOS0xNCA0LTI0bDc0LTU1cTQtNCAxMC00IDkgMCAxNCA3IDMwIDM4IDQ4IDUxIDE5IDE0IDQ4IDE0IDI3IDAgNDgtMTV0MjEtMzNxMC0yMS0xMS0zNHQtMzgtMjVxLTM1LTE2LTY1LTQ4dC0yOS03MHYtMjBxMC04IDUtMTN0MTMtNWgxMDdxOCAwIDEzIDV0NSAxM3EwIDEwIDEyIDI3dDMwIDI4cTE4IDEwIDI4IDE2dDI1IDE5IDI1IDI3IDE2IDM0IDcgNDV6IG0yMTQtMTA3cTAtMTE3LTU3LTIxNXQtMTU2LTE1Ni0yMTUtNTgtMjE2IDU4LTE1NSAxNTYtNTggMjE1IDU4IDIxNSAxNTUgMTU2IDIxNiA1OCAyMTUtNTggMTU2LTE1NiA1Ny0yMTV6Iixhc2NlbnQ6ODUwLGRlc2NlbnQ6LTE1MH0sZGlzazp7d2lkdGg6ODU3LjEscGF0aDoibTIxNC03aDQyOXYyMTRoLTQyOXYtMjE0eiBtNTAwIDBoNzJ2NTAwcTAgOC02IDIxdC0xMSAyMGwtMTU3IDE1NnEtNSA2LTE5IDEydC0yMiA1di0yMzJxMC0yMi0xNS0zOHQtMzgtMTZoLTMyMnEtMjIgMC0zNyAxNnQtMTYgMzh2MjMyaC03MnYtNzE0aDcydjIzMnEwIDIyIDE2IDM4dDM3IDE2aDQ2NXEyMiAwIDM4LTE2dDE1LTM4di0yMzJ6IG0tMjE0IDUxOHYxNzhxMCA4LTUgMTN0LTEzIDVoLTEwN3EtNyAwLTEzLTV0LTUtMTN2LTE3OHEwLTggNS0xM3QxMy01aDEwN3E3IDAgMTMgNXQ1IDEzeiBtMzU3LTE4di01MThxMC0yMi0xNS0zOHQtMzgtMTZoLTc1MHEtMjMgMC0zOCAxNnQtMTYgMzh2NzUwcTAgMjIgMTYgMzh0MzggMTZoNTE3cTIzIDAgNTAtMTJ0NDItMjZsMTU2LTE1N3ExNi0xNSAyNy00MnQxMS00OXoiLGFzY2VudDo4NTAsZGVzY2VudDotMTUwfSxsYXNzbzp7d2lkdGg6MTAzMSxwYXRoOiJtMTAxOCA1MzhjLTM2IDIwNy0yOTAgMzM2LTU2OCAyODYtMjc3LTQ4LTQ3My0yNTYtNDM2LTQ2MyAxMC01NyAzNi0xMDggNzYtMTUxLTEzLTY2IDExLTEzNyA2OC0xODMgMzQtMjggNzUtNDEgMTE0LTQybC01NS03MCAwIDBjLTItMS0zLTItNC0zLTEwLTE0LTgtMzQgNS00NSAxNC0xMSAzNC04IDQ1IDQgMSAxIDIgMyAyIDVsMCAwIDExMyAxNDBjMTYgMTEgMzEgMjQgNDUgNDAgNCAzIDYgNyA4IDExIDQ4LTMgMTAwIDAgMTUxIDkgMjc4IDQ4IDQ3MyAyNTUgNDM2IDQ2MnogbS02MjQtMzc5Yy04MCAxNC0xNDkgNDgtMTk3IDk2IDQyIDQyIDEwOSA0NyAxNTYgOSAzMy0yNiA0Ny02NiA0MS0xMDV6IG0tMTg3LTc0Yy0xOSAxNi0zMyAzNy0zOSA2MCA1MC0zMiAxMDktNTUgMTc0LTY4LTQyLTI1LTk1LTI0LTEzNSA4eiBtMzYwIDc1Yy0zNC03LTY5LTktMTAyLTggOCA2Mi0xNiAxMjgtNjggMTcwLTczIDU5LTE3NSA1NC0yNDQtNS05IDIwLTE2IDQwLTIwIDYxLTI4IDE1OSAxMjEgMzE3IDMzMyAzNTRzNDA3LTYwIDQzNC0yMTdjMjgtMTU5LTEyMS0zMTgtMzMzLTM1NXoiLGFzY2VudDo4NTAsZGVzY2VudDotMTUwfSxzZWxlY3Rib3g6e3dpZHRoOjFlMyxwYXRoOiJtMCA4NTBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODYgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NSAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg2IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0tODU3LTI4NmwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTg1NyAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtLTg1Ny0yODVsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG04NTcgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbS04NTctMjg2bDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg2IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODUgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiIsYXNjZW50Ojg1MCxkZXNjZW50Oi0xNTB9fX0se31dLDM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9iYXIiKX0seyIuLi9zcmMvdHJhY2VzL2JhciI6NDUzfV0sNDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2JveCIpfSx7Ii4uL3NyYy90cmFjZXMvYm94Ijo0NjR9XSw1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvY2hvcm9wbGV0aCIpfSx7Ii4uL3NyYy90cmFjZXMvY2hvcm9wbGV0aCI6NDczfV0sNjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2NvbnRvdXIiKX0seyIuLi9zcmMvdHJhY2VzL2NvbnRvdXIiOjQ4MH1dLDc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi4vc3JjL2NvcmUiKX0seyIuLi9zcmMvY29yZSI6MzYzfV0sODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2hlYXRtYXAiKX0seyIuLi9zcmMvdHJhY2VzL2hlYXRtYXAiOjQ5Mn1dLDk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0iKX0seyIuLi9zcmMvdHJhY2VzL2hpc3RvZ3JhbSI6NTAzfV0sMTA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0yZCIpfSx7Ii4uL3NyYy90cmFjZXMvaGlzdG9ncmFtMmQiOjUwOH1dLDExOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaGlzdG9ncmFtMmRjb250b3VyIil9LHsiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0yZGNvbnRvdXIiOjUxMn1dLDEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29yZSIpO24ucmVnaXN0ZXIoW3QoIi4vYmFyIiksdCgiLi9ib3giKSx0KCIuL2hlYXRtYXAiKSx0KCIuL2hpc3RvZ3JhbSIpLHQoIi4vaGlzdG9ncmFtMmQiKSx0KCIuL2hpc3RvZ3JhbTJkY29udG91ciIpLHQoIi4vcGllIiksdCgiLi9jb250b3VyIiksdCgiLi9zY2F0dGVyM2QiKSx0KCIuL3N1cmZhY2UiKSx0KCIuL21lc2gzZCIpLHQoIi4vc2NhdHRlcmdlbyIpLHQoIi4vY2hvcm9wbGV0aCIpLHQoIi4vc2NhdHRlcmdsIildKSxlLmV4cG9ydHM9bn0seyIuL2JhciI6MywiLi9ib3giOjQsIi4vY2hvcm9wbGV0aCI6NSwiLi9jb250b3VyIjo2LCIuL2NvcmUiOjcsIi4vaGVhdG1hcCI6OCwiLi9oaXN0b2dyYW0iOjksIi4vaGlzdG9ncmFtMmQiOjEwLCIuL2hpc3RvZ3JhbTJkY29udG91ciI6MTEsIi4vbWVzaDNkIjoxMywiLi9waWUiOjE0LCIuL3NjYXR0ZXIzZCI6MTUsIi4vc2NhdHRlcmdlbyI6MTYsIi4vc2NhdHRlcmdsIjoxNywiLi9zdXJmYWNlIjoxOH1dLDEzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvbWVzaDNkIil9LHsiLi4vc3JjL3RyYWNlcy9tZXNoM2QiOjUxNn1dLDE0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvcGllIil9LHsiLi4vc3JjL3RyYWNlcy9waWUiOjUyMX1dLDE1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcjNkIil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVyM2QiOjU1NH1dLDE2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcmdlbyIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcmdlbyI6NTU4fV0sMTc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0dGVyZ2wiKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJnbCI6NTYzfV0sMTg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zdXJmYWNlIil9LHsiLi4vc3JjL3RyYWNlcy9zdXJmYWNlIjo1Njl9XSwxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtyZXR1cm4gTWF0aC5taW4oZSxNYXRoLm1heCh0LHIpKX1mdW5jdGlvbiBpKHQsZSxyKXt0aGlzLmRpbWVuc2lvbj10Lmxlbmd0aCx0aGlzLmJvdW5kcz1bbmV3IEFycmF5KHRoaXMuZGltZW5zaW9uKSxuZXcgQXJyYXkodGhpcy5kaW1lbnNpb24pXTtmb3IodmFyIG49MDtuPHRoaXMuZGltZW5zaW9uOysrbil0aGlzLmJvdW5kc1swXVtuXT0tKDEvMCksdGhpcy5ib3VuZHNbMV1bbl09MS8wO3RoaXMuX3N0YXRlPXQuc2xpY2UoKS5yZXZlcnNlKCksdGhpcy5fdmVsb2NpdHk9ZS5zbGljZSgpLnJldmVyc2UoKSx0aGlzLl90aW1lPVtyXSx0aGlzLl9zY3JhdGNoPVt0LnNsaWNlKCksdC5zbGljZSgpLHQuc2xpY2UoKSx0LnNsaWNlKCksdC5zbGljZSgpXX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3Q+cjsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIGEodCxlLHIpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBpKFswXSxbMF0sMCk7Y2FzZSAxOmlmKCJudW1iZXIiPT10eXBlb2YgdCl7dmFyIG49byh0KTtyZXR1cm4gbmV3IGkobixuLDApfXJldHVybiBuZXcgaSh0LG8odC5sZW5ndGgpLDApO2Nhc2UgMjppZigibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBuPW8odC5sZW5ndGgpO3JldHVybiBuZXcgaSh0LG4sK2UpfXI9MDtjYXNlIDM6aWYodC5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInN0YXRlIGFuZCB2ZWxvY2l0eSBsZW5ndGhzIG11c3QgbWF0Y2giKTtyZXR1cm4gbmV3IGkodCxlLHIpfX1lLmV4cG9ydHM9YTt2YXIgcz10KCJjdWJpYy1oZXJtaXRlIiksbD10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGM9aS5wcm90b3R5cGU7Yy5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT1sLmd0KHRoaXMuX3RpbWUsdCktMTswPj1lfHwodGhpcy5fdGltZS5zcGxpY2UoMCxlKSx0aGlzLl9zdGF0ZS5zcGxpY2UoMCxlKnRoaXMuZGltZW5zaW9uKSx0aGlzLl92ZWxvY2l0eS5zcGxpY2UoMCxlKnRoaXMuZGltZW5zaW9uKSl9LGMuY3VydmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGltZSxyPWUubGVuZ3RoLGk9bC5sZShlLHQpLG89dGhpcy5fc2NyYXRjaFswXSxhPXRoaXMuX3N0YXRlLGM9dGhpcy5fdmVsb2NpdHksdT10aGlzLmRpbWVuc2lvbixoPXRoaXMuYm91bmRzO2lmKDA+aSlmb3IodmFyIGY9dS0xLGQ9MDt1PmQ7KytkLC0tZilvW2RdPWFbZl07ZWxzZSBpZihpPj1yLTEpZm9yKHZhciBmPWEubGVuZ3RoLTEscD10LWVbci0xXSxkPTA7dT5kOysrZCwtLWYpb1tkXT1hW2ZdK3AqY1tmXTtlbHNle2Zvcih2YXIgZj11KihpKzEpLTEsZz1lW2ldLHY9ZVtpKzFdLG09di1nfHwxLHk9dGhpcy5fc2NyYXRjaFsxXSxiPXRoaXMuX3NjcmF0Y2hbMl0seD10aGlzLl9zY3JhdGNoWzNdLF89dGhpcy5fc2NyYXRjaFs0XSx3PSEwLGQ9MDt1PmQ7KytkLC0tZil5W2RdPWFbZl0seFtkXT1jW2ZdKm0sYltkXT1hW2YrdV0sX1tkXT1jW2YrdV0qbSx3PXcmJnlbZF09PT1iW2RdJiZ4W2RdPT09X1tkXSYmMD09PXhbZF07aWYodylmb3IodmFyIGQ9MDt1PmQ7KytkKW9bZF09eVtkXTtlbHNlIHMoeSx4LGIsXywodC1nKS9tLG8pfWZvcih2YXIgQT1oWzBdLGs9aFsxXSxkPTA7dT5kOysrZClvW2RdPW4oQVtkXSxrW2RdLG9bZF0pO3JldHVybiBvfSxjLmRjdXJ2ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aW1lLHI9ZS5sZW5ndGgsbj1sLmxlKGUsdCksaT10aGlzLl9zY3JhdGNoWzBdLG89dGhpcy5fc3RhdGUsYT10aGlzLl92ZWxvY2l0eSxjPXRoaXMuZGltZW5zaW9uO2lmKG4+PXItMSlmb3IodmFyIHU9by5sZW5ndGgtMSxoPSh0LWVbci0xXSwwKTtjPmg7KytoLC0tdSlpW2hdPWFbdV07ZWxzZXtmb3IodmFyIHU9YyoobisxKS0xLGY9ZVtuXSxkPWVbbisxXSxwPWQtZnx8MSxnPXRoaXMuX3NjcmF0Y2hbMV0sdj10aGlzLl9zY3JhdGNoWzJdLG09dGhpcy5fc2NyYXRjaFszXSx5PXRoaXMuX3NjcmF0Y2hbNF0sYj0hMCxoPTA7Yz5oOysraCwtLXUpZ1toXT1vW3VdLG1baF09YVt1XSpwLHZbaF09b1t1K2NdLHlbaF09YVt1K2NdKnAsYj1iJiZnW2hdPT09dltoXSYmbVtoXT09PXlbaF0mJjA9PT1tW2hdO2lmKGIpZm9yKHZhciBoPTA7Yz5oOysraClpW2hdPTA7ZWxzZXtzLmRlcml2YXRpdmUoZyxtLHYseSwodC1mKS9wLGkpO2Zvcih2YXIgaD0wO2M+aDsrK2gpaVtoXS89cH19cmV0dXJuIGl9LGMubGFzdFQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aW1lO3JldHVybiB0W3QubGVuZ3RoLTFdfSxjLnN0YWJsZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl92ZWxvY2l0eSxlPXQubGVuZ3RoLHI9dGhpcy5kaW1lbnNpb24tMTtyPj0wOy0tcilpZih0Wy0tZV0pcmV0dXJuITE7cmV0dXJuITB9LGMuanVtcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCkscj10aGlzLmRpbWVuc2lvbjtpZighKGU+dHx8YXJndW1lbnRzLmxlbmd0aCE9PXIrMSkpe3ZhciBpPXRoaXMuX3N0YXRlLG89dGhpcy5fdmVsb2NpdHksYT1pLmxlbmd0aC10aGlzLmRpbWVuc2lvbixzPXRoaXMuYm91bmRzLGw9c1swXSxjPXNbMV07dGhpcy5fdGltZS5wdXNoKGUsdCk7Zm9yKHZhciB1PTA7Mj51OysrdSlmb3IodmFyIGg9MDtyPmg7KytoKWkucHVzaChpW2ErK10pLG8ucHVzaCgwKTt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZhciBoPXI7aD4wOy0taClpLnB1c2gobihsW2gtMV0sY1toLTFdLGFyZ3VtZW50c1toXSkpLG8ucHVzaCgwKX19LGMucHVzaD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCkscj10aGlzLmRpbWVuc2lvbjtpZighKGU+dHx8YXJndW1lbnRzLmxlbmd0aCE9PXIrMSkpe3ZhciBpPXRoaXMuX3N0YXRlLG89dGhpcy5fdmVsb2NpdHksYT1pLmxlbmd0aC10aGlzLmRpbWVuc2lvbixzPXQtZSxsPXRoaXMuYm91bmRzLGM9bFswXSx1PWxbMV0saD1zPjFlLTY/MS9zOjA7dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgZj1yO2Y+MDstLWYpe3ZhciBkPW4oY1tmLTFdLHVbZi0xXSxhcmd1bWVudHNbZl0pO2kucHVzaChkKSxvLnB1c2goKGQtaVthKytdKSpoKX19fSxjLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpbWVuc2lvbjtpZighKHQ8dGhpcy5sYXN0VCgpfHxhcmd1bWVudHMubGVuZ3RoIT09ZSsxKSl7dmFyIHI9dGhpcy5fc3RhdGUsaT10aGlzLl92ZWxvY2l0eSxvPXRoaXMuYm91bmRzLGE9b1swXSxzPW9bMV07dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgbD1lO2w+MDstLWwpci5wdXNoKG4oYVtsLTFdLHNbbC0xXSxhcmd1bWVudHNbbF0pKSxpLnB1c2goMCl9fSxjLm1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0VCgpLHI9dGhpcy5kaW1lbnNpb247aWYoIShlPj10fHxhcmd1bWVudHMubGVuZ3RoIT09cisxKSl7dmFyIGk9dGhpcy5fc3RhdGUsbz10aGlzLl92ZWxvY2l0eSxhPWkubGVuZ3RoLXRoaXMuZGltZW5zaW9uLHM9dGhpcy5ib3VuZHMsbD1zWzBdLGM9c1sxXSx1PXQtZSxoPXU+MWUtNj8xL3U6MDt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZhciBmPXI7Zj4wOy0tZil7dmFyIGQ9YXJndW1lbnRzW2ZdO2kucHVzaChuKGxbZi0xXSxjW2YtMV0saVthKytdK2QpKSxvLnB1c2goZCpoKX19fSxjLmlkbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0VCgpO2lmKCEoZT50KSl7dmFyIHI9dGhpcy5kaW1lbnNpb24saT10aGlzLl9zdGF0ZSxvPXRoaXMuX3ZlbG9jaXR5LGE9aS5sZW5ndGgtcixzPXRoaXMuYm91bmRzLGw9c1swXSxjPXNbMV0sdT10LWU7dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgaD1yLTE7aD49MDstLWgpaS5wdXNoKG4obFtoXSxjW2hdLGlbYV0rdSpvW2FdKSksby5wdXNoKDApLGErPTF9fX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MjAsImN1YmljLWhlcm1pdGUiOjIxfV0sMjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGksbyl7dmFyIGE9WyJmdW5jdGlvbiAiLHQsIihhLGwsaCwiLG4uam9pbigiLCIpLCIpeyIsbz8iIjoidmFyIGk9IixyPyJsLTEiOiJoKzEiLCI7d2hpbGUobDw9aCl7dmFyIG09KGwraCk+Pj4xLHg9YSIsaT8iLmdldChtKSI6IlttXSJdO3JldHVybiBvP2UuaW5kZXhPZigiYyIpPDA/YS5wdXNoKCI7aWYoeD09PXkpe3JldHVybiBtfWVsc2UgaWYoeDw9eSl7Iik6YS5wdXNoKCI7dmFyIHA9Yyh4LHkpO2lmKHA9PT0wKXtyZXR1cm4gbX1lbHNlIGlmKHA8PTApeyIpOmEucHVzaCgiO2lmKCIsZSwiKXtpPW07Iikscj9hLnB1c2goImw9bSsxfWVsc2V7aD1tLTF9Iik6YS5wdXNoKCJoPW0tMX1lbHNle2w9bSsxfSIpLGEucHVzaCgifSIpLG8/YS5wdXNoKCJyZXR1cm4gLTF9OyIpOmEucHVzaCgicmV0dXJuIGl9OyIpLGEuam9pbigiIil9ZnVuY3Rpb24gaSh0LGUscixpKXt2YXIgbz1uZXcgRnVuY3Rpb24oW24oIkEiLCJ4Iit0KyJ5IixlLFsieSJdLCExLGkpLG4oIkIiLCJ4Iit0KyJ5IixlLFsieSJdLCEwLGkpLG4oIlAiLCJjKHgseSkiK3QrIjAiLGUsWyJ5IiwiYyJdLCExLGkpLG4oIlEiLCJjKHgseSkiK3QrIjAiLGUsWyJ5IiwiYyJdLCEwLGkpLCJmdW5jdGlvbiBkaXNwYXRjaEJzZWFyY2giLHIsIihhLHksYyxsLGgpe2lmKGEuc2hhcGUpe2lmKHR5cGVvZihjKT09PSdmdW5jdGlvbicpe3JldHVybiBRKGEsKGw9PT11bmRlZmluZWQpPzA6bHwwLChoPT09dW5kZWZpbmVkKT9hLnNoYXBlWzBdLTE6aHwwLHksYyl9ZWxzZXtyZXR1cm4gQihhLChjPT09dW5kZWZpbmVkKT8wOmN8MCwobD09PXVuZGVmaW5lZCk/YS5zaGFwZVswXS0xOmx8MCx5KX19ZWxzZXtpZih0eXBlb2YoYyk9PT0nZnVuY3Rpb24nKXtyZXR1cm4gUChhLChsPT09dW5kZWZpbmVkKT8wOmx8MCwoaD09PXVuZGVmaW5lZCk/YS5sZW5ndGgtMTpofDAseSxjKX1lbHNle3JldHVybiBBKGEsKGM9PT11bmRlZmluZWQpPzA6Y3wwLChsPT09dW5kZWZpbmVkKT9hLmxlbmd0aC0xOmx8MCx5KX19fXJldHVybiBkaXNwYXRjaEJzZWFyY2giLHJdLmpvaW4oIiIpKTtyZXR1cm4gbygpfWUuZXhwb3J0cz17Z2U6aSgiPj0iLCExLCJHRSIpLGd0OmkoIj4iLCExLCJHVCIpLGx0OmkoIjwiLCEwLCJMVCIpLGxlOmkoIjw9IiwhMCwiTEUiKSxlcTppKCItIiwhMCwiRVEiLCEwKX19LHt9XSwyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSxvKXt2YXIgYT02KmkqaS02Kmkscz0zKmkqaS00KmkrMSxsPS02KmkqaSs2KmksYz0zKmkqaS0yKmk7aWYodC5sZW5ndGgpe298fChvPW5ldyBBcnJheSh0Lmxlbmd0aCkpO2Zvcih2YXIgdT10Lmxlbmd0aC0xO3U+PTA7LS11KW9bdV09YSp0W3VdK3MqZVt1XStsKnJbdV0rYypuW3VdO3JldHVybiBvfXJldHVybiBhKnQrcyplK2wqclt1XStjKm59ZnVuY3Rpb24gaSh0LGUscixuLGksbyl7dmFyIGE9aS0xLHM9aSppLGw9YSphLGM9KDErMippKSpsLHU9aSpsLGg9cyooMy0yKmkpLGY9cyphO2lmKHQubGVuZ3RoKXtvfHwobz1uZXcgQXJyYXkodC5sZW5ndGgpKTtmb3IodmFyIGQ9dC5sZW5ndGgtMTtkPj0wOy0tZClvW2RdPWMqdFtkXSt1KmVbZF0raCpyW2RdK2YqbltkXTtyZXR1cm4gb31yZXR1cm4gYyp0K3UqZStoKnIrZipufWUuZXhwb3J0cz1pLGUuZXhwb3J0cy5kZXJpdmF0aXZlPW59LHt9XSwyMjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLG89ZVsyXSxhPXJbMF0scz1yWzFdLGw9clsyXTtyZXR1cm4gdFswXT1pKmwtbypzLHRbMV09byphLW4qbCx0WzJdPW4qcy1pKmEsdH1lLmV4cG9ydHM9bn0se31dLDIzOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXX1lLmV4cG9ydHM9bn0se31dLDI0OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl07cmV0dXJuIE1hdGguc3FydChlKmUrcipyK24qbil9ZS5leHBvcnRzPW59LHt9XSwyNTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIsbil7dmFyIGk9ZVswXSxvPWVbMV0sYT1lWzJdO3JldHVybiB0WzBdPWkrbiooclswXS1pKSx0WzFdPW8rbiooclsxXS1vKSx0WzJdPWErbiooclsyXS1hKSx0fWUuZXhwb3J0cz1ufSx7fV0sMjY6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0saT1lWzJdLG89cipyK24qbitpKmk7cmV0dXJuIG8+MCYmKG89MS9NYXRoLnNxcnQobyksdFswXT1lWzBdKm8sdFsxXT1lWzFdKm8sdFsyXT1lWzJdKm8pLHR9ZS5leHBvcnRzPW59LHt9XSwyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3RoaXMuX2NvbXBvbmVudHM9dC5zbGljZSgpLHRoaXMuX3RpbWU9WzBdLHRoaXMucHJldk1hdHJpeD10LnNsaWNlKCksdGhpcy5uZXh0TWF0cml4PXQuc2xpY2UoKSx0aGlzLmNvbXB1dGVkTWF0cml4PXQuc2xpY2UoKSx0aGlzLmNvbXB1dGVkSW52ZXJzZT10LnNsaWNlKCksdGhpcy5jb21wdXRlZEV5ZT1bMCwwLDBdLHRoaXMuY29tcHV0ZWRVcD1bMCwwLDBdLHRoaXMuY29tcHV0ZWRDZW50ZXI9WzAsMCwwXSx0aGlzLmNvbXB1dGVkUmFkaXVzPVswXSx0aGlzLl9saW1pdHM9Wy0oMS8wKSwxLzBdfWZ1bmN0aW9uIGkodCl7dD10fHx7fTt2YXIgZT10Lm1hdHJpeHx8WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdO3JldHVybiBuZXcgbihlKX12YXIgbz10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGE9dCgibWF0NC1pbnRlcnBvbGF0ZSIpLHM9dCgiZ2wtbWF0NC9pbnZlcnQiKSxsPXQoImdsLW1hdDQvcm90YXRlWCIpLGM9dCgiZ2wtbWF0NC9yb3RhdGVZIiksdT10KCJnbC1tYXQ0L3JvdGF0ZVoiKSxoPXQoImdsLW1hdDQvbG9va0F0IiksZj10KCJnbC1tYXQ0L3RyYW5zbGF0ZSIpLGQ9KHQoImdsLW1hdDQvc2NhbGUiKSx0KCJnbC12ZWMzL25vcm1hbGl6ZSIpKSxwPVswLDAsMF07ZS5leHBvcnRzPWk7dmFyIGc9bi5wcm90b3R5cGU7Zy5yZWNhbGNNYXRyaXg9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGltZSxyPW8ubGUoZSx0KSxuPXRoaXMuY29tcHV0ZWRNYXRyaXg7aWYoISgwPnIpKXt2YXIgaT10aGlzLl9jb21wb25lbnRzO2lmKHI9PT1lLmxlbmd0aC0xKWZvcih2YXIgbD0xNipyLGM9MDsxNj5jOysrYyluW2NdPWlbbCsrXTtlbHNle2Zvcih2YXIgdT1lW3IrMV0tZVtyXSxsPTE2KnIsaD10aGlzLnByZXZNYXRyaXgsZj0hMCxjPTA7MTY+YzsrK2MpaFtjXT1pW2wrK107Zm9yKHZhciBwPXRoaXMubmV4dE1hdHJpeCxjPTA7MTY+YzsrK2MpcFtjXT1pW2wrK10sZj1mJiZoW2NdPT09cFtjXTtpZigxZS02PnV8fGYpZm9yKHZhciBjPTA7MTY+YzsrK2MpbltjXT1oW2NdO2Vsc2UgYShuLGgscCwodC1lW3JdKS91KX12YXIgZz10aGlzLmNvbXB1dGVkVXA7Z1swXT1uWzFdLGdbMV09bls1XSxnWzJdPW5bNl0sZChnLGcpO3ZhciB2PXRoaXMuY29tcHV0ZWRJbnZlcnNlO3ModixuKTt2YXIgbT10aGlzLmNvbXB1dGVkRXllLHk9dlsxNV07bVswXT12WzEyXS95LG1bMV09dlsxM10veSxtWzJdPXZbMTRdL3k7Zm9yKHZhciBiPXRoaXMuY29tcHV0ZWRDZW50ZXIseD1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKSxjPTA7Mz5jOysrYyliW2NdPW1bY10tblsyKzQqY10qeH19LGcuaWRsZT1mdW5jdGlvbih0KXtpZighKHQ8dGhpcy5sYXN0VCgpKSl7Zm9yKHZhciBlPXRoaXMuX2NvbXBvbmVudHMscj1lLmxlbmd0aC0xNixuPTA7MTY+bjsrK24pZS5wdXNoKGVbcisrXSk7dGhpcy5fdGltZS5wdXNoKHQpfX0sZy5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT1vLmd0KHRoaXMuX3RpbWUsdCktMjswPmV8fCh0aGlzLl90aW1lLnNsaWNlKDAsZSksdGhpcy5fY29tcG9uZW50cy5zbGljZSgwLDE2KmUpKX0sZy5sYXN0VD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90aW1lW3RoaXMuX3RpbWUubGVuZ3RoLTFdfSxnLmxvb2tBdD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnJlY2FsY01hdHJpeCh0KSxlPWV8fHRoaXMuY29tcHV0ZWRFeWUscj1yfHxwLG49bnx8dGhpcy5jb21wdXRlZFVwLHRoaXMuc2V0TWF0cml4KHQsaCh0aGlzLmNvbXB1dGVkTWF0cml4LGUscixuKSk7Zm9yKHZhciBpPTAsbz0wOzM+bzsrK28paSs9TWF0aC5wb3cocltvXS1lW29dLDIpO2k9TWF0aC5sb2coTWF0aC5zcXJ0KGkpKSx0aGlzLmNvbXB1dGVkUmFkaXVzWzBdPWl9LGcucm90YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBpPXRoaXMuY29tcHV0ZWRJbnZlcnNlO2UmJmMoaSxpLGUpLHImJmwoaSxpLHIpLG4mJnUoaSxpLG4pLHRoaXMuc2V0TWF0cml4KHQscyh0aGlzLmNvbXB1dGVkTWF0cml4LGkpKX07dmFyIHY9WzAsMCwwXTtnLnBhbj1mdW5jdGlvbih0LGUscixuKXt2WzBdPS0oZXx8MCksdlsxXT0tKHJ8fDApLHZbMl09LShufHwwKSx0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgaT10aGlzLmNvbXB1dGVkSW52ZXJzZTtmKGksaSx2KSx0aGlzLnNldE1hdHJpeCh0LHMoaSxpKSl9LGcudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZbMF09ZXx8MCx2WzFdPXJ8fDAsdlsyXT1ufHwwLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBpPXRoaXMuY29tcHV0ZWRNYXRyaXg7ZihpLGksdiksdGhpcy5zZXRNYXRyaXgodCxpKX0sZy5zZXRNYXRyaXg9ZnVuY3Rpb24odCxlKXtpZighKHQ8dGhpcy5sYXN0VCgpKSl7dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgcj0wOzE2PnI7KytyKXRoaXMuX2NvbXBvbmVudHMucHVzaChlW3JdKX19LGcuc2V0RGlzdGFuY2U9ZnVuY3Rpb24odCxlKXt0aGlzLmNvbXB1dGVkUmFkaXVzWzBdPWV9LGcuc2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9saW1pdHM7clswXT10LHJbMV09ZX0sZy5nZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9saW1pdHM7cmV0dXJuIHQ/KHRbMF09ZVswXSx0WzFdPWVbMV0sdCk6ZX19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjI4LCJnbC1tYXQ0L2ludmVydCI6OTQsImdsLW1hdDQvbG9va0F0Ijo5NSwiZ2wtbWF0NC9yb3RhdGVYIjo5OSwiZ2wtbWF0NC9yb3RhdGVZIjoxMDAsImdsLW1hdDQvcm90YXRlWiI6MTAxLCJnbC1tYXQ0L3NjYWxlIjoxMDIsImdsLW1hdDQvdHJhbnNsYXRlIjoxMDMsImdsLXZlYzMvbm9ybWFsaXplIjoyNiwibWF0NC1pbnRlcnBvbGF0ZSI6Mjl9XSwyODpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsyMF1bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVwOjIwfV0sMjk6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyLG4pe2lmKDA9PT11KGUpfHwwPT09dShyKSlyZXR1cm4hMTt2YXIgaT1jKGUsZi50cmFuc2xhdGUsZi5zY2FsZSxmLnNrZXcsZi5wZXJzcGVjdGl2ZSxmLnF1YXRlcm5pb24pLG89YyhyLGQudHJhbnNsYXRlLGQuc2NhbGUsZC5za2V3LGQucGVyc3BlY3RpdmUsZC5xdWF0ZXJuaW9uKTtyZXR1cm4gaSYmbz8ocyhwLnRyYW5zbGF0ZSxmLnRyYW5zbGF0ZSxkLnRyYW5zbGF0ZSxuKSxzKHAuc2tldyxmLnNrZXcsZC5za2V3LG4pLHMocC5zY2FsZSxmLnNjYWxlLGQuc2NhbGUsbikscyhwLnBlcnNwZWN0aXZlLGYucGVyc3BlY3RpdmUsZC5wZXJzcGVjdGl2ZSxuKSxoKHAucXVhdGVybmlvbixmLnF1YXRlcm5pb24sZC5xdWF0ZXJuaW9uLG4pLGwodCxwLnRyYW5zbGF0ZSxwLnNjYWxlLHAuc2tldyxwLnBlcnNwZWN0aXZlLHAucXVhdGVybmlvbiksITApOiExfWZ1bmN0aW9uIGkoKXtyZXR1cm57dHJhbnNsYXRlOm8oKSxzY2FsZTpvKDEpLHNrZXc6bygpLHBlcnNwZWN0aXZlOmEoKSxxdWF0ZXJuaW9uOmEoKX19ZnVuY3Rpb24gbyh0KXtyZXR1cm5bdHx8MCx0fHwwLHR8fDBdfWZ1bmN0aW9uIGEoKXtyZXR1cm5bMCwwLDAsMV19dmFyIHM9dCgiZ2wtdmVjMy9sZXJwIiksbD10KCJtYXQ0LXJlY29tcG9zZSIpLGM9dCgibWF0NC1kZWNvbXBvc2UiKSx1PXQoImdsLW1hdDQvZGV0ZXJtaW5hbnQiKSxoPXQoInF1YXQtc2xlcnAiKSxmPWkoKSxkPWkoKSxwPWkoKTtlLmV4cG9ydHM9bn0seyJnbC1tYXQ0L2RldGVybWluYW50Ijo5MCwiZ2wtdmVjMy9sZXJwIjoyNSwibWF0NC1kZWNvbXBvc2UiOjMwLCJtYXQ0LXJlY29tcG9zZSI6MzIsInF1YXQtc2xlcnAiOjMzfV0sMzA6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj1lWzBdLGk9ZVsxXSxvPWVbMl0sYT1lWzNdO3JldHVybiB0WzBdPXJbMF0qbityWzRdKmkrcls4XSpvK3JbMTJdKmEsdFsxXT1yWzFdKm4rcls1XSppK3JbOV0qbytyWzEzXSphLHRbMl09clsyXSpuK3JbNl0qaStyWzEwXSpvK3JbMTRdKmEsdFszXT1yWzNdKm4rcls3XSppK3JbMTFdKm8rclsxNV0qYSx0fWZ1bmN0aW9uIGkodCxlKXt0WzBdWzBdPWVbMF0sdFswXVsxXT1lWzFdLHRbMF1bMl09ZVsyXSx0WzFdWzBdPWVbNF0sdFsxXVsxXT1lWzVdLHRbMV1bMl09ZVs2XSx0WzJdWzBdPWVbOF0sdFsyXVsxXT1lWzldLHRbMl1bMl09ZVsxMF19ZnVuY3Rpb24gbyh0LGUscixuLGkpe3RbMF09ZVswXSpuK3JbMF0qaSx0WzFdPWVbMV0qbityWzFdKmksdFsyXT1lWzJdKm4rclsyXSppfXZhciBhPXQoIi4vbm9ybWFsaXplIikscz10KCJnbC1tYXQ0L2NyZWF0ZSIpLGw9dCgiZ2wtbWF0NC9jbG9uZSIpLGM9dCgiZ2wtbWF0NC9kZXRlcm1pbmFudCIpLHU9dCgiZ2wtbWF0NC9pbnZlcnQiKSxoPXQoImdsLW1hdDQvdHJhbnNwb3NlIiksZj17bGVuZ3RoOnQoImdsLXZlYzMvbGVuZ3RoIiksbm9ybWFsaXplOnQoImdsLXZlYzMvbm9ybWFsaXplIiksZG90OnQoImdsLXZlYzMvZG90IiksY3Jvc3M6dCgiZ2wtdmVjMy9jcm9zcyIpfSxkPXMoKSxwPXMoKSxnPVswLDAsMCwwXSx2PVtbMCwwLDBdLFswLDAsMF0sWzAsMCwwXV0sbT1bMCwwLDBdO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzLHksYil7aWYoZXx8KGU9WzAsMCwwXSkscnx8KHI9WzAsMCwwXSksc3x8KHM9WzAsMCwwXSkseXx8KHk9WzAsMCwwLDFdKSxifHwoYj1bMCwwLDAsMV0pLCFhKGQsdCkpcmV0dXJuITE7aWYobChwLGQpLHBbM109MCxwWzddPTAscFsxMV09MCxwWzE1XT0xLE1hdGguYWJzKGMocCk8MWUtOCkpcmV0dXJuITE7dmFyIHg9ZFszXSxfPWRbN10sdz1kWzExXSxBPWRbMTJdLGs9ZFsxM10sTT1kWzE0XSxUPWRbMTVdO2lmKDAhPT14fHwwIT09X3x8MCE9PXcpe2dbMF09eCxnWzFdPV8sZ1syXT13LGdbM109VDt2YXIgRT11KHAscCk7aWYoIUUpcmV0dXJuITE7aChwLHApLG4oeSxnLHApfWVsc2UgeVswXT15WzFdPXlbMl09MCx5WzNdPTE7aWYoZVswXT1BLGVbMV09ayxlWzJdPU0saSh2LGQpLHJbMF09Zi5sZW5ndGgodlswXSksZi5ub3JtYWxpemUodlswXSx2WzBdKSxzWzBdPWYuZG90KHZbMF0sdlsxXSksbyh2WzFdLHZbMV0sdlswXSwxLC1zWzBdKSxyWzFdPWYubGVuZ3RoKHZbMV0pLGYubm9ybWFsaXplKHZbMV0sdlsxXSksc1swXS89clsxXSxzWzFdPWYuZG90KHZbMF0sdlsyXSksbyh2WzJdLHZbMl0sdlswXSwxLC1zWzFdKSxzWzJdPWYuZG90KHZbMV0sdlsyXSksbyh2WzJdLHZbMl0sdlsxXSwxLC1zWzJdKSxyWzJdPWYubGVuZ3RoKHZbMl0pLGYubm9ybWFsaXplKHZbMl0sdlsyXSksc1sxXS89clsyXSxzWzJdLz1yWzJdLGYuY3Jvc3MobSx2WzFdLHZbMl0pLGYuZG90KHZbMF0sbSk8MClmb3IodmFyIEw9MDszPkw7TCsrKXJbTF0qPS0xLHZbTF1bMF0qPS0xLHZbTF1bMV0qPS0xLHZbTF1bMl0qPS0xO3JldHVybiBiWzBdPS41Kk1hdGguc3FydChNYXRoLm1heCgxK3ZbMF1bMF0tdlsxXVsxXS12WzJdWzJdLDApKSxiWzFdPS41Kk1hdGguc3FydChNYXRoLm1heCgxLXZbMF1bMF0rdlsxXVsxXS12WzJdWzJdLDApKSxiWzJdPS41Kk1hdGguc3FydChNYXRoLm1heCgxLXZbMF1bMF0tdlsxXVsxXSt2WzJdWzJdLDApKSxiWzNdPS41Kk1hdGguc3FydChNYXRoLm1heCgxK3ZbMF1bMF0rdlsxXVsxXSt2WzJdWzJdLDApKSx2WzJdWzFdPnZbMV1bMl0mJihiWzBdPS1iWzBdKSx2WzBdWzJdPnZbMl1bMF0mJihiWzFdPS1iWzFdKSx2WzFdWzBdPnZbMF1bMV0mJihiWzJdPS1iWzJdKSwhMH19LHsiLi9ub3JtYWxpemUiOjMxLCJnbC1tYXQ0L2Nsb25lIjo4OCwiZ2wtbWF0NC9jcmVhdGUiOjg5LCJnbC1tYXQ0L2RldGVybWluYW50Ijo5MCwiZ2wtbWF0NC9pbnZlcnQiOjk0LCJnbC1tYXQ0L3RyYW5zcG9zZSI6MTA0LCJnbC12ZWMzL2Nyb3NzIjoyMiwiZ2wtdmVjMy9kb3QiOjIzLCJnbC12ZWMzL2xlbmd0aCI6MjQsImdsLXZlYzMvbm9ybWFsaXplIjoyNn1dLDMxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVsxNV07aWYoMD09PXIpcmV0dXJuITE7Zm9yKHZhciBuPTEvcixpPTA7MTY+aTtpKyspdFtpXT1lW2ldKm47cmV0dXJuITB9fSx7fV0sMzI6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj17aWRlbnRpdHk6dCgiZ2wtbWF0NC9pZGVudGl0eSIpLHRyYW5zbGF0ZTp0KCJnbC1tYXQ0L3RyYW5zbGF0ZSIpLG11bHRpcGx5OnQoImdsLW1hdDQvbXVsdGlwbHkiKSxjcmVhdGU6dCgiZ2wtbWF0NC9jcmVhdGUiKSxzY2FsZTp0KCJnbC1tYXQ0L3NjYWxlIiksZnJvbVJvdGF0aW9uVHJhbnNsYXRpb246dCgiZ2wtbWF0NC9mcm9tUm90YXRpb25UcmFuc2xhdGlvbiIpfSxpPShuLmNyZWF0ZSgpLG4uY3JlYXRlKCkpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvLGEscyl7cmV0dXJuIG4uaWRlbnRpdHkodCksbi5mcm9tUm90YXRpb25UcmFuc2xhdGlvbih0LHMsZSksdFszXT1hWzBdLHRbN109YVsxXSx0WzExXT1hWzJdLHRbMTVdPWFbM10sbi5pZGVudGl0eShpKSwwIT09b1syXSYmKGlbOV09b1syXSxuLm11bHRpcGx5KHQsdCxpKSksMCE9PW9bMV0mJihpWzldPTAsaVs4XT1vWzFdLG4ubXVsdGlwbHkodCx0LGkpKSwwIT09b1swXSYmKGlbOF09MCxpWzRdPW9bMF0sbi5tdWx0aXBseSh0LHQsaSkpLG4uc2NhbGUodCx0LHIpLHR9fSx7ImdsLW1hdDQvY3JlYXRlIjo4OSwiZ2wtbWF0NC9mcm9tUm90YXRpb25UcmFuc2xhdGlvbiI6OTIsImdsLW1hdDQvaWRlbnRpdHkiOjkzLCJnbC1tYXQ0L211bHRpcGx5Ijo5NiwiZ2wtbWF0NC9zY2FsZSI6MTAyLCJnbC1tYXQ0L3RyYW5zbGF0ZSI6MTAzfV0sMzM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiZ2wtcXVhdC9zbGVycCIpfSx7ImdsLXF1YXQvc2xlcnAiOjM0fV0sMzQ6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyLG4pe3ZhciBpLG8sYSxzLGwsYz1lWzBdLHU9ZVsxXSxoPWVbMl0sZj1lWzNdLGQ9clswXSxwPXJbMV0sZz1yWzJdLHY9clszXTtyZXR1cm4gbz1jKmQrdSpwK2gqZytmKnYsMD5vJiYobz0tbyxkPS1kLHA9LXAsZz0tZyx2PS12KSwxLW8+MWUtNj8oaT1NYXRoLmFjb3MobyksYT1NYXRoLnNpbihpKSxzPU1hdGguc2luKCgxLW4pKmkpL2EsbD1NYXRoLnNpbihuKmkpL2EpOihzPTEtbixsPW4pLHRbMF09cypjK2wqZCx0WzFdPXMqdStsKnAsdFsyXT1zKmgrbCpnLHRbM109cypmK2wqdix0fWUuZXhwb3J0cz1ufSx7fV0sMzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGksbyxhLHMsbCxjKXt2YXIgdT1lK28rYztpZihoPjApe3ZhciBoPU1hdGguc3FydCh1KzEpO3RbMF09LjUqKGEtbCkvaCx0WzFdPS41KihzLW4pL2gsdFsyXT0uNSooci1vKS9oLHRbM109LjUqaH1lbHNle3ZhciBmPU1hdGgubWF4KGUsbyxjKSxoPU1hdGguc3FydCgyKmYtdSsxKTtlPj1mPyh0WzBdPS41KmgsdFsxXT0uNSooaStyKS9oLHRbMl09LjUqKHMrbikvaCx0WzNdPS41KihhLWwpL2gpOm8+PWY/KHRbMF09LjUqKHIraSkvaCx0WzFdPS41KmgsdFsyXT0uNSoobCthKS9oLHRbM109LjUqKHMtbikvaCk6KHRbMF09LjUqKG4rcykvaCx0WzFdPS41KihhK2wpL2gsdFsyXT0uNSpoLHRbM109LjUqKHItaSkvaCl9cmV0dXJuIHR9ZS5leHBvcnRzPW59LHt9XSwzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHQsMikrTWF0aC5wb3coZSwyKStNYXRoLnBvdyhyLDIpKX1mdW5jdGlvbiBpKHQsZSxyLG4pe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codCwyKStNYXRoLnBvdyhlLDIpK01hdGgucG93KHIsMikrTWF0aC5wb3cobiwyKSl9ZnVuY3Rpb24gbyh0LGUpe3ZhciByPWVbMF0sbj1lWzFdLG89ZVsyXSxhPWVbM10scz1pKHIsbixvLGEpO3M+MWUtNj8odFswXT1yL3MsdFsxXT1uL3MsdFsyXT1vL3MsdFszXT1hL3MpOih0WzBdPXRbMV09dFsyXT0wLHRbM109MSl9ZnVuY3Rpb24gYSh0LGUscil7dGhpcy5yYWRpdXM9bChbcl0pLHRoaXMuY2VudGVyPWwoZSksdGhpcy5yb3RhdGlvbj1sKHQpLHRoaXMuY29tcHV0ZWRSYWRpdXM9dGhpcy5yYWRpdXMuY3VydmUoMCksdGhpcy5jb21wdXRlZENlbnRlcj10aGlzLmNlbnRlci5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkUm90YXRpb249dGhpcy5yb3RhdGlvbi5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkVXA9Wy4xLDAsMF0sdGhpcy5jb21wdXRlZEV5ZT1bLjEsMCwwXSx0aGlzLmNvbXB1dGVkTWF0cml4PVsuMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0sdGhpcy5yZWNhbGNNYXRyaXgoMCl9ZnVuY3Rpb24gcyh0KXt0PXR8fHt9O3ZhciBlPXQuY2VudGVyfHxbMCwwLDBdLHI9dC5yb3RhdGlvbnx8WzAsMCwwLDFdLG49dC5yYWRpdXN8fDE7ZT1bXS5zbGljZS5jYWxsKGUsMCwzKSxyPVtdLnNsaWNlLmNhbGwociwwLDQpLG8ocixyKTt2YXIgaT1uZXcgYShyLGUsTWF0aC5sb2cobikpO3JldHVybiBpLnNldERpc3RhbmNlTGltaXRzKHQuem9vbU1pbix0Lnpvb21NYXgpLCgiZXllImluIHR8fCJ1cCJpbiB0KSYmaS5sb29rQXQoMCx0LmV5ZSx0LmNlbnRlcix0LnVwKSxpfWUuZXhwb3J0cz1zO3ZhciBsPXQoImZpbHRlcmVkLXZlY3RvciIpLGM9dCgiZ2wtbWF0NC9sb29rQXQiKSx1PXQoImdsLW1hdDQvZnJvbVF1YXQiKSxoPXQoImdsLW1hdDQvaW52ZXJ0IiksZj10KCIuL2xpYi9xdWF0RnJvbUZyYW1lIiksZD1hLnByb3RvdHlwZTtkLmxhc3RUPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMucmFkaXVzLmxhc3RUKCksdGhpcy5jZW50ZXIubGFzdFQoKSx0aGlzLnJvdGF0aW9uLmxhc3RUKCkpfSxkLnJlY2FsY01hdHJpeD1mdW5jdGlvbih0KXt0aGlzLnJhZGl1cy5jdXJ2ZSh0KSx0aGlzLmNlbnRlci5jdXJ2ZSh0KSx0aGlzLnJvdGF0aW9uLmN1cnZlKHQpO3ZhciBlPXRoaXMuY29tcHV0ZWRSb3RhdGlvbjtvKGUsZSk7dmFyIHI9dGhpcy5jb21wdXRlZE1hdHJpeDt1KHIsZSk7dmFyIG49dGhpcy5jb21wdXRlZENlbnRlcixpPXRoaXMuY29tcHV0ZWRFeWUsYT10aGlzLmNvbXB1dGVkVXAscz1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTtpWzBdPW5bMF0rcypyWzJdLGlbMV09blsxXStzKnJbNl0saVsyXT1uWzJdK3MqclsxMF0sYVswXT1yWzFdLGFbMV09cls1XSxhWzJdPXJbOV07Zm9yKHZhciBsPTA7Mz5sOysrbCl7Zm9yKHZhciBjPTAsaD0wOzM+aDsrK2gpYys9cltsKzQqaF0qaVtoXTtyWzEyK2xdPS1jfX0sZC5nZXRNYXRyaXg9ZnVuY3Rpb24odCxlKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgcj10aGlzLmNvbXB1dGVkTWF0cml4O2lmKGUpe2Zvcih2YXIgbj0wOzE2Pm47KytuKWVbbl09cltuXTtyZXR1cm4gZX1yZXR1cm4gcn0sZC5pZGxlPWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmlkbGUodCksdGhpcy5yYWRpdXMuaWRsZSh0KSx0aGlzLnJvdGF0aW9uLmlkbGUodCl9LGQuZmx1c2g9ZnVuY3Rpb24odCl7dGhpcy5jZW50ZXIuZmx1c2godCksdGhpcy5yYWRpdXMuZmx1c2godCksdGhpcy5yb3RhdGlvbi5mbHVzaCh0KX0sZC5wYW49ZnVuY3Rpb24odCxlLHIsaSl7ZT1lfHwwLHI9cnx8MCxpPWl8fDAsdGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIG89dGhpcy5jb21wdXRlZE1hdHJpeCxhPW9bMV0scz1vWzVdLGw9b1s5XSxjPW4oYSxzLGwpO2EvPWMscy89YyxsLz1jO3ZhciB1PW9bMF0saD1vWzRdLGY9b1s4XSxkPXUqYStoKnMrZipsO3UtPWEqZCxoLT1zKmQsZi09bCpkO3ZhciBwPW4odSxoLGYpO3UvPXAsaC89cCxmLz1wO3ZhciBnPW9bMl0sdj1vWzZdLG09b1sxMF0seT1nKmErdipzK20qbCxiPWcqdSt2KmgrbSpmO2ctPXkqYStiKnUsdi09eSpzK2IqaCxtLT15KmwrYipmO3ZhciB4PW4oZyx2LG0pO2cvPXgsdi89eCxtLz14O3ZhciBfPXUqZSthKnIsdz1oKmUrcypyLEE9ZiplK2wqcjt0aGlzLmNlbnRlci5tb3ZlKHQsXyx3LEEpO3ZhciBrPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO2s9TWF0aC5tYXgoMWUtNCxrK2kpLHRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKGspKX0sZC5yb3RhdGU9ZnVuY3Rpb24odCxlLHIsbyl7dGhpcy5yZWNhbGNNYXRyaXgodCksZT1lfHwwLHI9cnx8MDt2YXIgYT10aGlzLmNvbXB1dGVkTWF0cml4LHM9YVswXSxsPWFbNF0sYz1hWzhdLHU9YVsxXSxoPWFbNV0sZj1hWzldLGQ9YVsyXSxwPWFbNl0sZz1hWzEwXSx2PWUqcytyKnUsbT1lKmwrcipoLHk9ZSpjK3IqZixiPS0ocCp5LWcqbSkseD0tKGcqdi1kKnkpLF89LShkKm0tcCp2KSx3PU1hdGguc3FydChNYXRoLm1heCgwLDEtTWF0aC5wb3coYiwyKS1NYXRoLnBvdyh4LDIpLU1hdGgucG93KF8sMikpKSxBPWkoYix4LF8sdyk7QT4xZS02PyhiLz1BLHgvPUEsXy89QSx3Lz1BKTooYj14PV89MCx3PTEpO3ZhciBrPXRoaXMuY29tcHV0ZWRSb3RhdGlvbixNPWtbMF0sVD1rWzFdLEU9a1syXSxMPWtbM10sUz1NKncrTCpiK1QqXy1FKngsQz1UKncrTCp4K0UqYi1NKl8sUD1FKncrTCpfK00qeC1UKmIsej1MKnctTSpiLVQqeC1FKl87aWYobyl7Yj1kLHg9cCxfPWc7dmFyIFI9TWF0aC5zaW4obykvbihiLHgsXyk7Yio9Uix4Kj1SLF8qPVIsdz1NYXRoLmNvcyhlKSxTPVMqdyt6KmIrQypfLVAqeCxDPUMqdyt6KngrUCpiLVMqXyxQPVAqdyt6Kl8rUyp4LUMqYix6PXoqdy1TKmItQyp4LVAqX312YXIgTz1pKFMsQyxQLHopO08+MWUtNj8oUy89TyxDLz1PLFAvPU8sei89Tyk6KFM9Qz1QPTAsej0xKSx0aGlzLnJvdGF0aW9uLnNldCh0LFMsQyxQLHopfSxkLmxvb2tBdD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnJlY2FsY01hdHJpeCh0KSxyPXJ8fHRoaXMuY29tcHV0ZWRDZW50ZXIsZT1lfHx0aGlzLmNvbXB1dGVkRXllLG49bnx8dGhpcy5jb21wdXRlZFVwO3ZhciBpPXRoaXMuY29tcHV0ZWRNYXRyaXg7YyhpLGUscixuKTt2YXIgYT10aGlzLmNvbXB1dGVkUm90YXRpb247ZihhLGlbMF0saVsxXSxpWzJdLGlbNF0saVs1XSxpWzZdLGlbOF0saVs5XSxpWzEwXSksbyhhLGEpLHRoaXMucm90YXRpb24uc2V0KHQsYVswXSxhWzFdLGFbMl0sYVszXSk7Zm9yKHZhciBzPTAsbD0wOzM+bDsrK2wpcys9TWF0aC5wb3cocltsXS1lW2xdLDIpO3RoaXMucmFkaXVzLnNldCh0LC41Kk1hdGgubG9nKE1hdGgubWF4KHMsMWUtNikpKSx0aGlzLmNlbnRlci5zZXQodCxyWzBdLHJbMV0sclsyXSl9LGQudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuY2VudGVyLm1vdmUodCxlfHwwLHJ8fDAsbnx8MCl9LGQuc2V0TWF0cml4PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5jb21wdXRlZFJvdGF0aW9uO2YocixlWzBdLGVbMV0sZVsyXSxlWzRdLGVbNV0sZVs2XSxlWzhdLGVbOV0sZVsxMF0pLG8ocixyKSx0aGlzLnJvdGF0aW9uLnNldCh0LHJbMF0sclsxXSxyWzJdLHJbM10pO3ZhciBuPXRoaXMuY29tcHV0ZWRNYXRyaXg7aChuLGUpO3ZhciBpPW5bMTVdO2lmKE1hdGguYWJzKGkpPjFlLTYpe3ZhciBhPW5bMTJdL2kscz1uWzEzXS9pLGw9blsxNF0vaTt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgYz1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTt0aGlzLmNlbnRlci5zZXQodCxhLW5bMl0qYyxzLW5bNl0qYyxsLW5bMTBdKmMpLHRoaXMucmFkaXVzLmlkbGUodCl9ZWxzZSB0aGlzLmNlbnRlci5pZGxlKHQpLHRoaXMucmFkaXVzLmlkbGUodCl9LGQuc2V0RGlzdGFuY2U9ZnVuY3Rpb24odCxlKXtlPjAmJnRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKGUpKX0sZC5zZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0LGUpe3Q9dD4wP01hdGgubG9nKHQpOi0oMS8wKSxlPWU+MD9NYXRoLmxvZyhlKToxLzAsZT1NYXRoLm1heChlLHQpLHRoaXMucmFkaXVzLmJvdW5kc1swXVswXT10LHRoaXMucmFkaXVzLmJvdW5kc1sxXVswXT1lfSxkLmdldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucmFkaXVzLmJvdW5kcztyZXR1cm4gdD8odFswXT1NYXRoLmV4cChlWzBdWzBdKSx0WzFdPU1hdGguZXhwKGVbMV1bMF0pLHQpOltNYXRoLmV4cChlWzBdWzBdKSxNYXRoLmV4cChlWzFdWzBdKV19LGQudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVjYWxjTWF0cml4KHRoaXMubGFzdFQoKSksCntjZW50ZXI6dGhpcy5jb21wdXRlZENlbnRlci5zbGljZSgpLHJvdGF0aW9uOnRoaXMuY29tcHV0ZWRSb3RhdGlvbi5zbGljZSgpLGRpc3RhbmNlOk1hdGgubG9nKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pLHpvb21NaW46dGhpcy5yYWRpdXMuYm91bmRzWzBdWzBdLHpvb21NYXg6dGhpcy5yYWRpdXMuYm91bmRzWzFdWzBdfX0sZC5mcm9tSlNPTj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCkscj10LmNlbnRlcjtyJiZ0aGlzLmNlbnRlci5zZXQoZSxyWzBdLHJbMV0sclsyXSk7dmFyIG49dC5yb3RhdGlvbjtuJiZ0aGlzLnJvdGF0aW9uLnNldChlLG5bMF0sblsxXSxuWzJdLG5bM10pO3ZhciBpPXQuZGlzdGFuY2U7aSYmaT4wJiZ0aGlzLnJhZGl1cy5zZXQoZSxNYXRoLmxvZyhpKSksdGhpcy5zZXREaXN0YW5jZUxpbWl0cyh0Lnpvb21NaW4sdC56b29tTWF4KX19LHsiLi9saWIvcXVhdEZyb21GcmFtZSI6MzUsImZpbHRlcmVkLXZlY3RvciI6MTksImdsLW1hdDQvZnJvbVF1YXQiOjkxLCJnbC1tYXQ0L2ludmVydCI6OTQsImdsLW1hdDQvbG9va0F0Ijo5NX1dLDM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codCwyKStNYXRoLnBvdyhlLDIpK01hdGgucG93KHIsMikpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoLTEsdCkpfWZ1bmN0aW9uIG8odCl7dmFyIGU9TWF0aC5hYnModFswXSkscj1NYXRoLmFicyh0WzFdKSxuPU1hdGguYWJzKHRbMl0pLGk9WzAsMCwwXTtlPk1hdGgubWF4KHIsbik/aVsyXT0xOnI+TWF0aC5tYXgoZSxuKT9pWzBdPTE6aVsxXT0xO2Zvcih2YXIgbz0wLGE9MCxzPTA7Mz5zOysrcylvKz10W3NdKnRbc10sYSs9aVtzXSp0W3NdO2Zvcih2YXIgcz0wOzM+czsrK3MpaVtzXS09YS9vKnRbc107cmV0dXJuIGYoaSxpKSxpfWZ1bmN0aW9uIGEodCxlLHIsbixpLG8sYSxzKXt0aGlzLmNlbnRlcj1sKHIpLHRoaXMudXA9bChuKSx0aGlzLnJpZ2h0PWwoaSksdGhpcy5yYWRpdXM9bChbb10pLHRoaXMuYW5nbGU9bChbYSxzXSksdGhpcy5hbmdsZS5ib3VuZHM9W1stKDEvMCksLU1hdGguUEkvMl0sWzEvMCxNYXRoLlBJLzJdXSx0aGlzLnNldERpc3RhbmNlTGltaXRzKHQsZSksdGhpcy5jb21wdXRlZENlbnRlcj10aGlzLmNlbnRlci5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkVXA9dGhpcy51cC5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkUmlnaHQ9dGhpcy5yaWdodC5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkUmFkaXVzPXRoaXMucmFkaXVzLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRBbmdsZT10aGlzLmFuZ2xlLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRUb3dhcmQ9WzAsMCwwXSx0aGlzLmNvbXB1dGVkRXllPVswLDAsMF0sdGhpcy5jb21wdXRlZE1hdHJpeD1uZXcgQXJyYXkoMTYpO2Zvcih2YXIgYz0wOzE2PmM7KytjKXRoaXMuY29tcHV0ZWRNYXRyaXhbY109LjU7dGhpcy5yZWNhbGNNYXRyaXgoMCl9ZnVuY3Rpb24gcyh0KXt0PXR8fHt9O3ZhciBlPXQuY2VudGVyfHxbMCwwLDBdLHI9dC51cHx8WzAsMSwwXSxpPXQucmlnaHR8fG8ocikscz10LnJhZGl1c3x8MSxsPXQudGhldGF8fDAsYz10LnBoaXx8MDtpZihlPVtdLnNsaWNlLmNhbGwoZSwwLDMpLHI9W10uc2xpY2UuY2FsbChyLDAsMyksZihyLHIpLGk9W10uc2xpY2UuY2FsbChpLDAsMyksZihpLGkpLCJleWUiaW4gdCl7dmFyIHU9dC5leWUscD1bdVswXS1lWzBdLHVbMV0tZVsxXSx1WzJdLWVbMl1dO2goaSxwLHIpLG4oaVswXSxpWzFdLGlbMl0pPDFlLTY/aT1vKHIpOmYoaSxpKSxzPW4ocFswXSxwWzFdLHBbMl0pO3ZhciBnPWQocixwKS9zLHY9ZChpLHApL3M7Yz1NYXRoLmFjb3MoZyksbD1NYXRoLmFjb3Modil9cmV0dXJuIHM9TWF0aC5sb2cocyksbmV3IGEodC56b29tTWluLHQuem9vbU1heCxlLHIsaSxzLGwsYyl9ZS5leHBvcnRzPXM7dmFyIGw9dCgiZmlsdGVyZWQtdmVjdG9yIiksYz10KCJnbC1tYXQ0L2ludmVydCIpLHU9dCgiZ2wtbWF0NC9yb3RhdGUiKSxoPXQoImdsLXZlYzMvY3Jvc3MiKSxmPXQoImdsLXZlYzMvbm9ybWFsaXplIiksZD10KCJnbC12ZWMzL2RvdCIpLHA9YS5wcm90b3R5cGU7cC5zZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0LGUpe3Q9dD4wP01hdGgubG9nKHQpOi0oMS8wKSxlPWU+MD9NYXRoLmxvZyhlKToxLzAsZT1NYXRoLm1heChlLHQpLHRoaXMucmFkaXVzLmJvdW5kc1swXVswXT10LHRoaXMucmFkaXVzLmJvdW5kc1sxXVswXT1lfSxwLmdldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucmFkaXVzLmJvdW5kc1swXTtyZXR1cm4gdD8odFswXT1NYXRoLmV4cChlWzBdWzBdKSx0WzFdPU1hdGguZXhwKGVbMV1bMF0pLHQpOltNYXRoLmV4cChlWzBdWzBdKSxNYXRoLmV4cChlWzFdWzBdKV19LHAucmVjYWxjTWF0cml4PWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmN1cnZlKHQpLHRoaXMudXAuY3VydmUodCksdGhpcy5yaWdodC5jdXJ2ZSh0KSx0aGlzLnJhZGl1cy5jdXJ2ZSh0KSx0aGlzLmFuZ2xlLmN1cnZlKHQpO2Zvcih2YXIgZT10aGlzLmNvbXB1dGVkVXAscj10aGlzLmNvbXB1dGVkUmlnaHQsaT0wLG89MCxhPTA7Mz5hOysrYSlvKz1lW2FdKnJbYV0saSs9ZVthXSplW2FdO2Zvcih2YXIgcz1NYXRoLnNxcnQoaSksbD0wLGE9MDszPmE7KythKXJbYV0tPWVbYV0qby9pLGwrPXJbYV0qclthXSxlW2FdLz1zO2Zvcih2YXIgYz1NYXRoLnNxcnQobCksYT0wOzM+YTsrK2EpclthXS89Yzt2YXIgdT10aGlzLmNvbXB1dGVkVG93YXJkO2godSxlLHIpLGYodSx1KTtmb3IodmFyIGQ9TWF0aC5leHAodGhpcy5jb21wdXRlZFJhZGl1c1swXSkscD10aGlzLmNvbXB1dGVkQW5nbGVbMF0sZz10aGlzLmNvbXB1dGVkQW5nbGVbMV0sdj1NYXRoLmNvcyhwKSxtPU1hdGguc2luKHApLHk9TWF0aC5jb3MoZyksYj1NYXRoLnNpbihnKSx4PXRoaXMuY29tcHV0ZWRDZW50ZXIsXz12Knksdz1tKnksQT1iLGs9LXYqYixNPS1tKmIsVD15LEU9dGhpcy5jb21wdXRlZEV5ZSxMPXRoaXMuY29tcHV0ZWRNYXRyaXgsYT0wOzM+YTsrK2Epe3ZhciBTPV8qclthXSt3KnVbYV0rQSplW2FdO0xbNCphKzFdPWsqclthXStNKnVbYV0rVCplW2FdLExbNCphKzJdPVMsTFs0KmErM109MH12YXIgQz1MWzFdLFA9TFs1XSx6PUxbOV0sUj1MWzJdLE89TFs2XSxJPUxbMTBdLE49UCpJLXoqTyxqPXoqUi1DKkksRj1DKk8tUCpSLEQ9bihOLGosRik7Ti89RCxqLz1ELEYvPUQsTFswXT1OLExbNF09aixMWzhdPUY7Zm9yKHZhciBhPTA7Mz5hOysrYSlFW2FdPXhbYV0rTFsyKzQqYV0qZDtmb3IodmFyIGE9MDszPmE7KythKXtmb3IodmFyIGw9MCxCPTA7Mz5COysrQilsKz1MW2ErNCpCXSpFW0JdO0xbMTIrYV09LWx9TFsxNV09MX0scC5nZXRNYXRyaXg9ZnVuY3Rpb24odCxlKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgcj10aGlzLmNvbXB1dGVkTWF0cml4O2lmKGUpe2Zvcih2YXIgbj0wOzE2Pm47KytuKWVbbl09cltuXTtyZXR1cm4gZX1yZXR1cm4gcn07dmFyIGc9WzAsMCwwXTtwLnJvdGF0ZT1mdW5jdGlvbih0LGUscixuKXtpZih0aGlzLmFuZ2xlLm1vdmUodCxlLHIpLG4pe3RoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBpPXRoaXMuY29tcHV0ZWRNYXRyaXg7Z1swXT1pWzJdLGdbMV09aVs2XSxnWzJdPWlbMTBdO2Zvcih2YXIgbz10aGlzLmNvbXB1dGVkVXAsYT10aGlzLmNvbXB1dGVkUmlnaHQscz10aGlzLmNvbXB1dGVkVG93YXJkLGw9MDszPmw7KytsKWlbNCpsXT1vW2xdLGlbNCpsKzFdPWFbbF0saVs0KmwrMl09c1tsXTt1KGksaSxuLGcpO2Zvcih2YXIgbD0wOzM+bDsrK2wpb1tsXT1pWzQqbF0sYVtsXT1pWzQqbCsxXTt0aGlzLnVwLnNldCh0LG9bMF0sb1sxXSxvWzJdKSx0aGlzLnJpZ2h0LnNldCh0LGFbMF0sYVsxXSxhWzJdKX19LHAucGFuPWZ1bmN0aW9uKHQsZSxyLGkpe2U9ZXx8MCxyPXJ8fDAsaT1pfHwwLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBvPXRoaXMuY29tcHV0ZWRNYXRyaXgsYT0oTWF0aC5leHAodGhpcy5jb21wdXRlZFJhZGl1c1swXSksb1sxXSkscz1vWzVdLGw9b1s5XSxjPW4oYSxzLGwpO2EvPWMscy89YyxsLz1jO3ZhciB1PW9bMF0saD1vWzRdLGY9b1s4XSxkPXUqYStoKnMrZipsO3UtPWEqZCxoLT1zKmQsZi09bCpkO3ZhciBwPW4odSxoLGYpO3UvPXAsaC89cCxmLz1wO3ZhciBnPXUqZSthKnIsdj1oKmUrcypyLG09ZiplK2wqcjt0aGlzLmNlbnRlci5tb3ZlKHQsZyx2LG0pO3ZhciB5PU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO3k9TWF0aC5tYXgoMWUtNCx5K2kpLHRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKHkpKX0scC50cmFuc2xhdGU9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5jZW50ZXIubW92ZSh0LGV8fDAscnx8MCxufHwwKX0scC5zZXRNYXRyaXg9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIGE9MTsibnVtYmVyIj09dHlwZW9mIHImJihhPTB8ciksKDA+YXx8YT4zKSYmKGE9MSk7dmFyIHM9KGErMiklMztlfHwodGhpcy5yZWNhbGNNYXRyaXgodCksZT10aGlzLmNvbXB1dGVkTWF0cml4KTt2YXIgbD1lW2FdLHU9ZVthKzRdLGg9ZVthKzhdO2lmKG8pe3ZhciBmPU1hdGguYWJzKGwpLGQ9TWF0aC5hYnModSkscD1NYXRoLmFicyhoKSxnPU1hdGgubWF4KGYsZCxwKTtmPT09Zz8obD0wPmw/LTE6MSx1PWg9MCk6cD09PWc/KGg9MD5oPy0xOjEsbD11PTApOih1PTA+dT8tMToxLGw9aD0wKX1lbHNle3ZhciB2PW4obCx1LGgpO2wvPXYsdS89dixoLz12fXZhciBtPWVbc10seT1lW3MrNF0sYj1lW3MrOF0seD1tKmwreSp1K2IqaDttLT1sKngseS09dSp4LGItPWgqeDt2YXIgXz1uKG0seSxiKTttLz1fLHkvPV8sYi89Xzt2YXIgdz11KmItaCp5LEE9aCptLWwqYixrPWwqeS11Km0sTT1uKHcsQSxrKTt3Lz1NLEEvPU0say89TSx0aGlzLmNlbnRlci5qdW1wKHQsSCxHLFkpLHRoaXMucmFkaXVzLmlkbGUodCksdGhpcy51cC5qdW1wKHQsbCx1LGgpLHRoaXMucmlnaHQuanVtcCh0LG0seSxiKTt2YXIgVCxFO2lmKDI9PT1hKXt2YXIgTD1lWzFdLFM9ZVs1XSxDPWVbOV0sUD1MKm0rUyp5K0MqYix6PUwqdytTKkErQyprO1Q9MD5OPy1NYXRoLlBJLzI6TWF0aC5QSS8yLEU9TWF0aC5hdGFuMih6LFApfWVsc2V7dmFyIFI9ZVsyXSxPPWVbNl0sST1lWzEwXSxOPVIqbCtPKnUrSSpoLGo9UiptK08qeStJKmIsRj1SKncrTypBK0kqaztUPU1hdGguYXNpbihpKE4pKSxFPU1hdGguYXRhbjIoRixqKX10aGlzLmFuZ2xlLmp1bXAodCxFLFQpLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBEPWVbMl0sQj1lWzZdLFU9ZVsxMF0sVj10aGlzLmNvbXB1dGVkTWF0cml4O2MoVixlKTt2YXIgcT1WWzE1XSxIPVZbMTJdL3EsRz1WWzEzXS9xLFk9VlsxNF0vcSxYPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO3RoaXMuY2VudGVyLmp1bXAodCxILUQqWCxHLUIqWCxZLVUqWCl9LHAubGFzdFQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5jZW50ZXIubGFzdFQoKSx0aGlzLnVwLmxhc3RUKCksdGhpcy5yaWdodC5sYXN0VCgpLHRoaXMucmFkaXVzLmxhc3RUKCksdGhpcy5hbmdsZS5sYXN0VCgpKX0scC5pZGxlPWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmlkbGUodCksdGhpcy51cC5pZGxlKHQpLHRoaXMucmlnaHQuaWRsZSh0KSx0aGlzLnJhZGl1cy5pZGxlKHQpLHRoaXMuYW5nbGUuaWRsZSh0KX0scC5mbHVzaD1mdW5jdGlvbih0KXt0aGlzLmNlbnRlci5mbHVzaCh0KSx0aGlzLnVwLmZsdXNoKHQpLHRoaXMucmlnaHQuZmx1c2godCksdGhpcy5yYWRpdXMuZmx1c2godCksdGhpcy5hbmdsZS5mbHVzaCh0KX0scC5zZXREaXN0YW5jZT1mdW5jdGlvbih0LGUpe2U+MCYmdGhpcy5yYWRpdXMuc2V0KHQsTWF0aC5sb2coZSkpfSxwLmxvb2tBdD1mdW5jdGlvbih0LGUscixvKXt0aGlzLnJlY2FsY01hdHJpeCh0KSxlPWV8fHRoaXMuY29tcHV0ZWRFeWUscj1yfHx0aGlzLmNvbXB1dGVkQ2VudGVyLG89b3x8dGhpcy5jb21wdXRlZFVwO3ZhciBhPW9bMF0scz1vWzFdLGw9b1syXSxjPW4oYSxzLGwpO2lmKCEoMWUtNj5jKSl7YS89YyxzLz1jLGwvPWM7dmFyIHU9ZVswXS1yWzBdLGg9ZVsxXS1yWzFdLGY9ZVsyXS1yWzJdLGQ9bih1LGgsZik7aWYoISgxZS02PmQpKXt1Lz1kLGgvPWQsZi89ZDt2YXIgcD10aGlzLmNvbXB1dGVkUmlnaHQsZz1wWzBdLHY9cFsxXSxtPXBbMl0seT1hKmcrcyp2K2wqbTtnLT15KmEsdi09eSpzLG0tPXkqbDt2YXIgYj1uKGcsdixtKTtpZighKC4wMT5iJiYoZz1zKmYtbCpoLHY9bCp1LWEqZixtPWEqaC1zKnUsYj1uKGcsdixtKSwxZS02PmIpKSl7Zy89Yix2Lz1iLG0vPWIsdGhpcy51cC5zZXQodCxhLHMsbCksdGhpcy5yaWdodC5zZXQodCxnLHYsbSksdGhpcy5jZW50ZXIuc2V0KHQsclswXSxyWzFdLHJbMl0pLHRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKGQpKTt2YXIgeD1zKm0tbCp2LF89bCpnLWEqbSx3PWEqdi1zKmcsQT1uKHgsXyx3KTt4Lz1BLF8vPUEsdy89QTt2YXIgaz1hKnUrcypoK2wqZixNPWcqdSt2KmgrbSpmLFQ9eCp1K18qaCt3KmYsRT1NYXRoLmFzaW4oaShrKSksTD1NYXRoLmF0YW4yKFQsTSksUz10aGlzLmFuZ2xlLl9zdGF0ZSxDPVNbUy5sZW5ndGgtMV0sUD1TW1MubGVuZ3RoLTJdO0MlPTIqTWF0aC5QSTt2YXIgej1NYXRoLmFicyhDKzIqTWF0aC5QSS1MKSxSPU1hdGguYWJzKEMtTCksTz1NYXRoLmFicyhDLTIqTWF0aC5QSS1MKTtSPnomJihDKz0yKk1hdGguUEkpLFI+TyYmKEMtPTIqTWF0aC5QSSksdGhpcy5hbmdsZS5qdW1wKHRoaXMuYW5nbGUubGFzdFQoKSxDLFApLHRoaXMuYW5nbGUuc2V0KHQsTCxFKX19fX19LHsiZmlsdGVyZWQtdmVjdG9yIjoxOSwiZ2wtbWF0NC9pbnZlcnQiOjk0LCJnbC1tYXQ0L3JvdGF0ZSI6OTgsImdsLXZlYzMvY3Jvc3MiOjIyLCJnbC12ZWMzL2RvdCI6MjMsImdsLXZlYzMvbm9ybWFsaXplIjoyNn1dLDM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt0aGlzLl9jb250cm9sbGVyTmFtZXM9T2JqZWN0LmtleXModCksdGhpcy5fY29udHJvbGxlckxpc3Q9dGhpcy5fY29udHJvbGxlck5hbWVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLHRoaXMuX21vZGU9ZSx0aGlzLl9hY3RpdmU9dFtlXSx0aGlzLl9hY3RpdmV8fCh0aGlzLl9tb2RlPSJ0dXJudGFibGUiLHRoaXMuX2FjdGl2ZT10LnR1cm50YWJsZSksdGhpcy5tb2Rlcz10aGlzLl9jb250cm9sbGVyTmFtZXMsdGhpcy5jb21wdXRlZE1hdHJpeD10aGlzLl9hY3RpdmUuY29tcHV0ZWRNYXRyaXgsdGhpcy5jb21wdXRlZEV5ZT10aGlzLl9hY3RpdmUuY29tcHV0ZWRFeWUsdGhpcy5jb21wdXRlZFVwPXRoaXMuX2FjdGl2ZS5jb21wdXRlZFVwLHRoaXMuY29tcHV0ZWRDZW50ZXI9dGhpcy5fYWN0aXZlLmNvbXB1dGVkQ2VudGVyLHRoaXMuY29tcHV0ZWRSYWRpdXM9dGhpcy5fYWN0aXZlLmNvbXB1dGVkUmFkaXVzfWZ1bmN0aW9uIGkodCl7dD10fHx7fTt2YXIgZT10LmV5ZXx8WzAsMCwxXSxyPXQuY2VudGVyfHxbMCwwLDBdLGk9dC51cHx8WzAsMSwwXSxsPXQuZGlzdGFuY2VMaW1pdHN8fFswLDEvMF0sYz10Lm1vZGV8fCJ0dXJudGFibGUiLHU9bygpLGg9YSgpLGY9cygpO3JldHVybiB1LnNldERpc3RhbmNlTGltaXRzKGxbMF0sbFsxXSksdS5sb29rQXQoMCxlLHIsaSksaC5zZXREaXN0YW5jZUxpbWl0cyhsWzBdLGxbMV0pLGgubG9va0F0KDAsZSxyLGkpLGYuc2V0RGlzdGFuY2VMaW1pdHMobFswXSxsWzFdKSxmLmxvb2tBdCgwLGUscixpKSxuZXcgbih7dHVybnRhYmxlOnUsb3JiaXQ6aCxtYXRyaXg6Zn0sYyl9ZS5leHBvcnRzPWk7dmFyIG89dCgidHVybnRhYmxlLWNhbWVyYS1jb250cm9sbGVyIiksYT10KCJvcmJpdC1jYW1lcmEtY29udHJvbGxlciIpLHM9dCgibWF0cml4LWNhbWVyYS1jb250cm9sbGVyIiksbD1uLnByb3RvdHlwZSxjPVtbImZsdXNoIiwxXSxbImlkbGUiLDFdLFsibG9va0F0Iiw0XSxbInJvdGF0ZSIsNF0sWyJwYW4iLDRdLFsidHJhbnNsYXRlIiw0XSxbInNldE1hdHJpeCIsMl0sWyJzZXREaXN0YW5jZUxpbWl0cyIsMl0sWyJzZXREaXN0YW5jZSIsMl1dO2MuZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIGU9dFswXSxyPVtdLG49MDtuPHRbMV07KytuKXIucHVzaCgiYSIrbik7dmFyIGk9InZhciBjYz10aGlzLl9jb250cm9sbGVyTGlzdDtmb3IodmFyIGk9MDtpPGNjLmxlbmd0aDsrK2kpe2NjW2ldLiIrdFswXSsiKCIrci5qb2luKCkrIil9IjtsW2VdPUZ1bmN0aW9uLmFwcGx5KG51bGwsci5jb25jYXQoaSkpfSksbC5yZWNhbGNNYXRyaXg9ZnVuY3Rpb24odCl7dGhpcy5fYWN0aXZlLnJlY2FsY01hdHJpeCh0KX0sbC5nZXREaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWN0aXZlLmdldERpc3RhbmNlKHQpfSxsLmdldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hY3RpdmUuZ2V0RGlzdGFuY2VMaW1pdHModCl9LGwubGFzdFQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWN0aXZlLmxhc3RUKCl9LGwuc2V0TW9kZT1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5fbW9kZSl7dmFyIGU9dGhpcy5fY29udHJvbGxlck5hbWVzLmluZGV4T2YodCk7aWYoISgwPmUpKXt2YXIgcj10aGlzLl9hY3RpdmUsbj10aGlzLl9jb250cm9sbGVyTGlzdFtlXSxpPU1hdGgubWF4KHIubGFzdFQoKSxuLmxhc3RUKCkpO3IucmVjYWxjTWF0cml4KGkpLG4uc2V0TWF0cml4KGksci5jb21wdXRlZE1hdHJpeCksdGhpcy5fYWN0aXZlPW4sdGhpcy5fbW9kZT10LHRoaXMuY29tcHV0ZWRNYXRyaXg9dGhpcy5fYWN0aXZlLmNvbXB1dGVkTWF0cml4LHRoaXMuY29tcHV0ZWRFeWU9dGhpcy5fYWN0aXZlLmNvbXB1dGVkRXllLHRoaXMuY29tcHV0ZWRVcD10aGlzLl9hY3RpdmUuY29tcHV0ZWRVcCx0aGlzLmNvbXB1dGVkQ2VudGVyPXRoaXMuX2FjdGl2ZS5jb21wdXRlZENlbnRlcix0aGlzLmNvbXB1dGVkUmFkaXVzPXRoaXMuX2FjdGl2ZS5jb21wdXRlZFJhZGl1c319fSxsLmdldE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9kZX19LHsibWF0cml4LWNhbWVyYS1jb250cm9sbGVyIjoyNywib3JiaXQtY2FtZXJhLWNvbnRyb2xsZXIiOjM2LCJ0dXJudGFibGUtY2FtZXJhLWNvbnRyb2xsZXIiOjM3fV0sMzk6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIG8oaSh0LGUpKX1lLmV4cG9ydHM9bjt2YXIgaT10KCJhbHBoYS1jb21wbGV4Iiksbz10KCJzaW1wbGljaWFsLWNvbXBsZXgtYm91bmRhcnkiKX0seyJhbHBoYS1jb21wbGV4Ijo0MCwic2ltcGxpY2lhbC1jb21wbGV4LWJvdW5kYXJ5Ijo0M31dLDQwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gaShlKS5maWx0ZXIoZnVuY3Rpb24ocil7Zm9yKHZhciBuPW5ldyBBcnJheShyLmxlbmd0aCksaT0wO2k8ci5sZW5ndGg7KytpKW5baV09ZVtyW2ldXTtyZXR1cm4gbyhuKSp0PDF9KX1lLmV4cG9ydHM9bjt2YXIgaT10KCJkZWxhdW5heS10cmlhbmd1bGF0ZSIpLG89dCgiY2lyY3VtcmFkaXVzIil9LHtjaXJjdW1yYWRpdXM6NDEsImRlbGF1bmF5LXRyaWFuZ3VsYXRlIjo3MX1dLDQxOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9aSh0KSxyPTAsbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgbz10W25dLGE9MDthPGUubGVuZ3RoOysrYSlyKz1NYXRoLnBvdyhvW2FdLWVbYV0sMik7cmV0dXJuIE1hdGguc3FydChyL3QubGVuZ3RoKX1lLmV4cG9ydHM9bjt2YXIgaT10KCJjaXJjdW1jZW50ZXIiKX0se2NpcmN1bWNlbnRlcjo0Mn1dLDQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9MDtuPmk7KytpKXIrPXRbaV0qZVtpXTtyZXR1cm4gcn1mdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO2lmKDA9PT1lKXJldHVybltdO3ZhciByPSh0WzBdLmxlbmd0aCxhKFt0Lmxlbmd0aCsxLHQubGVuZ3RoKzFdLDEpKSxpPWEoW3QubGVuZ3RoKzFdLDEpO3JbZV1bZV09MDtmb3IodmFyIG89MDtlPm87KytvKXtmb3IodmFyIGw9MDtvPj1sOysrbClyW2xdW29dPXJbb11bbF09MipuKHRbb10sdFtsXSk7aVtvXT1uKHRbb10sdFtvXSl9Zm9yKHZhciBjPXMocixpKSx1PTAsaD1jW2UrMV0sbz0wO288aC5sZW5ndGg7KytvKXUrPWhbb107Zm9yKHZhciBmPW5ldyBBcnJheShlKSxvPTA7ZT5vOysrbyl7Zm9yKHZhciBoPWNbb10sZD0wLGw9MDtsPGgubGVuZ3RoOysrbClkKz1oW2xdO2Zbb109ZC91fXJldHVybiBmfWZ1bmN0aW9uIG8odCl7aWYoMD09PXQubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgZT10WzBdLmxlbmd0aCxyPWEoW2VdKSxuPWkodCksbz0wO288dC5sZW5ndGg7KytvKWZvcih2YXIgcz0wO2U+czsrK3MpcltzXSs9dFtvXVtzXSpuW29dO3JldHVybiByfXZhciBhPXQoImR1cCIpLHM9dCgicm9idXN0LWxpbmVhci1zb2x2ZSIpO28uYmFyeWNlbmV0cmljPWksZS5leHBvcnRzPW99LHtkdXA6NzIsInJvYnVzdC1saW5lYXItc29sdmUiOjIxM31dLDQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIG8oaSh0KSl9ZS5leHBvcnRzPW47dmFyIGk9dCgiYm91bmRhcnktY2VsbHMiKSxvPXQoInJlZHVjZS1zaW1wbGljaWFsLWNvbXBsZXgiKX0seyJib3VuZGFyeS1jZWxscyI6NDQsInJlZHVjZS1zaW1wbGljaWFsLWNvbXBsZXgiOjQ3fV0sNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0wLG49MDtlPm47KytuKXIrPXRbbl0ubGVuZ3RoO2Zvcih2YXIgaT1uZXcgQXJyYXkociksbz0wLG49MDtlPm47KytuKWZvcih2YXIgYT10W25dLHM9YS5sZW5ndGgsbD0wO3M+bDsrK2wpZm9yKHZhciBjPWlbbysrXT1uZXcgQXJyYXkocy0xKSx1PTE7cz51OysrdSljW3UtMV09YVsobCt1KSVzXTtyZXR1cm4gaX1lLmV4cG9ydHM9bn0se31dLDQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBlPTEscj0xO3I8dC5sZW5ndGg7KytyKWZvcih2YXIgbj0wO3I+bjsrK24paWYodFtyXTx0W25dKWU9LWU7ZWxzZSBpZih0W25dPT09dFtyXSlyZXR1cm4gMDtyZXR1cm4gZX1lLmV4cG9ydHM9bn0se31dLDQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gaSh0LGUpfHxvKHQpLW8oZSl9dmFyIGk9dCgiY29tcGFyZS1jZWxsIiksbz10KCJjZWxsLW9yaWVudGF0aW9uIik7ZS5leHBvcnRzPW59LHsiY2VsbC1vcmllbnRhdGlvbiI6NDUsImNvbXBhcmUtY2VsbCI6NTl9XSw0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3Quc29ydChvKTtmb3IodmFyIGU9dC5sZW5ndGgscj0wLG49MDtlPm47KytuKXt2YXIgcz10W25dLGw9YShzKTtpZigwIT09bCl7aWYocj4wKXt2YXIgYz10W3ItMV07aWYoMD09PWkocyxjKSYmYShjKSE9PWwpe3ItPTE7Y29udGludWV9fXRbcisrXT1zfX1yZXR1cm4gdC5sZW5ndGg9cix0fXZhciBpPXQoImNvbXBhcmUtY2VsbCIpLG89dCgiY29tcGFyZS1vcmllbnRlZC1jZWxsIiksYT10KCJjZWxsLW9yaWVudGF0aW9uIik7ZS5leHBvcnRzPW59LHsiY2VsbC1vcmllbnRhdGlvbiI6NDUsImNvbXBhcmUtY2VsbCI6NTksImNvbXBhcmUtb3JpZW50ZWQtY2VsbCI6NDZ9XSw0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIUFycmF5LmlzQXJyYXkodCkmJm51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gZSh0LGUscil7Zm9yKHZhciBuPShlLXQpL01hdGgubWF4KHItMSwxKSxpPVtdLG89MDtyPm87bysrKWkucHVzaCh0K28qbik7cmV0dXJuIGl9ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksZT10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSxyPU1hdGgubWluLmFwcGx5KG51bGwsZSksbj1bXSxpPTA7cj5pO2krKyl7bltpXT1bXTtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbyluW2ldW29dPXRbb11baV19cmV0dXJuIG59ZnVuY3Rpb24gbih0LGUscil7Zm9yKHZhciBuPU1hdGgubWluLmFwcGx5KG51bGwsW3QubGVuZ3RoLGUubGVuZ3RoLHIubGVuZ3RoXSksaT1bXSxvPTA7bj5vO28rKylpLnB1c2goW3Rbb10sZVtvXSxyW29dXSk7cmV0dXJuIGl9ZnVuY3Rpb24gaSh0KXtmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKUFycmF5LmlzQXJyYXkodFtuXSk/ZSh0W25dLHIpOnIrPXRbbl19dmFyIHI9MDtyZXR1cm4gZSh0LHIpLHJ9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7KytyKXtlW3JdPVtdO2Zvcih2YXIgbj0wO248dFtyXS5sZW5ndGg7KytuKWVbcl1bbl09dFtyXVtuXX1yZXR1cm4gZX1mdW5jdGlvbiBhKHQpe2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZVtyXT10W3JdO3JldHVybiBlfWZ1bmN0aW9uIHModCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgcj10Lmxlbmd0aDtyLS07KWlmKHRbcl0hPT1lW3JdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGwodCxlKXt2YXIgcixuO2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDtpZihyPVtdLCIjIj09PXRbMF0/KHQ9dC5zdWJzdHIoMSksMz09PXQubGVuZ3RoJiYodCs9dCksbj1wYXJzZUludCh0LDE2KSxyWzBdPW4+PjE2JjI1NSxyWzFdPW4+PjgmMjU1LHJbMl09MjU1Jm4pOmgudGVzdCh0KSYmKG49dC5tYXRjaChmKSxyWzBdPXBhcnNlSW50KG5bMV0pLHJbMV09cGFyc2VJbnQoblsyXSksclsyXT1wYXJzZUludChuWzNdKSksIWUpZm9yKHZhciBpPTA7Mz5pOysraSlyW2ldPXJbaV0vMjU1O3JldHVybiByfWZ1bmN0aW9uIGModCxlKXt2YXIgcixuO2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDtpZihyPVtdLCIjIj09PXRbMF0/KHQ9dC5zdWJzdHIoMSksMz09PXQubGVuZ3RoJiYodCs9dCksbj1wYXJzZUludCh0LDE2KSxyWzBdPW4+PjE2JjI1NSxyWzFdPW4+PjgmMjU1LHJbMl09MjU1Jm4pOmgudGVzdCh0KSYmKG49dC5tYXRjaChmKSxyWzBdPXBhcnNlSW50KG5bMV0pLHJbMV09cGFyc2VJbnQoblsyXSksclsyXT1wYXJzZUludChuWzNdKSxuWzRdP3JbM109cGFyc2VGbG9hdChuWzRdKTpyWzNdPTEpLCFlKWZvcih2YXIgaT0wOzM+aTsrK2kpcltpXT1yW2ldLzI1NTtyZXR1cm4gcn12YXIgdT17fSxoPS9ecmdiYT9cKFxzKlxkezEsM31ccyosXHMqXGR7MSwzfVxzKixccypcZHsxLDN9XHMqKCwuKik/XCkkLyxmPS9ecmdiYT9cKFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqLD9ccyooLiopP1wpJC87cmV0dXJuIHUuaXNQbGFpbk9iamVjdD10LHUubGluc3BhY2U9ZSx1LnppcDM9bix1LnN1bT1pLHUuemlwPXIsdS5pc0VxdWFsPXMsdS5jb3B5MkQ9byx1LmNvcHkxRD1hLHUuc3RyMlJnYkFycmF5PWwsdS5zdHIyUmdiYUFycmF5PWMsdX07ZS5leHBvcnRzPW4oKX0se31dLDQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiOyJ1c2UgcmVzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9MzI7cmV0dXJuIHQmPS10LHQmJmUtLSw2NTUzNSZ0JiYoZS09MTYpLDE2NzExOTM1JnQmJihlLT04KSwyNTI2NDUxMzUmdCYmKGUtPTQpLDg1ODk5MzQ1OSZ0JiYoZS09MiksMTQzMTY1NTc2NSZ0JiYoZS09MSksZX12YXIgaT0zMjtyLklOVF9CSVRTPWksci5JTlRfTUFYPTIxNDc0ODM2NDcsci5JTlRfTUlOPS0xPDxpLTEsci5zaWduPWZ1bmN0aW9uKHQpe3JldHVybih0PjApLSgwPnQpfSxyLmFicz1mdW5jdGlvbih0KXt2YXIgZT10Pj5pLTE7cmV0dXJuKHReZSktZX0sci5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gZV4odF5lKSYtKGU+dCl9LHIubWF4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHReKHReZSkmLShlPnQpfSxyLmlzUG93Mj1mdW5jdGlvbih0KXtyZXR1cm4hKHQmdC0xfHwhdCl9LHIubG9nMj1mdW5jdGlvbih0KXt2YXIgZSxyO3JldHVybiBlPSh0PjY1NTM1KTw8NCx0Pj4+PWUscj0odD4yNTUpPDwzLHQ+Pj49cixlfD1yLHI9KHQ+MTUpPDwyLHQ+Pj49cixlfD1yLHI9KHQ+Myk8PDEsdD4+Pj1yLGV8PXIsZXx0Pj4xfSxyLmxvZzEwPWZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xZTk/OTp0Pj0xZTg/ODp0Pj0xZTc/Nzp0Pj0xZTY/Njp0Pj0xZTU/NTp0Pj0xZTQ/NDp0Pj0xZTM/Mzp0Pj0xMDA/Mjp0Pj0xMD8xOjB9LHIucG9wQ291bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQtPXQ+Pj4xJjE0MzE2NTU3NjUsdD0oODU4OTkzNDU5JnQpKyh0Pj4+MiY4NTg5OTM0NTkpLDE2ODQzMDA5Kih0Kyh0Pj4+NCkmMjUyNjQ1MTM1KT4+PjI0fSxyLmNvdW50VHJhaWxpbmdaZXJvcz1uLHIubmV4dFBvdzI9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPTA9PT10LC0tdCx0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCx0fD10Pj4+MTYsdCsxfSxyLnByZXZQb3cyPWZ1bmN0aW9uKHQpe3JldHVybiB0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCx0fD10Pj4+MTYsdC0odD4+PjEpfSxyLnBhcml0eT1mdW5jdGlvbih0KXtyZXR1cm4gdF49dD4+PjE2LHRePXQ+Pj44LHRePXQ+Pj40LHQmPTE1LDI3MDMwPj4+dCYxfTt2YXIgbz1uZXcgQXJyYXkoMjU2KTshZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7MjU2PmU7KytlKXt2YXIgcj1lLG49ZSxpPTc7Zm9yKHI+Pj49MTtyO3I+Pj49MSluPDw9MSxufD0xJnIsLS1pO3RbZV09bjw8aSYyNTV9fShvKSxyLnJldmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIG9bMjU1JnRdPDwyNHxvW3Q+Pj44JjI1NV08PDE2fG9bdD4+PjE2JjI1NV08PDh8b1t0Pj4+MjQmMjU1XX0sci5pbnRlcmxlYXZlMj1mdW5jdGlvbih0LGUpe3JldHVybiB0Jj02NTUzNSx0PTE2NzExOTM1Jih0fHQ8PDgpLHQ9MjUyNjQ1MTM1Jih0fHQ8PDQpLHQ9ODU4OTkzNDU5Jih0fHQ8PDIpLHQ9MTQzMTY1NTc2NSYodHx0PDwxKSxlJj02NTUzNSxlPTE2NzExOTM1JihlfGU8PDgpLGU9MjUyNjQ1MTM1JihlfGU8PDQpLGU9ODU4OTkzNDU5JihlfGU8PDIpLGU9MTQzMTY1NTc2NSYoZXxlPDwxKSx0fGU8PDF9LHIuZGVpbnRlcmxlYXZlMj1mdW5jdGlvbih0LGUpe3JldHVybiB0PXQ+Pj5lJjE0MzE2NTU3NjUsdD04NTg5OTM0NTkmKHR8dD4+PjEpLHQ9MjUyNjQ1MTM1Jih0fHQ+Pj4yKSx0PTE2NzExOTM1Jih0fHQ+Pj40KSx0PTY1NTM1Jih0fHQ+Pj4xNiksdDw8MTY+PjE2fSxyLmludGVybGVhdmUzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdCY9MTAyMyx0PTQyNzgxOTAzMzUmKHR8dDw8MTYpLHQ9MjUxNzE5Njk1Jih0fHQ8PDgpLHQ9MzI3MjM1NjAzNSYodHx0PDw0KSx0PTEyMjcxMzM1MTMmKHR8dDw8MiksZSY9MTAyMyxlPTQyNzgxOTAzMzUmKGV8ZTw8MTYpLGU9MjUxNzE5Njk1JihlfGU8PDgpLGU9MzI3MjM1NjAzNSYoZXxlPDw0KSxlPTEyMjcxMzM1MTMmKGV8ZTw8MiksdHw9ZTw8MSxyJj0xMDIzLHI9NDI3ODE5MDMzNSYocnxyPDwxNikscj0yNTE3MTk2OTUmKHJ8cjw8OCkscj0zMjcyMzU2MDM1JihyfHI8PDQpLHI9MTIyNzEzMzUxMyYocnxyPDwyKSx0fHI8PDJ9LHIuZGVpbnRlcmxlYXZlMz1mdW5jdGlvbih0LGUpe3JldHVybiB0PXQ+Pj5lJjEyMjcxMzM1MTMsdD0zMjcyMzU2MDM1Jih0fHQ+Pj4yKSx0PTI1MTcxOTY5NSYodHx0Pj4+NCksdD00Mjc4MTkwMzM1Jih0fHQ+Pj44KSx0PTEwMjMmKHR8dD4+PjE2KSx0PDwyMj4+MjJ9LHIubmV4dENvbWJpbmF0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXR8dC0xO3JldHVybiBlKzF8KH5lJi1+ZSktMT4+Pm4odCkrMX19LHt9XSw1MDpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3RyeXt2YXIgdD1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gdC5mb289ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9LDQyPT09dC5mb28oKSYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc3ViYXJyYXkmJjA9PT10LnN1YmFycmF5KDEsMSkuYnl0ZUxlbmd0aH1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gaSgpe3JldHVybiBvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBvPyhvLlRZUEVEX0FSUkFZX1NVUFBPUlR8fCh0aGlzLmxlbmd0aD0wLHRoaXMucGFyZW50PXZvaWQgMCksIm51bWJlciI9PXR5cGVvZiB0P2EodGhpcyx0KToic3RyaW5nIj09dHlwZW9mIHQ/cyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXToidXRmOCIpOmwodGhpcyx0KSk6YXJndW1lbnRzLmxlbmd0aD4xP25ldyBvKHQsYXJndW1lbnRzWzFdKTpuZXcgbyh0KX1mdW5jdGlvbiBhKHQsZSl7aWYodD1nKHQsMD5lPzA6MHx2KGUpKSwhby5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO2U+cjtyKyspdFtyXT0wO3JldHVybiB0fWZ1bmN0aW9uIHModCxlLHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO3ZhciBuPTB8eShlLHIpO3JldHVybiB0PWcodCxuKSx0LndyaXRlKGUsciksdH1mdW5jdGlvbiBsKHQsZSl7aWYoby5pc0J1ZmZlcihlKSlyZXR1cm4gYyh0LGUpO2lmKCQoZSkpcmV0dXJuIHUodCxlKTtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIm11c3Qgc3RhcnQgd2l0aCBudW1iZXIsIGJ1ZmZlciwgYXJyYXkgb3Igc3RyaW5nIik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlcil7aWYoZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gaCh0LGUpO2lmKGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gZih0LGUpfXJldHVybiBlLmxlbmd0aD9kKHQsZSk6cCh0LGUpfWZ1bmN0aW9uIGModCxlKXt2YXIgcj0wfHYoZS5sZW5ndGgpO3JldHVybiB0PWcodCxyKSxlLmNvcHkodCwwLDAsciksdH1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9MHx2KGUubGVuZ3RoKTt0PWcodCxyKTtmb3IodmFyIG49MDtyPm47bis9MSl0W25dPTI1NSZlW25dO3JldHVybiB0fWZ1bmN0aW9uIGgodCxlKXt2YXIgcj0wfHYoZS5sZW5ndGgpO3Q9Zyh0LHIpO2Zvcih2YXIgbj0wO3I+bjtuKz0xKXRbbl09MjU1JmVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gZih0LGUpe3JldHVybiBlLmJ5dGVMZW5ndGgsby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0PW5ldyBVaW50OEFycmF5KGUpLHQuX19wcm90b19fPW8ucHJvdG90eXBlKTp0PWgodCxuZXcgVWludDhBcnJheShlKSksdH1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9MHx2KGUubGVuZ3RoKTt0PWcodCxyKTtmb3IodmFyIG49MDtyPm47bis9MSl0W25dPTI1NSZlW25dO3JldHVybiB0fWZ1bmN0aW9uIHAodCxlKXt2YXIgcixuPTA7IkJ1ZmZlciI9PT1lLnR5cGUmJiQoZS5kYXRhKSYmKHI9ZS5kYXRhLG49MHx2KHIubGVuZ3RoKSksdD1nKHQsbik7Zm9yKHZhciBpPTA7bj5pO2krPTEpdFtpXT0yNTUmcltpXTtyZXR1cm4gdH1mdW5jdGlvbiBnKHQsZSl7by5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0PW5ldyBVaW50OEFycmF5KGUpLHQuX19wcm90b19fPW8ucHJvdG90eXBlKTp0Lmxlbmd0aD1lO3ZhciByPTAhPT1lJiZlPD1vLnBvb2xTaXplPj4+MTtyZXR1cm4gciYmKHQucGFyZW50PUspLHR9ZnVuY3Rpb24gdih0KXtpZih0Pj1pKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK2koKS50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfHR9ZnVuY3Rpb24gbSh0LGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG0pKXJldHVybiBuZXcgbSh0LGUpO3ZhciByPW5ldyBvKHQsZSk7cmV0dXJuIGRlbGV0ZSByLnBhcmVudCxyfWZ1bmN0aW9uIHkodCxlKXsic3RyaW5nIiE9dHlwZW9mIHQmJih0PSIiK3QpO3ZhciByPXQubGVuZ3RoO2lmKDA9PT1yKXJldHVybiAwO2Zvcih2YXIgbj0hMTs7KXN3aXRjaChlKXtjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJyYXciOmNhc2UicmF3cyI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gcSh0KS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIFkodCkubGVuZ3RoO2RlZmF1bHQ6aWYobilyZXR1cm4gcSh0KS5sZW5ndGg7ZT0oIiIrZSkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBiKHQsZSxyKXt2YXIgbj0hMTtpZihlPTB8ZSxyPXZvaWQgMD09PXJ8fHI9PT0xLzA/dGhpcy5sZW5ndGg6MHxyLHR8fCh0PSJ1dGY4IiksMD5lJiYoZT0wKSxyPnRoaXMubGVuZ3RoJiYocj10aGlzLmxlbmd0aCksZT49cilyZXR1cm4iIjtmb3IoOzspc3dpdGNoKHQpe2Nhc2UiaGV4IjpyZXR1cm4gUCh0aGlzLGUscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gRSh0aGlzLGUscik7Y2FzZSJhc2NpaSI6cmV0dXJuIFModGhpcyxlLHIpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gQyh0aGlzLGUscik7Y2FzZSJiYXNlNjQiOnJldHVybiBUKHRoaXMsZSxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIHoodGhpcyxlLHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3QpO3Q9KHQrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24geCh0LGUscixuKXtyPU51bWJlcihyKXx8MDt2YXIgaT10Lmxlbmd0aC1yO24/KG49TnVtYmVyKG4pLG4+aSYmKG49aSkpOm49aTt2YXIgbz1lLmxlbmd0aDtpZihvJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5vLzImJihuPW8vMik7Zm9yKHZhciBhPTA7bj5hO2ErKyl7dmFyIHM9cGFyc2VJbnQoZS5zdWJzdHIoMiphLDIpLDE2KTtpZihpc05hTihzKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO3RbcithXT1zfXJldHVybiBhfWZ1bmN0aW9uIF8odCxlLHIsbil7cmV0dXJuIFgocShlLHQubGVuZ3RoLXIpLHQscixuKX1mdW5jdGlvbiB3KHQsZSxyLG4pe3JldHVybiBYKEgoZSksdCxyLG4pfWZ1bmN0aW9uIEEodCxlLHIsbil7cmV0dXJuIHcodCxlLHIsbil9ZnVuY3Rpb24gayh0LGUscixuKXtyZXR1cm4gWChZKGUpLHQscixuKX1mdW5jdGlvbiBNKHQsZSxyLG4pe3JldHVybiBYKEcoZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24gVCh0LGUscil7cmV0dXJuIDA9PT1lJiZyPT09dC5sZW5ndGg/Vy5mcm9tQnl0ZUFycmF5KHQpOlcuZnJvbUJ5dGVBcnJheSh0LnNsaWNlKGUscikpfWZ1bmN0aW9uIEUodCxlLHIpe3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBuPVtdLGk9ZTtyPmk7KXt2YXIgbz10W2ldLGE9bnVsbCxzPW8+MjM5PzQ6bz4yMjM/MzpvPjE5MT8yOjE7aWYocj49aStzKXt2YXIgbCxjLHUsaDtzd2l0Y2gocyl7Y2FzZSAxOjEyOD5vJiYoYT1vKTticmVhaztjYXNlIDI6bD10W2krMV0sMTI4PT09KDE5MiZsKSYmKGg9KDMxJm8pPDw2fDYzJmwsaD4xMjcmJihhPWgpKTticmVhaztjYXNlIDM6bD10W2krMV0sYz10W2krMl0sMTI4PT09KDE5MiZsKSYmMTI4PT09KDE5MiZjKSYmKGg9KDE1Jm8pPDwxMnwoNjMmbCk8PDZ8NjMmYyxoPjIwNDcmJig1NTI5Nj5ofHxoPjU3MzQzKSYmKGE9aCkpO2JyZWFrO2Nhc2UgNDpsPXRbaSsxXSxjPXRbaSsyXSx1PXRbaSszXSwxMjg9PT0oMTkyJmwpJiYxMjg9PT0oMTkyJmMpJiYxMjg9PT0oMTkyJnUpJiYoaD0oMTUmbyk8PDE4fCg2MyZsKTw8MTJ8KDYzJmMpPDw2fDYzJnUsaD42NTUzNSYmMTExNDExMj5oJiYoYT1oKSl9fW51bGw9PT1hPyhhPTY1NTMzLHM9MSk6YT42NTUzNSYmKGEtPTY1NTM2LG4ucHVzaChhPj4+MTAmMTAyM3w1NTI5NiksYT01NjMyMHwxMDIzJmEpLG4ucHVzaChhKSxpKz1zfXJldHVybiBMKG4pfWZ1bmN0aW9uIEwodCl7dmFyIGU9dC5sZW5ndGg7aWYoUT49ZSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdCk7Zm9yKHZhciByPSIiLG49MDtlPm47KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHQuc2xpY2UobixuKz1RKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gUyh0LGUscil7dmFyIG49IiI7cj1NYXRoLm1pbih0Lmxlbmd0aCxyKTtmb3IodmFyIGk9ZTtyPmk7aSsrKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JnRbaV0pO3JldHVybiBufWZ1bmN0aW9uIEModCxlLHIpe3ZhciBuPSIiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBpPWU7cj5pO2krKyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbaV0pO3JldHVybiBufWZ1bmN0aW9uIFAodCxlLHIpe3ZhciBuPXQubGVuZ3RoOyghZXx8MD5lKSYmKGU9MCksKCFyfHwwPnJ8fHI+bikmJihyPW4pO2Zvcih2YXIgaT0iIixvPWU7cj5vO28rKylpKz1WKHRbb10pO3JldHVybiBpfWZ1bmN0aW9uIHoodCxlLHIpe2Zvcih2YXIgbj10LnNsaWNlKGUsciksaT0iIixvPTA7bzxuLmxlbmd0aDtvKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUobltvXSsyNTYqbltvKzFdKTtyZXR1cm4gaX1mdW5jdGlvbiBSKHQsZSxyKXtpZih0JTEhPT0wfHwwPnQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKHQrZT5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gTyh0LGUscixuLGksYSl7aWYoIW8uaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UiKTtpZihlPml8fGE+ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmFsdWUgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gSSh0LGUscixuKXswPmUmJihlPTY1NTM1K2UrMSk7Zm9yKHZhciBpPTAsbz1NYXRoLm1pbih0Lmxlbmd0aC1yLDIpO28+aTtpKyspdFtyK2ldPShlJjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gTih0LGUscixuKXswPmUmJihlPTQyOTQ5NjcyOTUrZSsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKHQubGVuZ3RoLXIsNCk7bz5pO2krKyl0W3IraV09ZT4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiBqKHQsZSxyLG4saSxvKXtpZihyK24+dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImluZGV4IG91dCBvZiByYW5nZSIpO2lmKDA+cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gRih0LGUscixuLGkpe3JldHVybiBpfHxqKHQsZSxyLDQsMy40MDI4MjM0NjYzODUyODg2ZTM4LC0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgpLFoud3JpdGUodCxlLHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gRCh0LGUscixuLGkpe3JldHVybiBpfHxqKHQsZSxyLDgsMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCwtMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCksWi53cml0ZSh0LGUscixuLDUyLDgpLHIrOH1mdW5jdGlvbiBCKHQpe2lmKHQ9VSh0KS5yZXBsYWNlKEosIiIpLHQubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDt0Lmxlbmd0aCU0IT09MDspdCs9Ij0iO3JldHVybiB0fWZ1bmN0aW9uIFUodCl7cmV0dXJuIHQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX1mdW5jdGlvbiBWKHQpe3JldHVybiAxNj50PyIwIit0LnRvU3RyaW5nKDE2KTp0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBxKHQsZSl7ZT1lfHwxLzA7Zm9yKHZhciByLG49dC5sZW5ndGgsaT1udWxsLG89W10sYT0wO24+YTthKyspe2lmKHI9dC5jaGFyQ29kZUF0KGEpLHI+NTUyOTUmJjU3MzQ0PnIpe2lmKCFpKXtpZihyPjU2MzE5KXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoYSsxPT09bil7KGUtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWk9cjtjb250aW51ZX1pZig1NjMyMD5yKXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksaT1yO2NvbnRpbnVlfXI9KGktNTUyOTY8PDEwfHItNTYzMjApKzY1NTM2fWVsc2UgaSYmKGUtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGk9bnVsbCwxMjg+cil7aWYoKGUtPTEpPDApYnJlYWs7by5wdXNoKHIpfWVsc2UgaWYoMjA0OD5yKXtpZigoZS09Mik8MClicmVhaztvLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYoNjU1MzY+cil7aWYoKGUtPTMpPDApYnJlYWs7by5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKDExMTQxMTI+cikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigoZS09NCk8MClicmVhaztvLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBvfWZ1bmN0aW9uIEgodCl7Zm9yKHZhciBlPVtdLHI9MDtyPHQubGVuZ3RoO3IrKyllLnB1c2goMjU1JnQuY2hhckNvZGVBdChyKSk7cmV0dXJuIGV9ZnVuY3Rpb24gRyh0LGUpe2Zvcih2YXIgcixuLGksbz1bXSxhPTA7YTx0Lmxlbmd0aCYmISgoZS09Mik8MCk7YSsrKXI9dC5jaGFyQ29kZUF0KGEpLG49cj4+OCxpPXIlMjU2LG8ucHVzaChpKSxvLnB1c2gobik7cmV0dXJuIG99ZnVuY3Rpb24gWSh0KXtyZXR1cm4gVy50b0J5dGVBcnJheShCKHQpKX1mdW5jdGlvbiBYKHQsZSxyLG4pe2Zvcih2YXIgaT0wO24+aSYmIShpK3I+PWUubGVuZ3RofHxpPj10Lmxlbmd0aCk7aSsrKWVbaStyXT10W2ldO3JldHVybiBpfXZhciBXPXQoImJhc2U2NC1qcyIpLFo9dCgiaWVlZTc1NCIpLCQ9dCgiaXNhcnJheSIpO3IuQnVmZmVyPW8sci5TbG93QnVmZmVyPW0sci5JTlNQRUNUX01BWF9CWVRFUz01MCxvLnBvb2xTaXplPTgxOTI7dmFyIEs9e307by5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMCE9PWUuVFlQRURfQVJSQVlfU1VQUE9SVD9lLlRZUEVEX0FSUkFZX1NVUFBPUlQ6bigpLG8uX2F1Z21lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19fPW8ucHJvdG90eXBlLHR9LG8uVFlQRURfQVJSQVlfU1VQUE9SVD8oby5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLG8uX19wcm90b19fPVVpbnQ4QXJyYXksInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5zcGVjaWVzJiZvW1N5bWJvbC5zcGVjaWVzXT09PW8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFN5bWJvbC5zcGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMH0pKTooby5wcm90b3R5cGUubGVuZ3RoPXZvaWQgMCxvLnByb3RvdHlwZS5wYXJlbnQ9dm9pZCAwKSxvLmlzQnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiEobnVsbD09dHx8IXQuX2lzQnVmZmVyKX0sby5jb21wYXJlPWZ1bmN0aW9uKHQsZSl7aWYoIW8uaXNCdWZmZXIodCl8fCFvLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZih0PT09ZSlyZXR1cm4gMDtmb3IodmFyIHI9dC5sZW5ndGgsbj1lLmxlbmd0aCxpPTAsYT1NYXRoLm1pbihyLG4pO2E+aSYmdFtpXT09PWVbaV07KSsraTtyZXR1cm4gaSE9PWEmJihyPXRbaV0sbj1lW2ldKSxuPnI/LTE6cj5uPzE6MH0sby5pc0VuY29kaW5nPWZ1bmN0aW9uKHQpe3N3aXRjaChTdHJpbmcodCkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInJhdyI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxvLmNvbmNhdD1mdW5jdGlvbih0LGUpe2lmKCEkKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImxpc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzLiIpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbmV3IG8oMCk7dmFyIHI7aWYodm9pZCAwPT09ZSlmb3IoZT0wLHI9MDtyPHQubGVuZ3RoO3IrKyllKz10W3JdLmxlbmd0aDt2YXIgbj1uZXcgbyhlKSxpPTA7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmNvcHkobixpKSxpKz1hLmxlbmd0aH1yZXR1cm4gbn0sby5ieXRlTGVuZ3RoPXksby5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLG8ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PXQ/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/RSh0aGlzLDAsdCk6Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtpZighby5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT10PyEwOjA9PT1vLmNvbXBhcmUodGhpcyx0KX0sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciB0PSIiLGU9ci5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKHQ9dGhpcy50b1N0cmluZygiaGV4IiwwLGUpLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD5lJiYodCs9IiAuLi4gIikpLCI8QnVmZmVyICIrdCsiPiJ9LG8ucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24odCl7aWYoIW8uaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09dD8wOm8uY29tcGFyZSh0aGlzLHQpfSxvLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcih0LGUscil7Zm9yKHZhciBuPS0xLGk9MDtyK2k8dC5sZW5ndGg7aSsrKWlmKHRbcitpXT09PWVbLTE9PT1uPzA6aS1uXSl7aWYoLTE9PT1uJiYobj1pKSxpLW4rMT09PWUubGVuZ3RoKXJldHVybiByK259ZWxzZSBuPS0xO3JldHVybi0xfWlmKGU+MjE0NzQ4MzY0Nz9lPTIxNDc0ODM2NDc6LTIxNDc0ODM2NDg+ZSYmKGU9LTIxNDc0ODM2NDgpLGU+Pj0wLDA9PT10aGlzLmxlbmd0aClyZXR1cm4tMTtpZihlPj10aGlzLmxlbmd0aClyZXR1cm4tMTtpZigwPmUmJihlPU1hdGgubWF4KHRoaXMubGVuZ3RoK2UsMCkpLCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gMD09PXQubGVuZ3RoPy0xOlN0cmluZy5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHRoaXMsdCxlKTtpZihvLmlzQnVmZmVyKHQpKXJldHVybiByKHRoaXMsdCxlKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIG8uVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09PVVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHRoaXMsdCxlKTpyKHRoaXMsW3RdLGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfSxvLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0LGUscixuKXtpZih2b2lkIDA9PT1lKW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiBlKW49ZSxyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKGlzRmluaXRlKGUpKWU9MHxlLGlzRmluaXRlKHIpPyhyPTB8cix2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKTtlbHNle3ZhciBpPW47bj1lLGU9MHxyLHI9aX12YXIgbz10aGlzLmxlbmd0aC1lO2lmKCh2b2lkIDA9PT1yfHxyPm8pJiYocj1vKSx0Lmxlbmd0aD4wJiYoMD5yfHwwPmUpfHxlPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJhdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBhPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4geCh0aGlzLHQsZSxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBfKHRoaXMsdCxlLHIpO2Nhc2UiYXNjaWkiOnJldHVybiB3KHRoaXMsdCxlLHIpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gQSh0aGlzLHQsZSxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIGsodGhpcyx0LGUscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBNKHRoaXMsdCxlLHIpO2RlZmF1bHQ6aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksYT0hMH19LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIFE9NDA5NjtvLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3Q9fn50LGU9dm9pZCAwPT09ZT9yOn5+ZSwwPnQ/KHQrPXIsMD50JiYodD0wKSk6dD5yJiYodD1yKSwwPmU/KGUrPXIsMD5lJiYoZT0wKSk6ZT5yJiYoZT1yKSx0PmUmJihlPXQpO3ZhciBuO2lmKG8uVFlQRURfQVJSQVlfU1VQUE9SVCluPXRoaXMuc3ViYXJyYXkodCxlKSxuLl9fcHJvdG9fXz1vLnByb3RvdHlwZTtlbHNle3ZhciBpPWUtdDtuPW5ldyBvKGksdm9pZCAwKTtmb3IodmFyIGE9MDtpPmE7YSsrKW5bYV09dGhpc1thK3RdfXJldHVybiBuLmxlbmd0aCYmKG4ucGFyZW50PXRoaXMucGFyZW50fHx0aGlzKSxufSxvLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKHQsZSxyKXt0PTB8dCxlPTB8ZSxyfHxSKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdF0saT0xLG89MDsrK288ZSYmKGkqPTI1Nik7KW4rPXRoaXNbdCtvXSppO3JldHVybiBufSxvLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKHQsZSxyKXt0PTB8dCxlPTB8ZSxyfHxSKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdCstLWVdLGk9MTtlPjAmJihpKj0yNTYpOyluKz10aGlzW3QrLS1lXSppO3JldHVybiBufSxvLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Uih0LDEsdGhpcy5sZW5ndGgpLHRoaXNbdF19LG8ucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxSKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XXx0aGlzW3QrMV08PDh9LG8ucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxSKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XTw8OHx0aGlzW3QrMV19LG8ucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxSKHQsNCx0aGlzLmxlbmd0aCksKHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbdCszXX0sby5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fFIodCw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW3RdKyh0aGlzW3QrMV08PDE2fHRoaXNbdCsyXTw8OHx0aGlzW3QrM10pfSxvLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q9MHx0LGU9MHxlLHJ8fFIodCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1t0XSxpPTEsbz0wOysrbzxlJiYoaSo9MjU2KTspbis9dGhpc1t0K29dKmk7cmV0dXJuIGkqPTEyOCxuPj1pJiYobi09TWF0aC5wb3coMiw4KmUpKSxufSxvLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24odCxlLHIpe3Q9MHx0LGU9MHxlLHJ8fFIodCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49ZSxpPTEsbz10aGlzW3QrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW3QrLS1uXSppO3JldHVybiBpKj0xMjgsbz49aSYmKG8tPU1hdGgucG93KDIsOCplKSksb30sby5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Uih0LDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW3RdPy0xKigyNTUtdGhpc1t0XSsxKTp0aGlzW3RdfSxvLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbih0LGUpe2V8fFIodCwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW3RdfHRoaXNbdCsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sby5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24odCxlKXtlfHxSKHQsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1t0KzFdfHRoaXNbdF08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LG8ucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fFIodCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2fHRoaXNbdCszXTw8MjR9LG8ucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fFIodCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdPDwyNHx0aGlzW3QrMV08PDE2fHRoaXNbdCsyXTw8OHx0aGlzW3QrM119LG8ucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fFIodCw0LHRoaXMubGVuZ3RoKSxaLnJlYWQodGhpcyx0LCEwLDIzLDQpfSxvLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxSKHQsNCx0aGlzLmxlbmd0aCksWi5yZWFkKHRoaXMsdCwhMSwyMyw0KX0sby5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fFIodCw4LHRoaXMubGVuZ3RoKSxaLnJlYWQodGhpcyx0LCEwLDUyLDgpfSxvLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Uih0LDgsdGhpcy5sZW5ndGgpLFoucmVhZCh0aGlzLHQsITEsNTIsOCl9LG8ucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe3Q9K3QsZT0wfGUscj0wfHIsbnx8Tyh0aGlzLHQsZSxyLE1hdGgucG93KDIsOCpyKSwwKTt2YXIgaT0xLG89MDtmb3IodGhpc1tlXT0yNTUmdDsrK288ciYmKGkqPTI1Nik7KXRoaXNbZStvXT10L2kmMjU1O3JldHVybiBlK3J9LG8ucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe3Q9K3QsZT0wfGUscj0wfHIsbnx8Tyh0aGlzLHQsZSxyLE1hdGgucG93KDIsOCpyKSwwKTt2YXIgaT1yLTEsbz0xO2Zvcih0aGlzW2UraV09MjU1JnQ7LS1pPj0wJiYobyo9MjU2KTspdGhpc1tlK2ldPXQvbyYyNTU7cmV0dXJuIGUrcn0sby5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT0wfGUscnx8Tyh0aGlzLHQsZSwxLDI1NSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlR8fCh0PU1hdGguZmxvb3IodCkpLHRoaXNbZV09MjU1JnQsZSsxfSxvLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDIsNjU1MzUsMCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCk6SSh0aGlzLHQsZSwhMCksZSsyfSxvLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDIsNjU1MzUsMCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCk6SSh0aGlzLHQsZSwhMSksZSsyfSxvLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbZSszXT10Pj4+MjQsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tlXT0yNTUmdCk6Tih0aGlzLHQsZSwhMCksZSs0fSxvLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbZV09dD4+PjI0LHRoaXNbZSsxXT10Pj4+MTYsdGhpc1tlKzJdPXQ+Pj44LHRoaXNbZSszXT0yNTUmdCk6Tih0aGlzLHQsZSwhMSksZSs0fSxvLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT0wfGUsIW4pe3ZhciBpPU1hdGgucG93KDIsOCpyLTEpO08odGhpcyx0LGUscixpLTEsLWkpfXZhciBvPTAsYT0xLHM9MD50PzE6MDtmb3IodGhpc1tlXT0yNTUmdDsrK288ciYmKGEqPTI1Nik7KXRoaXNbZStvXT0odC9hPj4wKS1zJjI1NTtyZXR1cm4gZStyfSxvLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT0wfGUsIW4pe3ZhciBpPU1hdGgucG93KDIsOCpyLTEpO08odGhpcyx0LGUscixpLTEsLWkpfXZhciBvPXItMSxhPTEscz0wPnQ/MTowO2Zvcih0aGlzW2Urb109MjU1JnQ7LS1vPj0wJiYoYSo9MjU2KTspdGhpc1tlK29dPSh0L2E+PjApLXMmMjU1O3JldHVybiBlK3J9LG8ucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT0wfGUscnx8Tyh0aGlzLHQsZSwxLDEyNywtMTI4KSxvLlRZUEVEX0FSUkFZX1NVUFBPUlR8fCh0PU1hdGguZmxvb3IodCkpLDA+dCYmKHQ9MjU1K3QrMSksdGhpc1tlXT0yNTUmdCxlKzF9LG8ucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT0wfGUscnx8Tyh0aGlzLHQsZSwyLDMyNzY3LC0zMjc2OCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCk6SSh0aGlzLHQsZSwhMCksZSsyfSxvLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU9MHxlLHJ8fE8odGhpcyx0LGUsMiwzMjc2NywtMzI3NjgpLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tlXT10Pj4+OCx0aGlzW2UrMV09MjU1JnQpOkkodGhpcyx0LGUsITEpLGUrMn0sby5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2UrMl09dD4+PjE2LHRoaXNbZSszXT10Pj4+MjQpOk4odGhpcyx0LGUsITApLGUrNH0sby5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksMD50JiYodD00Mjk0OTY3Mjk1K3QrMSksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPXQ+Pj4yNCx0aGlzW2UrMV09dD4+PjE2LHRoaXNbZSsyXT10Pj4+OCx0aGlzW2UrM109MjU1JnQpOk4odGhpcyx0LGUsITEpLGUrNH0sby5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gRih0aGlzLHQsZSwhMCxyKX0sby5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gRih0aGlzLHQsZSwhMSxyKX0sby5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIEQodGhpcyx0LGUsITAscil9LG8ucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBEKHRoaXMsdCxlLCExLHIpfSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksZT49dC5sZW5ndGgmJihlPXQubGVuZ3RoKSxlfHwoZT0wKSxuPjAmJnI+biYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PXQubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoMD5lKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYoMD5yfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKDA+bil0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksdC5sZW5ndGgtZTxuLXImJihuPXQubGVuZ3RoLWUrcik7dmFyIGksYT1uLXI7aWYodGhpcz09PXQmJmU+ciYmbj5lKWZvcihpPWEtMTtpPj0wO2ktLSl0W2krZV09dGhpc1tpK3JdO2Vsc2UgaWYoMWUzPmF8fCFvLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGk9MDthPmk7aSsrKXRbaStlXT10aGlzW2krcl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbCh0LHRoaXMuc3ViYXJyYXkocixyK2EpLGUpOwpyZXR1cm4gYX0sby5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbih0LGUscil7aWYodHx8KHQ9MCksZXx8KGU9MCkscnx8KHI9dGhpcy5sZW5ndGgpLGU+cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiZW5kIDwgc3RhcnQiKTtpZihyIT09ZSYmMCE9PXRoaXMubGVuZ3RoKXtpZigwPmV8fGU+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzdGFydCBvdXQgb2YgYm91bmRzIik7aWYoMD5yfHxyPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJlbmQgb3V0IG9mIGJvdW5kcyIpO3ZhciBuO2lmKCJudW1iZXIiPT10eXBlb2YgdClmb3Iobj1lO3I+bjtuKyspdGhpc1tuXT10O2Vsc2V7dmFyIGk9cSh0LnRvU3RyaW5nKCkpLG89aS5sZW5ndGg7Zm9yKG49ZTtyPm47bisrKXRoaXNbbl09aVtuJW9dfXJldHVybiB0aGlzfX07dmFyIEo9L1teK1wvMC05QS1aYS16LV9dL2d9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiYmFzZTY0LWpzIjo1MSxpZWVlNzU0OjUyLGlzYXJyYXk6NTN9XSw1MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7dmFyIHQsZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIscj1lLmxlbmd0aDtmb3IodD0wO3I+dDt0KyspbFt0XT1lW3RdO2Zvcih0PTA7cj50OysrdCljW2UuY2hhckNvZGVBdCh0KV09dDtjWyItIi5jaGFyQ29kZUF0KDApXT02MixjWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiBpKHQpe3ZhciBlLHIsbixpLG8sYSxzPXQubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO289Ij0iPT09dFtzLTJdPzI6Ij0iPT09dFtzLTFdPzE6MCxhPW5ldyB1KDMqcy80LW8pLG49bz4wP3MtNDpzO3ZhciBsPTA7Zm9yKGU9MCxyPTA7bj5lO2UrPTQscis9MylpPWNbdC5jaGFyQ29kZUF0KGUpXTw8MTh8Y1t0LmNoYXJDb2RlQXQoZSsxKV08PDEyfGNbdC5jaGFyQ29kZUF0KGUrMildPDw2fGNbdC5jaGFyQ29kZUF0KGUrMyldLGFbbCsrXT0oMTY3MTE2ODAmaSk+PjE2LGFbbCsrXT0oNjUyODAmaSk+PjgsYVtsKytdPTI1NSZpO3JldHVybiAyPT09bz8oaT1jW3QuY2hhckNvZGVBdChlKV08PDJ8Y1t0LmNoYXJDb2RlQXQoZSsxKV0+PjQsYVtsKytdPTI1NSZpKToxPT09byYmKGk9Y1t0LmNoYXJDb2RlQXQoZSldPDwxMHxjW3QuY2hhckNvZGVBdChlKzEpXTw8NHxjW3QuY2hhckNvZGVBdChlKzIpXT4+MixhW2wrK109aT4+OCYyNTUsYVtsKytdPTI1NSZpKSxhfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGxbdD4+MTgmNjNdK2xbdD4+MTImNjNdK2xbdD4+NiY2M10rbFs2MyZ0XX1mdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG4saT1bXSxhPWU7cj5hO2ErPTMpbj0odFthXTw8MTYpKyh0W2ErMV08PDgpK3RbYSsyXSxpLnB1c2gobyhuKSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gcyh0KXtmb3IodmFyIGUscj10Lmxlbmd0aCxuPXIlMyxpPSIiLG89W10scz0xNjM4MyxjPTAsdT1yLW47dT5jO2MrPXMpby5wdXNoKGEodCxjLGMrcz51P3U6YytzKSk7cmV0dXJuIDE9PT1uPyhlPXRbci0xXSxpKz1sW2U+PjJdLGkrPWxbZTw8NCY2M10saSs9Ij09Iik6Mj09PW4mJihlPSh0W3ItMl08PDgpK3Rbci0xXSxpKz1sW2U+PjEwXSxpKz1sW2U+PjQmNjNdLGkrPWxbZTw8MiY2M10saSs9Ij0iKSxvLnB1c2goaSksby5qb2luKCIiKX1yLnRvQnl0ZUFycmF5PWksci5mcm9tQnl0ZUFycmF5PXM7dmFyIGw9W10sYz1bXSx1PSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5O24oKX0se31dLDUyOltmdW5jdGlvbih0LGUscil7ci5yZWFkPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG8sYSxzPTgqaS1uLTEsbD0oMTw8cyktMSxjPWw+PjEsdT0tNyxoPXI/aS0xOjAsZj1yPy0xOjEsZD10W2UraF07Zm9yKGgrPWYsbz1kJigxPDwtdSktMSxkPj49LXUsdSs9czt1PjA7bz0yNTYqbyt0W2UraF0saCs9Zix1LT04KTtmb3IoYT1vJigxPDwtdSktMSxvPj49LXUsdSs9bjt1PjA7YT0yNTYqYSt0W2UraF0saCs9Zix1LT04KTtpZigwPT09bylvPTEtYztlbHNle2lmKG89PT1sKXJldHVybiBhP05hTjooZD8tMToxKSooMS8wKTthKz1NYXRoLnBvdygyLG4pLG8tPWN9cmV0dXJuKGQ/LTE6MSkqYSpNYXRoLnBvdygyLG8tbil9LHIud3JpdGU9ZnVuY3Rpb24odCxlLHIsbixpLG8pe3ZhciBhLHMsbCxjPTgqby1pLTEsdT0oMTw8YyktMSxoPXU+PjEsZj0yMz09PWk/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLGQ9bj8wOm8tMSxwPW4/MTotMSxnPTA+ZXx8MD09PWUmJjA+MS9lPzE6MDtmb3IoZT1NYXRoLmFicyhlKSxpc05hTihlKXx8ZT09PTEvMD8ocz1pc05hTihlKT8xOjAsYT11KTooYT1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGguTE4yKSxlKihsPU1hdGgucG93KDIsLWEpKTwxJiYoYS0tLGwqPTIpLGUrPWEraD49MT9mL2w6ZipNYXRoLnBvdygyLDEtaCksZSpsPj0yJiYoYSsrLGwvPTIpLGEraD49dT8ocz0wLGE9dSk6YStoPj0xPyhzPShlKmwtMSkqTWF0aC5wb3coMixpKSxhKz1oKToocz1lKk1hdGgucG93KDIsaC0xKSpNYXRoLnBvdygyLGkpLGE9MCkpO2k+PTg7dFtyK2RdPTI1NSZzLGQrPXAscy89MjU2LGktPTgpO2ZvcihhPWE8PGl8cyxjKz1pO2M+MDt0W3IrZF09MjU1JmEsZCs9cCxhLz0yNTYsYy09OCk7dFtyK2QtcF18PTEyOCpnfX0se31dLDUzOltmdW5jdGlvbih0LGUscil7dmFyIG49e30udG9TdHJpbmc7ZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PW4uY2FsbCh0KX19LHt9XSw1NDpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXt0aGlzLl9ldmVudHM9dGhpcy5fZXZlbnRzfHx7fSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9ZnVuY3Rpb24gaSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBvKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdH1mdW5jdGlvbiBhKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdm9pZCAwPT09dH1lLmV4cG9ydHM9bixuLkV2ZW50RW1pdHRlcj1uLG4ucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLG4ucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwLG4uZGVmYXVsdE1heExpc3RlbmVycz0xMCxuLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24odCl7aWYoIW8odCl8fDA+dHx8aXNOYU4odCkpdGhyb3cgVHlwZUVycm9yKCJuIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPXQsdGhpc30sbi5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4sbyxsLGM7aWYodGhpcy5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPXt9KSwiZXJyb3IiPT09dCYmKCF0aGlzLl9ldmVudHMuZXJyb3J8fGEodGhpcy5fZXZlbnRzLmVycm9yKSYmIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKXtpZihlPWFyZ3VtZW50c1sxXSxlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgZTt0aHJvdyBUeXBlRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCAiZXJyb3IiIGV2ZW50LicpfWlmKHI9dGhpcy5fZXZlbnRzW3RdLHMocikpcmV0dXJuITE7aWYoaShyKSlzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnIuY2FsbCh0aGlzKTticmVhaztjYXNlIDI6ci5jYWxsKHRoaXMsYXJndW1lbnRzWzFdKTticmVhaztjYXNlIDM6ci5jYWxsKHRoaXMsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7YnJlYWs7ZGVmYXVsdDpvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxyLmFwcGx5KHRoaXMsbyl9ZWxzZSBpZihhKHIpKWZvcihvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxjPXIuc2xpY2UoKSxuPWMubGVuZ3RoLGw9MDtuPmw7bCsrKWNbbF0uYXBwbHkodGhpcyxvKTtyZXR1cm4hMH0sbi5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgcjtpZighaShlKSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO3JldHVybiB0aGlzLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9e30pLHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lciYmdGhpcy5lbWl0KCJuZXdMaXN0ZW5lciIsdCxpKGUubGlzdGVuZXIpP2UubGlzdGVuZXI6ZSksdGhpcy5fZXZlbnRzW3RdP2EodGhpcy5fZXZlbnRzW3RdKT90aGlzLl9ldmVudHNbdF0ucHVzaChlKTp0aGlzLl9ldmVudHNbdF09W3RoaXMuX2V2ZW50c1t0XSxlXTp0aGlzLl9ldmVudHNbdF09ZSxhKHRoaXMuX2V2ZW50c1t0XSkmJiF0aGlzLl9ldmVudHNbdF0ud2FybmVkJiYocj1zKHRoaXMuX21heExpc3RlbmVycyk/bi5kZWZhdWx0TWF4TGlzdGVuZXJzOnRoaXMuX21heExpc3RlbmVycyxyJiZyPjAmJnRoaXMuX2V2ZW50c1t0XS5sZW5ndGg+ciYmKHRoaXMuX2V2ZW50c1t0XS53YXJuZWQ9ITAsY29uc29sZS5lcnJvcigiKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJWQgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4iLHRoaXMuX2V2ZW50c1t0XS5sZW5ndGgpLCJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLnRyYWNlJiZjb25zb2xlLnRyYWNlKCkpKSx0aGlzfSxuLnByb3RvdHlwZS5vbj1uLnByb3RvdHlwZS5hZGRMaXN0ZW5lcixuLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMucmVtb3ZlTGlzdGVuZXIodCxyKSxufHwobj0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9aWYoIWkoZSkpdGhyb3cgVHlwZUVycm9yKCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgbj0hMTtyZXR1cm4gci5saXN0ZW5lcj1lLHRoaXMub24odCxyKSx0aGlzfSxuLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3ZhciByLG4sbyxzO2lmKCFpKGUpKXRocm93IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7aWYoIXRoaXMuX2V2ZW50c3x8IXRoaXMuX2V2ZW50c1t0XSlyZXR1cm4gdGhpcztpZihyPXRoaXMuX2V2ZW50c1t0XSxvPXIubGVuZ3RoLG49LTEscj09PWV8fGkoci5saXN0ZW5lcikmJnIubGlzdGVuZXI9PT1lKWRlbGV0ZSB0aGlzLl9ldmVudHNbdF0sdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIix0LGUpO2Vsc2UgaWYoYShyKSl7Zm9yKHM9bztzLS0gPjA7KWlmKHJbc109PT1lfHxyW3NdLmxpc3RlbmVyJiZyW3NdLmxpc3RlbmVyPT09ZSl7bj1zO2JyZWFrfWlmKDA+bilyZXR1cm4gdGhpczsxPT09ci5sZW5ndGg/KHIubGVuZ3RoPTAsZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSk6ci5zcGxpY2UobiwxKSx0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLHQsZSl9cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZSxyO2lmKCF0aGlzLl9ldmVudHMpcmV0dXJuIHRoaXM7aWYoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fZXZlbnRzPXt9OnRoaXMuX2V2ZW50c1t0XSYmZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoZSBpbiB0aGlzLl9ldmVudHMpInJlbW92ZUxpc3RlbmVyIiE9PWUmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGUpO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIiKSx0aGlzLl9ldmVudHM9e30sdGhpc31pZihyPXRoaXMuX2V2ZW50c1t0XSxpKHIpKXRoaXMucmVtb3ZlTGlzdGVuZXIodCxyKTtlbHNlIGlmKHIpZm9yKDtyLmxlbmd0aDspdGhpcy5yZW1vdmVMaXN0ZW5lcih0LHJbci5sZW5ndGgtMV0pO3JldHVybiBkZWxldGUgdGhpcy5fZXZlbnRzW3RdLHRoaXN9LG4ucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT10aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50c1t0XT9pKHRoaXMuX2V2ZW50c1t0XSk/W3RoaXMuX2V2ZW50c1t0XV06dGhpcy5fZXZlbnRzW3RdLnNsaWNlKCk6W119LG4ucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24odCl7aWYodGhpcy5fZXZlbnRzKXt2YXIgZT10aGlzLl9ldmVudHNbdF07aWYoaShlKSlyZXR1cm4gMTtpZihlKXJldHVybiBlLmxlbmd0aH1yZXR1cm4gMH0sbi5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGlzdGVuZXJDb3VudChlKX19LHt9XSw1NTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXt1PSExLHMubGVuZ3RoP2M9cy5jb25jYXQoYyk6aD0tMSxjLmxlbmd0aCYmaSgpfWZ1bmN0aW9uIGkoKXtpZighdSl7dmFyIHQ9c2V0VGltZW91dChuKTt1PSEwO2Zvcih2YXIgZT1jLmxlbmd0aDtlOyl7Zm9yKHM9YyxjPVtdOysraDxlOylzJiZzW2hdLnJ1bigpO2g9LTEsZT1jLmxlbmd0aH1zPW51bGwsdT0hMSxjbGVhclRpbWVvdXQodCl9fWZ1bmN0aW9uIG8odCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBhKCl7fXZhciBzLGw9ZS5leHBvcnRzPXt9LGM9W10sdT0hMSxoPS0xO2wubmV4dFRpY2s9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZVtyLTFdPWFyZ3VtZW50c1tyXTtjLnB1c2gobmV3IG8odCxlKSksMSE9PWMubGVuZ3RofHx1fHxzZXRUaW1lb3V0KGksMCl9LG8ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LGwudGl0bGU9ImJyb3dzZXIiLGwuYnJvd3Nlcj0hMCxsLmVudj17fSxsLmFyZ3Y9W10sbC52ZXJzaW9uPSIiLGwudmVyc2lvbnM9e30sbC5vbj1hLGwuYWRkTGlzdGVuZXI9YSxsLm9uY2U9YSxsLm9mZj1hLGwucmVtb3ZlTGlzdGVuZXI9YSxsLnJlbW92ZUFsbExpc3RlbmVycz1hLGwuZW1pdD1hLGwuYmluZGluZz1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGwuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxsLmNoZGlyPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LGwudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LHt9XSw1NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17amV0Olt7aW5kZXg6MCxyZ2I6WzAsMCwxMzFdfSx7aW5kZXg6LjEyNSxyZ2I6WzAsNjAsMTcwXX0se2luZGV4Oi4zNzUscmdiOls1LDI1NSwyNTVdfSx7aW5kZXg6LjYyNSxyZ2I6WzI1NSwyNTUsMF19LHtpbmRleDouODc1LHJnYjpbMjUwLDAsMF19LHtpbmRleDoxLHJnYjpbMTI4LDAsMF19XSxoc3Y6W3tpbmRleDowLHJnYjpbMjU1LDAsMF19LHtpbmRleDouMTY5LHJnYjpbMjUzLDI1NSwyXX0se2luZGV4Oi4xNzMscmdiOlsyNDcsMjU1LDJdfSx7aW5kZXg6LjMzNyxyZ2I6WzAsMjUyLDRdfSx7aW5kZXg6LjM0MSxyZ2I6WzAsMjUyLDEwXX0se2luZGV4Oi41MDYscmdiOlsxLDI0OSwyNTVdfSx7aW5kZXg6LjY3MSxyZ2I6WzIsMCwyNTNdfSx7aW5kZXg6LjY3NSxyZ2I6WzgsMCwyNTNdfSx7aW5kZXg6LjgzOSxyZ2I6WzI1NSwwLDI1MV19LHtpbmRleDouODQzLHJnYjpbMjU1LDAsMjQ1XX0se2luZGV4OjEscmdiOlsyNTUsMCw2XX1dLGhvdDpbe2luZGV4OjAscmdiOlswLDAsMF19LHtpbmRleDouMyxyZ2I6WzIzMCwwLDBdfSx7aW5kZXg6LjYscmdiOlsyNTUsMjEwLDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjU1XX1dLGNvb2w6W3tpbmRleDowLHJnYjpbMCwyNTUsMjU1XX0se2luZGV4OjEscmdiOlsyNTUsMCwyNTVdfV0sc3ByaW5nOlt7aW5kZXg6MCxyZ2I6WzI1NSwwLDI1NV19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwwXX1dLHN1bW1lcjpbe2luZGV4OjAscmdiOlswLDEyOCwxMDJdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMTAyXX1dLGF1dHVtbjpbe2luZGV4OjAscmdiOlsyNTUsMCwwXX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDBdfV0sd2ludGVyOlt7aW5kZXg6MCxyZ2I6WzAsMCwyNTVdfSx7aW5kZXg6MSxyZ2I6WzAsMjU1LDEyOF19XSxib25lOlt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4Oi4zNzYscmdiOls4NCw4NCwxMTZdfSx7aW5kZXg6Ljc1MyxyZ2I6WzE2OSwyMDAsMjAwXX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDI1NV19XSxjb3BwZXI6W3tpbmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6LjgwNCxyZ2I6WzI1NSwxNjAsMTAyXX0se2luZGV4OjEscmdiOlsyNTUsMTk5LDEyN119XSxncmV5czpbe2luZGV4OjAscmdiOlswLDAsMF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTVdfV0seWlnbmJ1Olt7aW5kZXg6MCxyZ2I6WzgsMjksODhdfSx7aW5kZXg6LjEyNSxyZ2I6WzM3LDUyLDE0OF19LHtpbmRleDouMjUscmdiOlszNCw5NCwxNjhdfSx7aW5kZXg6LjM3NSxyZ2I6WzI5LDE0NSwxOTJdfSx7aW5kZXg6LjUscmdiOls2NSwxODIsMTk2XX0se2luZGV4Oi42MjUscmdiOlsxMjcsMjA1LDE4N119LHtpbmRleDouNzUscmdiOlsxOTksMjMzLDE4MF19LHtpbmRleDouODc1LHJnYjpbMjM3LDI0OCwyMTddfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjE3XX1dLGdyZWVuczpbe2luZGV4OjAscmdiOlswLDY4LDI3XX0se2luZGV4Oi4xMjUscmdiOlswLDEwOSw0NF19LHtpbmRleDouMjUscmdiOlszNSwxMzksNjldfSx7aW5kZXg6LjM3NSxyZ2I6WzY1LDE3MSw5M119LHtpbmRleDouNSxyZ2I6WzExNiwxOTYsMTE4XX0se2luZGV4Oi42MjUscmdiOlsxNjEsMjE3LDE1NV19LHtpbmRleDouNzUscmdiOlsxOTksMjMzLDE5Ml19LHtpbmRleDouODc1LHJnYjpbMjI5LDI0NSwyMjRdfSx7aW5kZXg6MSxyZ2I6WzI0NywyNTIsMjQ1XX1dLHlpb3JyZDpbe2luZGV4OjAscmdiOlsxMjgsMCwzOF19LHtpbmRleDouMTI1LHJnYjpbMTg5LDAsMzhdfSx7aW5kZXg6LjI1LHJnYjpbMjI3LDI2LDI4XX0se2luZGV4Oi4zNzUscmdiOlsyNTIsNzgsNDJdfSx7aW5kZXg6LjUscmdiOlsyNTMsMTQxLDYwXX0se2luZGV4Oi42MjUscmdiOlsyNTQsMTc4LDc2XX0se2luZGV4Oi43NSxyZ2I6WzI1NCwyMTcsMTE4XX0se2luZGV4Oi44NzUscmdiOlsyNTUsMjM3LDE2MF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyMDRdfV0sYmx1ZXJlZDpbe2luZGV4OjAscmdiOlswLDAsMjU1XX0se2luZGV4OjEscmdiOlsyNTUsMCwwXX1dLHJkYnU6W3tpbmRleDowLHJnYjpbNSwxMCwxNzJdfSx7aW5kZXg6LjM1LHJnYjpbMTA2LDEzNywyNDddfSx7aW5kZXg6LjUscmdiOlsxOTAsMTkwLDE5MF19LHtpbmRleDouNixyZ2I6WzIyMCwxNzAsMTMyXX0se2luZGV4Oi43LHJnYjpbMjMwLDE0NSw5MF19LHtpbmRleDoxLHJnYjpbMTc4LDEwLDI4XX1dLHBpY25pYzpbe2luZGV4OjAscmdiOlswLDAsMjU1XX0se2luZGV4Oi4xLHJnYjpbNTEsMTUzLDI1NV19LHtpbmRleDouMixyZ2I6WzEwMiwyMDQsMjU1XX0se2luZGV4Oi4zLHJnYjpbMTUzLDIwNCwyNTVdfSx7aW5kZXg6LjQscmdiOlsyMDQsMjA0LDI1NV19LHtpbmRleDouNSxyZ2I6WzI1NSwyNTUsMjU1XX0se2luZGV4Oi42LHJnYjpbMjU1LDIwNCwyNTVdfSx7aW5kZXg6LjcscmdiOlsyNTUsMTUzLDI1NV19LHtpbmRleDouOCxyZ2I6WzI1NSwxMDIsMjA0XX0se2luZGV4Oi45LHJnYjpbMjU1LDEwMiwxMDJdfSx7aW5kZXg6MSxyZ2I6WzI1NSwwLDBdfV0scmFpbmJvdzpbe2luZGV4OjAscmdiOlsxNTAsMCw5MF19LHtpbmRleDouMTI1LHJnYjpbMCwwLDIwMF19LHtpbmRleDouMjUscmdiOlswLDI1LDI1NV19LHtpbmRleDouMzc1LHJnYjpbMCwxNTIsMjU1XX0se2luZGV4Oi41LHJnYjpbNDQsMjU1LDE1MF19LHtpbmRleDouNjI1LHJnYjpbMTUxLDI1NSwwXX0se2luZGV4Oi43NSxyZ2I6WzI1NSwyMzQsMF19LHtpbmRleDouODc1LHJnYjpbMjU1LDExMSwwXX0se2luZGV4OjEscmdiOlsyNTUsMCwwXX1dLHBvcnRsYW5kOlt7aW5kZXg6MCxyZ2I6WzEyLDUxLDEzMV19LHtpbmRleDouMjUscmdiOlsxMCwxMzYsMTg2XX0se2luZGV4Oi41LHJnYjpbMjQyLDIxMSw1Nl19LHtpbmRleDouNzUscmdiOlsyNDIsMTQzLDU2XX0se2luZGV4OjEscmdiOlsyMTcsMzAsMzBdfV0sYmxhY2tib2R5Olt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4Oi4yLHJnYjpbMjMwLDAsMF19LHtpbmRleDouNCxyZ2I6WzIzMCwyMTAsMF19LHtpbmRleDouNyxyZ2I6WzI1NSwyNTUsMjU1XX0se2luZGV4OjEscmdiOlsxNjAsMjAwLDI1NV19XSxlYXJ0aDpbe2luZGV4OjAscmdiOlswLDAsMTMwXX0se2luZGV4Oi4xLHJnYjpbMCwxODAsMTgwXX0se2luZGV4Oi4yLHJnYjpbNDAsMjEwLDQwXX0se2luZGV4Oi40LHJnYjpbMjMwLDIzMCw1MF19LHtpbmRleDouNixyZ2I6WzEyMCw3MCwyMF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTVdfV0sZWxlY3RyaWM6W3tpbmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6LjE1LHJnYjpbMzAsMCwxMDBdfSx7aW5kZXg6LjQscmdiOlsxMjAsMCwxMDBdfSx7aW5kZXg6LjYscmdiOlsxNjAsOTAsMF19LHtpbmRleDouOCxyZ2I6WzIzMCwyMDAsMF19LHtpbmRleDoxLHJnYjpbMjU1LDI1MCwyMjBdfV0sYWxwaGE6W3tpbmRleDowLHJnYjpbMjU1LDI1NSwyNTUsMF19LHtpbmRleDowLHJnYjpbMjU1LDI1NSwyNTUsMV19XX19LHt9XSw1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZSxyPSIjIixuPTA7Mz5uOysrbillPXRbbl0sZT1lLnRvU3RyaW5nKDE2KSxyKz0oIjAwIitlKS5zdWJzdHIoZS5sZW5ndGgpO3JldHVybiByfWZ1bmN0aW9uIGkodCl7cmV0dXJuInJnYmEoIit0LmpvaW4oIiwiKSsiKSJ9dmFyIG89dCgiYXJyYXl0b29scyIpLGE9dCgiY2xvbmUiKSxzPXQoIi4vY29sb3JTY2FsZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixsLGMsdSxoLGYsZCxwLGcsdixtLHksYj1bXSx4PVtdLF89W10sdz1bXTtpZihvLmlzUGxhaW5PYmplY3QodCl8fCh0PXt9KSxwPXQubnNoYWRlc3x8NzIsZD10LmZvcm1hdHx8ImhleCIsZj10LmNvbG9ybWFwLGZ8fChmPSJqZXQiKSwic3RyaW5nIj09dHlwZW9mIGYpe2lmKGY9Zi50b0xvd2VyQ2FzZSgpLCFzW2ZdKXRocm93IEVycm9yKGYrIiBub3QgYSBzdXBwb3J0ZWQgY29sb3JzY2FsZSIpO2g9YShzW2ZdKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KGYpKXRocm93IEVycm9yKCJ1bnN1cHBvcnRlZCBjb2xvcm1hcCBvcHRpb24iLGYpO2g9YShmKX1pZihoLmxlbmd0aD5wKXRocm93IG5ldyBFcnJvcihmKyIgbWFwIHJlcXVpcmVzIG5zaGFkZXMgdG8gYmUgYXQgbGVhc3Qgc2l6ZSAiK2gubGVuZ3RoKTtmb3Iodj1BcnJheS5pc0FycmF5KHQuYWxwaGEpPzIhPT10LmFscGhhLmxlbmd0aD9bMSwxXTphKHQuYWxwaGEpOiJudW1iZXIiPT10eXBlb2YgdC5hbHBoYT9bdC5hbHBoYSx0LmFscGhhXTpbMSwxXSxlPWgubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQuaW5kZXgqcCl9KSx2WzBdPDAmJih2WzBdPTApLHZbMV08MCYmKHZbMF09MCksdlswXT4xJiYodlswXT0xKSx2WzFdPjEmJih2WzBdPTEpLHk9MDt5PGUubGVuZ3RoOysreSltPWhbeV0uaW5kZXgscj1oW3ldLnJnYiw0PT09ci5sZW5ndGgmJnJbM10+PTAmJnJbM108PTF8fChyWzNdPXZbMF0rKHZbMV0tdlswXSkqbSk7Zm9yKHk9MDt5PGUubGVuZ3RoLTE7Kyt5KXU9ZVt5KzFdLWVbeV0sbD1oW3ldLnJnYixjPWhbeSsxXS5yZ2IsYj1iLmNvbmNhdChvLmxpbnNwYWNlKGxbMF0sY1swXSx1KSkseD14LmNvbmNhdChvLmxpbnNwYWNlKGxbMV0sY1sxXSx1KSksXz1fLmNvbmNhdChvLmxpbnNwYWNlKGxbMl0sY1syXSx1KSksdz13LmNvbmNhdChvLmxpbnNwYWNlKGxbM10sY1szXSx1KSk7cmV0dXJuIGI9Yi5tYXAoTWF0aC5yb3VuZCkseD14Lm1hcChNYXRoLnJvdW5kKSxfPV8ubWFwKE1hdGgucm91bmQpLGc9by56aXAoYix4LF8sdyksImhleCI9PT1kJiYoZz1nLm1hcChuKSksInJnYmFTdHJpbmciPT09ZCYmKGc9Zy5tYXAoaSkpLGd9fSx7Ii4vY29sb3JTY2FsZXMiOjU2LGFycmF5dG9vbHM6NDgsY2xvbmU6NTh9XSw1ODpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXt2YXIgcj1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHIsbixpLG8pe2Z1bmN0aW9uIHMocixpKXtpZihudWxsPT09cilyZXR1cm4gbnVsbDtpZigwPT1pKXJldHVybiByO3ZhciBsLGY7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO2lmKGUuX19pc0FycmF5KHIpKWw9W107ZWxzZSBpZihlLl9faXNSZWdFeHAocikpbD1uZXcgUmVnRXhwKHIuc291cmNlLGEocikpLHIubGFzdEluZGV4JiYobC5sYXN0SW5kZXg9ci5sYXN0SW5kZXgpO2Vsc2UgaWYoZS5fX2lzRGF0ZShyKSlsPW5ldyBEYXRlKHIuZ2V0VGltZSgpKTtlbHNle2lmKGgmJnQuaXNCdWZmZXIocikpcmV0dXJuIGw9bmV3IHQoci5sZW5ndGgpLHIuY29weShsKSxsOyJ1bmRlZmluZWQiPT10eXBlb2Ygbz8oZj1PYmplY3QuZ2V0UHJvdG90eXBlT2YociksbD1PYmplY3QuY3JlYXRlKGYpKToobD1PYmplY3QuY3JlYXRlKG8pLGY9byl9aWYobil7dmFyIGQ9Yy5pbmRleE9mKHIpO2lmKC0xIT1kKXJldHVybiB1W2RdO2MucHVzaChyKSx1LnB1c2gobCl9Zm9yKHZhciBwIGluIHIpe3ZhciBnO2YmJihnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZixwKSksZyYmbnVsbD09Zy5zZXR8fChsW3BdPXMocltwXSxpLTEpKX1yZXR1cm4gbH12YXIgbDsib2JqZWN0Ij09dHlwZW9mIG4mJihpPW4uZGVwdGgsbz1uLnByb3RvdHlwZSxsPW4uZmlsdGVyLG49bi5jaXJjdWxhcik7dmFyIGM9W10sdT1bXSxoPSJ1bmRlZmluZWQiIT10eXBlb2YgdDtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIG4mJihuPSEwKSwidW5kZWZpbmVkIj09dHlwZW9mIGkmJihpPTEvMCkscyhyLGkpfWZ1bmN0aW9uIHIodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBuKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmIltvYmplY3QgRGF0ZV0iPT09cih0KX1mdW5jdGlvbiBpKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmIltvYmplY3QgQXJyYXldIj09PXIodCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJbb2JqZWN0IFJlZ0V4cF0iPT09cih0KX1mdW5jdGlvbiBhKHQpe3ZhciBlPSIiO3JldHVybiB0Lmdsb2JhbCYmKGUrPSJnIiksdC5pZ25vcmVDYXNlJiYoZSs9ImkiKSx0Lm11bHRpbGluZSYmKGUrPSJtIiksZX1yZXR1cm4gZS5jbG9uZVByb3RvdHlwZT1mdW5jdGlvbih0KXtpZihudWxsPT09dClyZXR1cm4gbnVsbDt2YXIgZT1mdW5jdGlvbigpe307cmV0dXJuIGUucHJvdG90eXBlPXQsbmV3IGV9LGUuX19vYmpUb1N0cj1yLGUuX19pc0RhdGU9bixlLl9faXNBcnJheT1pLGUuX19pc1JlZ0V4cD1vLGUuX19nZXRSZWdFeHBGbGFncz1hLGV9KCk7Im9iamVjdCI9PXR5cGVvZiBlJiZlLmV4cG9ydHMmJihlLmV4cG9ydHM9cil9KS5jYWxsKHRoaXMsdCgiYnVmZmVyIikuQnVmZmVyKX0se2J1ZmZlcjo1MH1dLDU5OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3JldHVybiB0LWV9ZnVuY3Rpb24gaSh0LGUpe3ZhciByPXQubGVuZ3RoLGk9dC5sZW5ndGgtZS5sZW5ndGg7aWYoaSlyZXR1cm4gaTtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiAwO2Nhc2UgMTpyZXR1cm4gdFswXS1lWzBdO2Nhc2UgMjpyZXR1cm4gdFswXSt0WzFdLWVbMF0tZVsxXXx8byh0WzBdLHRbMV0pLW8oZVswXSxlWzFdKTtjYXNlIDM6dmFyIGE9dFswXSt0WzFdLHM9ZVswXStlWzFdO2lmKGk9YSt0WzJdLShzK2VbMl0pKXJldHVybiBpO3ZhciBsPW8odFswXSx0WzFdKSxjPW8oZVswXSxlWzFdKTtyZXR1cm4gbyhsLHRbMl0pLW8oYyxlWzJdKXx8byhsK3RbMl0sYSktbyhjK2VbMl0scyk7Y2FzZSA0OnZhciB1PXRbMF0saD10WzFdLGY9dFsyXSxkPXRbM10scD1lWzBdLGc9ZVsxXSx2PWVbMl0sbT1lWzNdO3JldHVybiB1K2grZitkLShwK2crdittKXx8byh1LGgsZixkKS1vKHAsZyx2LG0scCl8fG8odStoLHUrZix1K2QsaCtmLGgrZCxmK2QpLW8ocCtnLHArdixwK20sZyt2LGcrbSx2K20pfHxvKHUraCtmLHUraCtkLHUrZitkLGgrZitkKS1vKHArZyt2LHArZyttLHArdittLGcrdittKTtkZWZhdWx0OmZvcih2YXIgeT10LnNsaWNlKCkuc29ydChuKSxiPWUuc2xpY2UoKS5zb3J0KG4pLHg9MDtyPng7Kyt4KWlmKGk9eVt4XS1iW3hdKXJldHVybiBpO3JldHVybiAwfX1lLmV4cG9ydHM9aTt2YXIgbz1NYXRoLm1pbn0se31dLDYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5sZW5ndGg7aWYoMD09PWUpcmV0dXJuW107aWYoMT09PWUpcmV0dXJuW1swXV07dmFyIHI9dFswXS5sZW5ndGg7cmV0dXJuIDA9PT1yP1tdOjE9PT1yP2kodCk6Mj09PXI/byh0KTphKHQscil9dmFyIGk9dCgiLi9saWIvY2gxZCIpLG89dCgiLi9saWIvY2gyZCIpLGE9dCgiLi9saWIvY2huZCIpO2UuZXhwb3J0cz1ufSx7Ii4vbGliL2NoMWQiOjYxLCIuL2xpYi9jaDJkIjo2MiwiLi9saWIvY2huZCI6NjN9XSw2MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wLHI9MCxuPTE7bjx0Lmxlbmd0aDsrK24pdFtuXVswXTx0W2VdWzBdJiYoZT1uKSx0W25dWzBdPnRbcl1bMF0mJihyPW4pO3JldHVybiByPmU/W1tlXSxbcl1dOmU+cj9bW3JdLFtlXV06W1tlXV19ZS5leHBvcnRzPW59LHt9XSw2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlPWkodCkscj1lLmxlbmd0aDtpZigyPj1yKXJldHVybltdO2Zvcih2YXIgbj1uZXcgQXJyYXkociksbz1lW3ItMV0sYT0wO3I+YTsrK2Epe3ZhciBzPWVbYV07blthXT1bbyxzXSxvPXN9cmV0dXJuIG59ZS5leHBvcnRzPW47dmFyIGk9dCgibW9ub3RvbmUtY29udmV4LWh1bGwtMmQiKX0seyJtb25vdG9uZS1jb252ZXgtaHVsbC0yZCI6NjV9XSw2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPGUubGVuZ3RoOysraSluW2ldPXRbZVtpXV07Zm9yKHZhciBvPWUubGVuZ3RoLGk9MDtyPmk7KytpKWUuaW5kZXhPZihpKTwwJiYobltvKytdPXRbaV0pO3JldHVybiBufWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1lLmxlbmd0aCxpPTA7cj5pOysraSlmb3IodmFyIG89dFtpXSxhPTA7YTxvLmxlbmd0aDsrK2Epe3ZhciBzPW9bYV07aWYobj5zKW9bYV09ZVtzXTtlbHNle3MtPW47Zm9yKHZhciBsPTA7bj5sOysrbClzPj1lW2xdJiYocys9MSk7b1thXT1zfX1yZXR1cm4gdH1mdW5jdGlvbiBvKHQsZSl7dHJ5e3JldHVybiBhKHQsITApfWNhdGNoKHIpe3ZhciBvPXModCk7aWYoby5sZW5ndGg8PWUpcmV0dXJuW107dmFyIGw9bih0LG8pLGM9YShsLCEwKTtyZXR1cm4gaShjLG8pfX1lLmV4cG9ydHM9bzt2YXIgYT10KCJpbmNyZW1lbnRhbC1jb252ZXgtaHVsbCIpLHM9dCgiYWZmaW5lLWh1bGwiKX0seyJhZmZpbmUtaHVsbCI6NjQsImluY3JlbWVudGFsLWNvbnZleC1odWxsIjoxOTN9XSw2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheShlKzEpLG49MDtuPHQubGVuZ3RoOysrbilyW25dPXRbbl07Zm9yKHZhciBuPTA7bjw9dC5sZW5ndGg7KytuKXtmb3IodmFyIGk9dC5sZW5ndGg7ZT49aTsrK2kpe2Zvcih2YXIgYT1uZXcgQXJyYXkoZSkscz0wO2U+czsrK3MpYVtzXT1NYXRoLnBvdyhpKzEtbixzKTtyW2ldPWF9dmFyIGw9by5hcHBseSh2b2lkIDAscik7aWYobClyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO2lmKDA9PT1lKXJldHVybltdO2lmKDE9PT1lKXJldHVyblswXTtmb3IodmFyIHI9dFswXS5sZW5ndGgsaT1bdFswXV0sbz1bMF0sYT0xO2U+YTsrK2EpaWYoaS5wdXNoKHRbYV0pLG4oaSxyKSl7aWYoby5wdXNoKGEpLG8ubGVuZ3RoPT09cisxKXJldHVybiBvfWVsc2UgaS5wb3AoKTtyZXR1cm4gb31lLmV4cG9ydHM9aTt2YXIgbz10KCJyb2J1c3Qtb3JpZW50YXRpb24iKX0seyJyb2J1c3Qtb3JpZW50YXRpb24iOjIxNn1dLDY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5sZW5ndGg7aWYoMz5lKXtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtlPm47KytuKXJbbl09bjtyZXR1cm4gMj09PWUmJnRbMF1bMF09PT10WzFdWzBdJiZ0WzBdWzFdPT09dFsxXVsxXT9bMF06cn1mb3IodmFyIG89bmV3IEFycmF5KGUpLG49MDtlPm47KytuKW9bbl09bjtvLnNvcnQoZnVuY3Rpb24oZSxyKXt2YXIgbj10W2VdWzBdLXRbcl1bMF07cmV0dXJuIG4/bjp0W2VdWzFdLXRbcl1bMV19KTtmb3IodmFyIGE9W29bMF0sb1sxXV0scz1bb1swXSxvWzFdXSxuPTI7ZT5uOysrbil7Zm9yKHZhciBsPW9bbl0sYz10W2xdLHU9YS5sZW5ndGg7dT4xJiZpKHRbYVt1LTJdXSx0W2FbdS0xXV0sYyk8PTA7KXUtPTEsYS5wb3AoKTtmb3IoYS5wdXNoKGwpLHU9cy5sZW5ndGg7dT4xJiZpKHRbc1t1LTJdXSx0W3NbdS0xXV0sYyk+PTA7KXUtPTEscy5wb3AoKTtzLnB1c2gobCl9Zm9yKHZhciByPW5ldyBBcnJheShzLmxlbmd0aCthLmxlbmd0aC0yKSxoPTAsbj0wLGY9YS5sZW5ndGg7Zj5uOysrbilyW2grK109YVtuXTtmb3IodmFyIGQ9cy5sZW5ndGgtMjtkPjA7LS1kKXJbaCsrXT1zW2RdO3JldHVybiByfWUuZXhwb3J0cz1uO3ZhciBpPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpWzNdfSx7InJvYnVzdC1vcmllbnRhdGlvbiI6MjE2fV0sNjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3RoaXMuYXJnVHlwZXM9W10sdGhpcy5zaGltQXJncz1bXSx0aGlzLmFycmF5QXJncz1bXSx0aGlzLmFycmF5QmxvY2tJbmRpY2VzPVtdLHRoaXMuc2NhbGFyQXJncz1bXSx0aGlzLm9mZnNldEFyZ3M9W10sdGhpcy5vZmZzZXRBcmdJbmRleD1bXSx0aGlzLmluZGV4QXJncz1bXSx0aGlzLnNoYXBlQXJncz1bXSx0aGlzLmZ1bmNOYW1lPSIiLHRoaXMucHJlPW51bGwsdGhpcy5ib2R5PW51bGwsdGhpcy5wb3N0PW51bGwsdGhpcy5kZWJ1Zz0hMX1mdW5jdGlvbiBpKHQpe3ZhciBlPW5ldyBuO2UucHJlPXQucHJlLGUuYm9keT10LmJvZHksZS5wb3N0PXQucG9zdDt2YXIgcj10LmFyZ3Muc2xpY2UoMCk7ZS5hcmdUeXBlcz1yO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgYT1yW2ldO2lmKCJhcnJheSI9PT1hfHwib2JqZWN0Ij09dHlwZW9mIGEmJmEuYmxvY2tJbmRpY2VzKXtpZihlLmFyZ1R5cGVzW2ldPSJhcnJheSIsZS5hcnJheUFyZ3MucHVzaChpKSxlLmFycmF5QmxvY2tJbmRpY2VzLnB1c2goYS5ibG9ja0luZGljZXM/YS5ibG9ja0luZGljZXM6MCksZS5zaGltQXJncy5wdXNoKCJhcnJheSIraSksaTxlLnByZS5hcmdzLmxlbmd0aCYmZS5wcmUuYXJnc1tpXS5jb3VudD4wKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHByZSgpIGJsb2NrIG1heSBub3QgcmVmZXJlbmNlIGFycmF5IGFyZ3MiKTtpZihpPGUucG9zdC5hcmdzLmxlbmd0aCYmZS5wb3N0LmFyZ3NbaV0uY291bnQ+MCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBwb3N0KCkgYmxvY2sgbWF5IG5vdCByZWZlcmVuY2UgYXJyYXkgYXJncyIpfWVsc2UgaWYoInNjYWxhciI9PT1hKWUuc2NhbGFyQXJncy5wdXNoKGkpLGUuc2hpbUFyZ3MucHVzaCgic2NhbGFyIitpKTtlbHNlIGlmKCJpbmRleCI9PT1hKXtpZihlLmluZGV4QXJncy5wdXNoKGkpLGk8ZS5wcmUuYXJncy5sZW5ndGgmJmUucHJlLmFyZ3NbaV0uY291bnQ+MCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBwcmUoKSBibG9jayBtYXkgbm90IHJlZmVyZW5jZSBhcnJheSBpbmRleCIpO2lmKGk8ZS5ib2R5LmFyZ3MubGVuZ3RoJiZlLmJvZHkuYXJnc1tpXS5sdmFsdWUpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogYm9keSgpIGJsb2NrIG1heSBub3Qgd3JpdGUgdG8gYXJyYXkgaW5kZXgiKTtpZihpPGUucG9zdC5hcmdzLmxlbmd0aCYmZS5wb3N0LmFyZ3NbaV0uY291bnQ+MCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBwb3N0KCkgYmxvY2sgbWF5IG5vdCByZWZlcmVuY2UgYXJyYXkgaW5kZXgiKX1lbHNlIGlmKCJzaGFwZSI9PT1hKXtpZihlLnNoYXBlQXJncy5wdXNoKGkpLGk8ZS5wcmUuYXJncy5sZW5ndGgmJmUucHJlLmFyZ3NbaV0ubHZhbHVlKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHByZSgpIGJsb2NrIG1heSBub3Qgd3JpdGUgdG8gYXJyYXkgc2hhcGUiKTtpZihpPGUuYm9keS5hcmdzLmxlbmd0aCYmZS5ib2R5LmFyZ3NbaV0ubHZhbHVlKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IGJvZHkoKSBibG9jayBtYXkgbm90IHdyaXRlIHRvIGFycmF5IHNoYXBlIik7aWYoaTxlLnBvc3QuYXJncy5sZW5ndGgmJmUucG9zdC5hcmdzW2ldLmx2YWx1ZSl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBwb3N0KCkgYmxvY2sgbWF5IG5vdCB3cml0ZSB0byBhcnJheSBzaGFwZSIpfWVsc2V7aWYoIm9iamVjdCIhPXR5cGVvZiBhfHwhYS5vZmZzZXQpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogVW5rbm93biBhcmd1bWVudCB0eXBlICIrcltpXSk7ZS5hcmdUeXBlc1tpXT0ib2Zmc2V0IixlLm9mZnNldEFyZ3MucHVzaCh7YXJyYXk6YS5hcnJheSxvZmZzZXQ6YS5vZmZzZXR9KSxlLm9mZnNldEFyZ0luZGV4LnB1c2goaSl9fWlmKGUuYXJyYXlBcmdzLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBObyBhcnJheSBhcmd1bWVudHMgc3BlY2lmaWVkIik7aWYoZS5wcmUuYXJncy5sZW5ndGg+ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogVG9vIG1hbnkgYXJndW1lbnRzIGluIHByZSgpIGJsb2NrIik7aWYoZS5ib2R5LmFyZ3MubGVuZ3RoPnIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IFRvbyBtYW55IGFyZ3VtZW50cyBpbiBib2R5KCkgYmxvY2siKTtpZihlLnBvc3QuYXJncy5sZW5ndGg+ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogVG9vIG1hbnkgYXJndW1lbnRzIGluIHBvc3QoKSBibG9jayIpO3JldHVybiBlLmRlYnVnPSEhdC5wcmludENvZGV8fCEhdC5kZWJ1ZyxlLmZ1bmNOYW1lPXQuZnVuY05hbWV8fCJjd2lzZSIsZS5ibG9ja1NpemU9dC5ibG9ja1NpemV8fDY0LG8oZSl9dmFyIG89dCgiLi9saWIvdGh1bmsuanMiKTtlLmV4cG9ydHM9aX0seyIuL2xpYi90aHVuay5qcyI6Njh9XSw2NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbixpLG89dC5sZW5ndGgsYT1lLmFycmF5QXJncy5sZW5ndGgscz1lLmluZGV4QXJncy5sZW5ndGg+MCxsPVtdLGM9W10sdT0wLGg9MDtmb3Iobj0wO28+bjsrK24pYy5wdXNoKFsiaSIsbiwiPTAiXS5qb2luKCIiKSk7Zm9yKGk9MDthPmk7KytpKWZvcihuPTA7bz5uOysrbiloPXUsdT10W25dLDA9PT1uP2MucHVzaChbImQiLGksInMiLG4sIj10IixpLCJwIix1XS5qb2luKCIiKSk6Yy5wdXNoKFsiZCIsaSwicyIsbiwiPSh0IixpLCJwIix1LCItcyIsaCwiKnQiLGksInAiLGgsIikiXS5qb2luKCIiKSk7Zm9yKGwucHVzaCgidmFyICIrYy5qb2luKCIsIikpLG49by0xO24+PTA7LS1uKXU9dFtuXSxsLnB1c2goWyJmb3IoaSIsbiwiPTA7aSIsbiwiPHMiLHUsIjsrK2kiLG4sIil7Il0uam9pbigiIikpO2ZvcihsLnB1c2gociksbj0wO28+bjsrK24pe2ZvcihoPXUsdT10W25dLGk9MDthPmk7KytpKWwucHVzaChbInAiLGksIis9ZCIsaSwicyIsbl0uam9pbigiIikpO3MmJihuPjAmJmwucHVzaChbImluZGV4WyIsaCwiXS09cyIsaF0uam9pbigiIikpLGwucHVzaChbIisraW5kZXhbIix1LCJdIl0uam9pbigiIikpKSxsLnB1c2goIn0iKX1yZXR1cm4gbC5qb2luKCJcbiIpfWZ1bmN0aW9uIGkodCxlLHIsaSl7Zm9yKHZhciBvPWUubGVuZ3RoLGE9ci5hcnJheUFyZ3MubGVuZ3RoLHM9ci5ibG9ja1NpemUsbD1yLmluZGV4QXJncy5sZW5ndGg+MCxjPVtdLHU9MDthPnU7Kyt1KWMucHVzaChbInZhciBvZmZzZXQiLHUsIj1wIix1XS5qb2luKCIiKSk7Zm9yKHZhciB1PXQ7bz51OysrdSljLnB1c2goWyJmb3IodmFyIGoiK3UrIj1TU1siLGVbdV0sIl18MDtqIix1LCI+MDspeyJdLmpvaW4oIiIpKSxjLnB1c2goWyJpZihqIix1LCI8IixzLCIpeyJdLmpvaW4oIiIpKSxjLnB1c2goWyJzIixlW3VdLCI9aiIsdV0uam9pbigiIikpLGMucHVzaChbImoiLHUsIj0wIl0uam9pbigiIikpLGMucHVzaChbIn1lbHNle3MiLGVbdV0sIj0iLHNdLmpvaW4oIiIpKSxjLnB1c2goWyJqIix1LCItPSIscywifSJdLmpvaW4oIiIpKSxsJiZjLnB1c2goWyJpbmRleFsiLGVbdV0sIl09aiIsdV0uam9pbigiIikpO2Zvcih2YXIgdT0wO2E+dTsrK3Upe2Zvcih2YXIgaD1bIm9mZnNldCIrdV0sZj10O28+ZjsrK2YpaC5wdXNoKFsiaiIsZiwiKnQiLHUsInAiLGVbZl1dLmpvaW4oIiIpKTtjLnB1c2goWyJwIix1LCI9KCIsaC5qb2luKCIrIiksIikiXS5qb2luKCIiKSl9Yy5wdXNoKG4oZSxyLGkpKTtmb3IodmFyIHU9dDtvPnU7Kyt1KWMucHVzaCgifSIpO3JldHVybiBjLmpvaW4oIlxuIil9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9MCxyPXRbMF0ubGVuZ3RoO3I+ZTspe2Zvcih2YXIgbj0xO248dC5sZW5ndGg7KytuKWlmKHRbbl1bZV0hPT10WzBdW2VdKXJldHVybiBlOysrZX1yZXR1cm4gZX1mdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49dC5ib2R5LGk9W10sbz1bXSxhPTA7YTx0LmFyZ3MubGVuZ3RoOysrYSl7dmFyIHM9dC5hcmdzW2FdO2lmKCEocy5jb3VudDw9MCkpe3ZhciBsPW5ldyBSZWdFeHAocy5uYW1lLCJnIiksYz0iIix1PWUuYXJyYXlBcmdzLmluZGV4T2YoYSk7c3dpdGNoKGUuYXJnVHlwZXNbYV0pe2Nhc2Uib2Zmc2V0Ijp2YXIgaD1lLm9mZnNldEFyZ0luZGV4LmluZGV4T2YoYSksZj1lLm9mZnNldEFyZ3NbaF07dT1mLmFycmF5LGM9IitxIitoO2Nhc2UiYXJyYXkiOmM9InAiK3UrYzt2YXIgZD0ibCIrYSxwPSJhIit1O2lmKDA9PT1lLmFycmF5QmxvY2tJbmRpY2VzW3VdKTE9PT1zLmNvdW50PyJnZW5lcmljIj09PXJbdV0/cy5sdmFsdWU/KGkucHVzaChbInZhciAiLGQsIj0iLHAsIi5nZXQoIixjLCIpIl0uam9pbigiIikpLG49bi5yZXBsYWNlKGwsZCksby5wdXNoKFtwLCIuc2V0KCIsYywiLCIsZCwiKSJdLmpvaW4oIiIpKSk6bj1uLnJlcGxhY2UobCxbcCwiLmdldCgiLGMsIikiXS5qb2luKCIiKSk6bj1uLnJlcGxhY2UobCxbcCwiWyIsYywiXSJdLmpvaW4oIiIpKToiZ2VuZXJpYyI9PT1yW3VdPyhpLnB1c2goWyJ2YXIgIixkLCI9IixwLCIuZ2V0KCIsYywiKSJdLmpvaW4oIiIpKSxuPW4ucmVwbGFjZShsLGQpLHMubHZhbHVlJiZvLnB1c2goW3AsIi5zZXQoIixjLCIsIixkLCIpIl0uam9pbigiIikpKTooaS5wdXNoKFsidmFyICIsZCwiPSIscCwiWyIsYywiXSJdLmpvaW4oIiIpKSxuPW4ucmVwbGFjZShsLGQpLHMubHZhbHVlJiZvLnB1c2goW3AsIlsiLGMsIl09IixkXS5qb2luKCIiKSkpO2Vsc2V7Zm9yKHZhciBnPVtzLm5hbWVdLHY9W2NdLG09MDttPE1hdGguYWJzKGUuYXJyYXlCbG9ja0luZGljZXNbdV0pO20rKylnLnB1c2goIlxccypcXFsoW15cXF1dKylcXF0iKSx2LnB1c2goIiQiKyhtKzEpKyIqdCIrdSsiYiIrbSk7aWYobD1uZXcgUmVnRXhwKGcuam9pbigiIiksImciKSxjPXYuam9pbigiKyIpLCJnZW5lcmljIj09PXJbdV0pdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogR2VuZXJpYyBhcnJheXMgbm90IHN1cHBvcnRlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGJsb2NrcyEiKTtuPW4ucmVwbGFjZShsLFtwLCJbIixjLCJdIl0uam9pbigiIikpfWJyZWFrO2Nhc2Uic2NhbGFyIjpuPW4ucmVwbGFjZShsLCJZIitlLnNjYWxhckFyZ3MuaW5kZXhPZihhKSk7YnJlYWs7Y2FzZSJpbmRleCI6bj1uLnJlcGxhY2UobCwiaW5kZXgiKTticmVhaztjYXNlInNoYXBlIjpuPW4ucmVwbGFjZShsLCJzaGFwZSIpfX19cmV0dXJuW2kuam9pbigiXG4iKSxuLG8uam9pbigiXG4iKV0uam9pbigiXG4iKS50cmltKCl9ZnVuY3Rpb24gcyh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPSEwLG49MDtuPHQubGVuZ3RoOysrbil7dmFyIGk9dFtuXSxvPWkubWF0Y2goL1xkKy8pO289bz9vWzBdOiIiLDA9PT1pLmNoYXJBdCgwKT9lW25dPSJ1IitpLmNoYXJBdCgxKStvOmVbbl09aS5jaGFyQXQoMCkrbyxuPjAmJihyPXImJmVbbl09PT1lW24tMV0pfXJldHVybiByP2VbMF06ZS5qb2luKCIiKX1mdW5jdGlvbiBsKHQsZSl7Zm9yKHZhciByPWVbMV0ubGVuZ3RoLU1hdGguYWJzKHQuYXJyYXlCbG9ja0luZGljZXNbMF0pfDAsbD1uZXcgQXJyYXkodC5hcnJheUFyZ3MubGVuZ3RoKSx1PW5ldyBBcnJheSh0LmFycmF5QXJncy5sZW5ndGgpLGg9MDtoPHQuYXJyYXlBcmdzLmxlbmd0aDsrK2gpdVtoXT1lWzIqaF0sbFtoXT1lWzIqaCsxXTtmb3IodmFyIGY9W10sZD1bXSxwPVtdLGc9W10sdj1bXSxoPTA7aDx0LmFycmF5QXJncy5sZW5ndGg7KytoKXt0LmFycmF5QmxvY2tJbmRpY2VzW2hdPDA/KHAucHVzaCgwKSxnLnB1c2gociksZi5wdXNoKHIpLGQucHVzaChyK3QuYXJyYXlCbG9ja0luZGljZXNbaF0pKToocC5wdXNoKHQuYXJyYXlCbG9ja0luZGljZXNbaF0pLGcucHVzaCh0LmFycmF5QmxvY2tJbmRpY2VzW2hdK3IpLGYucHVzaCgwKSxkLnB1c2godC5hcnJheUJsb2NrSW5kaWNlc1toXSkpO2Zvcih2YXIgbT1bXSx5PTA7eTxsW2hdLmxlbmd0aDt5KyspcFtoXTw9bFtoXVt5XSYmbFtoXVt5XTxnW2hdJiZtLnB1c2gobFtoXVt5XS1wW2hdKTt2LnB1c2gobSl9Zm9yKHZhciBiPVsiU1MiXSx4PVsiJ3VzZSBzdHJpY3QnIl0sXz1bXSx5PTA7cj55OysreSlfLnB1c2goWyJzIix5LCI9U1NbIix5LCJdIl0uam9pbigiIikpO2Zvcih2YXIgaD0wO2g8dC5hcnJheUFyZ3MubGVuZ3RoOysraCl7Yi5wdXNoKCJhIitoKSxiLnB1c2goInQiK2gpLGIucHVzaCgicCIraCk7Zm9yKHZhciB5PTA7cj55OysreSlfLnB1c2goWyJ0IixoLCJwIix5LCI9dCIsaCwiWyIscFtoXSt5LCJdIl0uam9pbigiIikpO2Zvcih2YXIgeT0wO3k8TWF0aC5hYnModC5hcnJheUJsb2NrSW5kaWNlc1toXSk7Kyt5KV8ucHVzaChbInQiLGgsImIiLHksIj10IixoLCJbIixmW2hdK3ksIl0iXS5qb2luKCIiKSl9Zm9yKHZhciBoPTA7aDx0LnNjYWxhckFyZ3MubGVuZ3RoOysraCliLnB1c2goIlkiK2gpO2lmKHQuc2hhcGVBcmdzLmxlbmd0aD4wJiZfLnB1c2goInNoYXBlPVNTLnNsaWNlKDApIiksdC5pbmRleEFyZ3MubGVuZ3RoPjApe2Zvcih2YXIgdz1uZXcgQXJyYXkociksaD0wO3I+aDsrK2gpd1toXT0iMCI7Xy5wdXNoKFsiaW5kZXg9WyIsdy5qb2luKCIsIiksIl0iXS5qb2luKCIiKSl9Zm9yKHZhciBoPTA7aDx0Lm9mZnNldEFyZ3MubGVuZ3RoOysraCl7Zm9yKHZhciBBPXQub2Zmc2V0QXJnc1toXSxrPVtdLHk9MDt5PEEub2Zmc2V0Lmxlbmd0aDsrK3kpMCE9PUEub2Zmc2V0W3ldJiYoMT09PUEub2Zmc2V0W3ldP2sucHVzaChbInQiLEEuYXJyYXksInAiLHldLmpvaW4oIiIpKTprLnB1c2goW0Eub2Zmc2V0W3ldLCIqdCIsQS5hcnJheSwicCIseV0uam9pbigiIikpKTswPT09ay5sZW5ndGg/Xy5wdXNoKCJxIitoKyI9MCIpOl8ucHVzaChbInEiLGgsIj0iLGsuam9pbigiKyIpXS5qb2luKCIiKSl9dmFyIE09YyhbXS5jb25jYXQodC5wcmUudGhpc1ZhcnMpLmNvbmNhdCh0LmJvZHkudGhpc1ZhcnMpLmNvbmNhdCh0LnBvc3QudGhpc1ZhcnMpKTtfPV8uY29uY2F0KE0pLHgucHVzaCgidmFyICIrXy5qb2luKCIsIikpO2Zvcih2YXIgaD0wO2g8dC5hcnJheUFyZ3MubGVuZ3RoOysraCl4LnB1c2goInAiK2grInw9MCIpO3QucHJlLmJvZHkubGVuZ3RoPjMmJngucHVzaChhKHQucHJlLHQsdSkpO3ZhciBUPWEodC5ib2R5LHQsdSksRT1vKHYpO3I+RT94LnB1c2goaShFLHZbMF0sdCxUKSk6eC5wdXNoKG4odlswXSx0LFQpKSx0LnBvc3QuYm9keS5sZW5ndGg+MyYmeC5wdXNoKGEodC5wb3N0LHQsdSkpLHQuZGVidWcmJmNvbnNvbGUubG9nKCItLS0tLUdlbmVyYXRlZCBjd2lzZSByb3V0aW5lIGZvciAiLGUsIjpcbiIreC5qb2luKCJcbiIpKyJcbi0tLS0tLS0tLS0iKTt2YXIgTD1bdC5mdW5jTmFtZXx8InVubmFtZWQiLCJfY3dpc2VfbG9vcF8iLGxbMF0uam9pbigicyIpLCJtIixFLHModSldLmpvaW4oIiIpLFM9bmV3IEZ1bmN0aW9uKFsiZnVuY3Rpb24gIixMLCIoIixiLmpvaW4oIiwiKSwiKXsiLHguam9pbigiXG4iKSwifSByZXR1cm4gIixMXS5qb2luKCIiKSk7cmV0dXJuIFMoKX12YXIgYz10KCJ1bmlxIik7ZS5leHBvcnRzPWx9LHt1bmlxOjIzNn1dLDY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9WyIndXNlIHN0cmljdCciLCJ2YXIgQ0FDSEVEPXt9Il0scj1bXSxuPXQuZnVuY05hbWUrIl9jd2lzZV90aHVuayI7ZS5wdXNoKFsicmV0dXJuIGZ1bmN0aW9uICIsbiwiKCIsdC5zaGltQXJncy5qb2luKCIsIiksIil7Il0uam9pbigiIikpO2Zvcih2YXIgbz1bXSxhPVtdLHM9W1siYXJyYXkiLHQuYXJyYXlBcmdzWzBdLCIuc2hhcGUuc2xpY2UoIixNYXRoLm1heCgwLHQuYXJyYXlCbG9ja0luZGljZXNbMF0pLHQuYXJyYXlCbG9ja0luZGljZXNbMF08MD8iLCIrdC5hcnJheUJsb2NrSW5kaWNlc1swXSsiKSI6IikiXS5qb2luKCIiKV0sbD1bXSxjPVtdLHU9MDt1PHQuYXJyYXlBcmdzLmxlbmd0aDsrK3Upe3ZhciBoPXQuYXJyYXlBcmdzW3VdO3IucHVzaChbInQiLGgsIj1hcnJheSIsaCwiLmR0eXBlLCIsInIiLGgsIj1hcnJheSIsaCwiLm9yZGVyIl0uam9pbigiIikpLG8ucHVzaCgidCIraCksby5wdXNoKCJyIitoKSxhLnB1c2goInQiK2gpLGEucHVzaCgiciIraCsiLmpvaW4oKSIpLHMucHVzaCgiYXJyYXkiK2grIi5kYXRhIikscy5wdXNoKCJhcnJheSIraCsiLnN0cmlkZSIpLHMucHVzaCgiYXJyYXkiK2grIi5vZmZzZXR8MCIpLHU+MCYmKGwucHVzaCgiYXJyYXkiK3QuYXJyYXlBcmdzWzBdKyIuc2hhcGUubGVuZ3RoPT09YXJyYXkiK2grIi5zaGFwZS5sZW5ndGgrIisoTWF0aC5hYnModC5hcnJheUJsb2NrSW5kaWNlc1swXSktTWF0aC5hYnModC5hcnJheUJsb2NrSW5kaWNlc1t1XSkpKSxjLnB1c2goImFycmF5Iit0LmFycmF5QXJnc1swXSsiLnNoYXBlW3NoYXBlSW5kZXgrIitNYXRoLm1heCgwLHQuYXJyYXlCbG9ja0luZGljZXNbMF0pKyJdPT09YXJyYXkiK2grIi5zaGFwZVtzaGFwZUluZGV4KyIrTWF0aC5tYXgoMCx0LmFycmF5QmxvY2tJbmRpY2VzW3VdKSsiXSIpKX10LmFycmF5QXJncy5sZW5ndGg+MSYmKGUucHVzaCgiaWYgKCEoIitsLmpvaW4oIiAmJiAiKSsiKSkgdGhyb3cgbmV3IEVycm9yKCdjd2lzZTogQXJyYXlzIGRvIG5vdCBhbGwgaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb25hbGl0eSEnKSIpLGUucHVzaCgiZm9yKHZhciBzaGFwZUluZGV4PWFycmF5Iit0LmFycmF5QXJnc1swXSsiLnNoYXBlLmxlbmd0aC0iK01hdGguYWJzKHQuYXJyYXlCbG9ja0luZGljZXNbMF0pKyI7IHNoYXBlSW5kZXgtLT4wOykgeyIpLGUucHVzaCgiaWYgKCEoIitjLmpvaW4oIiAmJiAiKSsiKSkgdGhyb3cgbmV3IEVycm9yKCdjd2lzZTogQXJyYXlzIGRvIG5vdCBhbGwgaGF2ZSB0aGUgc2FtZSBzaGFwZSEnKSIpLGUucHVzaCgifSIpKTtmb3IodmFyIHU9MDt1PHQuc2NhbGFyQXJncy5sZW5ndGg7Kyt1KXMucHVzaCgic2NhbGFyIit0LnNjYWxhckFyZ3NbdV0pO3IucHVzaChbInR5cGU9WyIsYS5qb2luKCIsIiksIl0uam9pbigpIl0uam9pbigiIikpLHIucHVzaCgicHJvYz1DQUNIRURbdHlwZV0iKSxlLnB1c2goInZhciAiK3Iuam9pbigiLCIpKSxlLnB1c2goWyJpZighcHJvYyl7IiwiQ0FDSEVEW3R5cGVdPXByb2M9Y29tcGlsZShbIixvLmpvaW4oIiwiKSwiXSl9IiwicmV0dXJuIHByb2MoIixzLmpvaW4oIiwiKSwiKX0iXS5qb2luKCIiKSksdC5kZWJ1ZyYmY29uc29sZS5sb2coIi0tLS0tR2VuZXJhdGVkIHRodW5rOlxuIitlLmpvaW4oIlxuIikrIlxuLS0tLS0tLS0tLSIpO3ZhciBmPW5ldyBGdW5jdGlvbigiY29tcGlsZSIsZS5qb2luKCJcbiIpKTtyZXR1cm4gZihpLmJpbmQodm9pZCAwLHQpKX12YXIgaT10KCIuL2NvbXBpbGUuanMiKTtlLmV4cG9ydHM9bn0seyIuL2NvbXBpbGUuanMiOjY3fV0sNjk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiY3dpc2UtY29tcGlsZXIiKX0seyJjd2lzZS1jb21waWxlciI6NjZ9XSw3MDpbZnVuY3Rpb24oZSxyLG4peyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJih0Lm93bmVyRG9jdW1lbnR8fHQuZG9jdW1lbnR8fHQpLmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBuKHQpe3JldHVybiB0JiYodC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXcpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZT50Py0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbD09PXQ/TmFOOit0fWZ1bmN0aW9uIGEodCl7cmV0dXJuIWlzTmFOKHQpfWZ1bmN0aW9uIHModCl7cmV0dXJue2xlZnQ6ZnVuY3Rpb24oZSxyLG4saSl7Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKG49MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoaT1lLmxlbmd0aCk7aT5uOyl7dmFyIG89bitpPj4+MTt0KGVbb10scik8MD9uPW8rMTppPW99cmV0dXJuIG59LHJpZ2h0OmZ1bmN0aW9uKGUscixuLGkpe2Zvcihhcmd1bWVudHMubGVuZ3RoPDMmJihuPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYmKGk9ZS5sZW5ndGgpO2k+bjspe3ZhciBvPW4raT4+PjE7dChlW29dLHIpPjA/aT1vOm49bysxfXJldHVybiBufX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gYyh0KXtmb3IodmFyIGU9MTt0KmUlMTspZSo9MTA7cmV0dXJuIGV9ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgciBpbiBlKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxyLHt2YWx1ZTplW3JdLGVudW1lcmFibGU6ITF9KX1mdW5jdGlvbiBoKCl7dGhpcy5fPU9iamVjdC5jcmVhdGUobnVsbCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4odCs9IiIpPT09QWF8fHRbMF09PT1rYT9rYSt0OnR9ZnVuY3Rpb24gZCh0KXtyZXR1cm4odCs9IiIpWzBdPT09a2E/dC5zbGljZSgxKTp0fWZ1bmN0aW9uIHAodCl7cmV0dXJuIGYodClpbiB0aGlzLl99ZnVuY3Rpb24gZyh0KXtyZXR1cm4odD1mKHQpKWluIHRoaXMuXyYmZGVsZXRlIHRoaXMuX1t0XX1mdW5jdGlvbiB2KCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuXyl0LnB1c2goZChlKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbSgpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMuXykrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24geSgpe2Zvcih2YXIgdCBpbiB0aGlzLl8pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYigpe3RoaXMuXz1PYmplY3QuY3JlYXRlKG51bGwpfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHR9ZnVuY3Rpb24gXyh0LGUscil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ci5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q6bn19ZnVuY3Rpb24gdyh0LGUpe2lmKGUgaW4gdClyZXR1cm4gZTtlPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtmb3IodmFyIHI9MCxuPU1hLmxlbmd0aDtuPnI7KytyKXt2YXIgaT1NYVtyXStlO2lmKGkgaW4gdClyZXR1cm4gaX19ZnVuY3Rpb24gQSgpe31mdW5jdGlvbiBrKCl7fWZ1bmN0aW9uIE0odCl7ZnVuY3Rpb24gZSgpe2Zvcih2YXIgZSxuPXIsaT0tMSxvPW4ubGVuZ3RoOysraTxvOykoZT1uW2ldLm9uKSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHR9dmFyIHI9W10sbj1uZXcgaDtyZXR1cm4gZS5vbj1mdW5jdGlvbihlLGkpe3ZhciBvLGE9bi5nZXQoZSk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9hJiZhLm9uOihhJiYoYS5vbj1udWxsLHI9ci5zbGljZSgwLG89ci5pbmRleE9mKGEpKS5jb25jYXQoci5zbGljZShvKzEpKSxuLnJlbW92ZShlKSksaSYmci5wdXNoKG4uc2V0KGUse29uOml9KSksdCl9LGV9ZnVuY3Rpb24gVCgpe3VhLmV2ZW50LnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gRSgpe2Zvcih2YXIgdCxlPXVhLmV2ZW50O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIEwodCl7Zm9yKHZhciBlPW5ldyBrLHI9MCxuPWFyZ3VtZW50cy5sZW5ndGg7KytyPG47KWVbYXJndW1lbnRzW3JdXT1NKGUpO3JldHVybiBlLm9mPWZ1bmN0aW9uKHIsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RyeXt2YXIgbz1pLnNvdXJjZUV2ZW50PXVhLmV2ZW50O2kudGFyZ2V0PXQsdWEuZXZlbnQ9aSxlW2kudHlwZV0uYXBwbHkocixuKX1maW5hbGx5e3VhLmV2ZW50PW99fX0sZX1mdW5jdGlvbiBTKHQpe3JldHVybiBFYSh0LFBhKSx0fWZ1bmN0aW9uIEModCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiBMYSh0LHRoaXMpfX1mdW5jdGlvbiBQKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gU2EodCx0aGlzKX19ZnVuY3Rpb24geih0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX1mdW5jdGlvbiBuKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfWZ1bmN0aW9uIGkoKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfWZ1bmN0aW9uIG8oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX1mdW5jdGlvbiBhKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LHIpfWZ1bmN0aW9uIHMoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxyKX1yZXR1cm4gdD11YS5ucy5xdWFsaWZ5KHQpLG51bGw9PWU/dC5sb2NhbD9uOnI6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dC5sb2NhbD9zOmE6dC5sb2NhbD9vOml9ZnVuY3Rpb24gUih0KXtyZXR1cm4gdC50cmltKCkucmVwbGFjZSgvXHMrL2csIiAiKX1mdW5jdGlvbiBPKHQpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefFxccyspIit1YS5yZXF1b3RlKHQpKyIoPzpcXHMrfCQpIiwiZyIpfWZ1bmN0aW9uIEkodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBOKHQsZSl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgcj0tMTsrK3I8aTspdFtyXSh0aGlzLGUpfWZ1bmN0aW9uIG4oKXtmb3IodmFyIHI9LTEsbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsrK3I8aTspdFtyXSh0aGlzLG4pfXQ9SSh0KS5tYXAoaik7dmFyIGk9dC5sZW5ndGg7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/bjpyfWZ1bmN0aW9uIGoodCl7dmFyIGU9Tyh0KTtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihpPXIuY2xhc3NMaXN0KXJldHVybiBuP2kuYWRkKHQpOmkucmVtb3ZlKHQpO3ZhciBpPXIuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjtuPyhlLmxhc3RJbmRleD0wLGUudGVzdChpKXx8ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixSKGkrIiAiK3QpKSk6ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixSKGkucmVwbGFjZShlLCIgIikpKX19ZnVuY3Rpb24gRih0LGUscil7ZnVuY3Rpb24gbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9ZnVuY3Rpb24gaSgpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLHIpfWZ1bmN0aW9uIG8oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4scil9cmV0dXJuIG51bGw9PWU/bjoiZnVuY3Rpb24iPT10eXBlb2YgZT9vOml9ZnVuY3Rpb24gRCh0LGUpe2Z1bmN0aW9uIHIoKXtkZWxldGUgdGhpc1t0XX1mdW5jdGlvbiBuKCl7dGhpc1t0XT1lfWZ1bmN0aW9uIGkoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09cn1yZXR1cm4gbnVsbD09ZT9yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2k6bn1mdW5jdGlvbiBCKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQscj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gcj09PXphJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT16YT9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMocix0KX1mdW5jdGlvbiByKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX1yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Oih0PXVhLm5zLnF1YWxpZnkodCkpLmxvY2FsP3I6ZX1mdW5jdGlvbiBVKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVih0KXtyZXR1cm57X19kYXRhX186dH19ZnVuY3Rpb24gcSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQ2EodGhpcyx0KX19ZnVuY3Rpb24gSCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aHx8KHQ9aSksZnVuY3Rpb24oZSxyKXtyZXR1cm4gZSYmcj90KGUuX19kYXRhX18sci5fX2RhdGFfXyk6IWUtIXJ9fWZ1bmN0aW9uIEcodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO24+cjtyKyspZm9yKHZhciBpLG89dFtyXSxhPTAscz1vLmxlbmd0aDtzPmE7YSsrKShpPW9bYV0pJiZlKGksYSxyKTtyZXR1cm4gdH1mdW5jdGlvbiBZKHQpe3JldHVybiBFYSh0LE9hKSx0fWZ1bmN0aW9uIFgodCl7dmFyIGUscjtyZXR1cm4gZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9dFtvXS51cGRhdGUsbD1zLmxlbmd0aDtmb3IobyE9ciYmKHI9byxlPTApLGk+PWUmJihlPWkrMSk7IShhPXNbZV0pJiYrK2U8bDspO3JldHVybiBhfX1mdW5jdGlvbiBXKHQsZSxyKXtmdW5jdGlvbiBuKCl7dmFyIGU9dGhpc1thXTtlJiYodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSxlLiQpLGRlbGV0ZSB0aGlzW2FdKX1mdW5jdGlvbiBpKCl7dmFyIGk9bChlLGZhKGFyZ3VtZW50cykpO24uY2FsbCh0aGlzKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIodCx0aGlzW2FdPWksaS4kPXIpLGkuXz1lfWZ1bmN0aW9uIG8oKXt2YXIgZSxyPW5ldyBSZWdFeHAoIl5fX29uKFteLl0rKSIrdWEucmVxdW90ZSh0KSsiJCIpO2Zvcih2YXIgbiBpbiB0aGlzKWlmKGU9bi5tYXRjaChyKSl7dmFyIGk9dGhpc1tuXTt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZVsxXSxpLGkuJCksZGVsZXRlIHRoaXNbbl19fXZhciBhPSJfX29uIit0LHM9dC5pbmRleE9mKCIuIiksbD1aO3M+MCYmKHQ9dC5zbGljZSgwLHMpKTt2YXIgYz1JYS5nZXQodCk7cmV0dXJuIGMmJih0PWMsbD0kKSxzP2U/aTpuOmU/QTpvfWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dWEuZXZlbnQ7dWEuZXZlbnQ9cixlWzBdPXRoaXMuX19kYXRhX187dHJ5e3QuYXBwbHkodGhpcyxlKX1maW5hbGx5e3VhLmV2ZW50PW59fX1mdW5jdGlvbiAkKHQsZSl7dmFyIHI9Wih0LGUpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC5yZWxhdGVkVGFyZ2V0O24mJihuPT09ZXx8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpKXx8ci5jYWxsKGUsdCl9fWZ1bmN0aW9uIEsodCl7dmFyIHI9Ii5kcmFnc3VwcHJlc3MtIisgKytqYSxpPSJjbGljayIrcixvPXVhLnNlbGVjdChuKHQpKS5vbigidG91Y2htb3ZlIityLFQpLm9uKCJkcmFnc3RhcnQiK3IsVCkub24oInNlbGVjdHN0YXJ0IityLFQpOwppZihudWxsPT1OYSYmKE5hPSJvbnNlbGVjdHN0YXJ0ImluIHQ/ITE6dyh0LnN0eWxlLCJ1c2VyU2VsZWN0IikpLE5hKXt2YXIgYT1lKHQpLnN0eWxlLHM9YVtOYV07YVtOYV09Im5vbmUifXJldHVybiBmdW5jdGlvbih0KXtpZihvLm9uKHIsbnVsbCksTmEmJihhW05hXT1zKSx0KXt2YXIgZT1mdW5jdGlvbigpe28ub24oaSxudWxsKX07by5vbihpLGZ1bmN0aW9uKCl7VCgpLGUoKX0sITApLHNldFRpbWVvdXQoZSwwKX19fWZ1bmN0aW9uIFEodCxlKXtlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKTt2YXIgcj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihyLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1yLmNyZWF0ZVNWR1BvaW50KCk7aWYoMD5GYSl7dmFyIG89bih0KTtpZihvLnNjcm9sbFh8fG8uc2Nyb2xsWSl7cj11YS5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInN2ZyIpLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOiJub25lIn0sImltcG9ydGFudCIpO3ZhciBhPXJbMF1bMF0uZ2V0U2NyZWVuQ1RNKCk7RmE9IShhLmZ8fGEuZSksci5yZW1vdmUoKX19cmV0dXJuIEZhPyhpLng9ZS5wYWdlWCxpLnk9ZS5wYWdlWSk6KGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSksaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW2kueCxpLnldfXZhciBzPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1zLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1zLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gSigpe3JldHVybiB1YS5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0PjA/MTowPnQ/LTE6MH1mdW5jdGlvbiBldCh0LGUscil7cmV0dXJuKGVbMF0tdFswXSkqKHJbMV0tdFsxXSktKGVbMV0tdFsxXSkqKHJbMF0tdFswXSl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIHQ+MT8wOi0xPnQ/VWE6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIG50KHQpe3JldHVybiB0PjE/SGE6LTE+dD8tSGE6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIGl0KHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfWZ1bmN0aW9uIG90KHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIGF0KHQpe3JldHVybigodD1NYXRoLmV4cCgyKnQpKS0xKS8odCsxKX1mdW5jdGlvbiBzdCh0KXtyZXR1cm4odD1NYXRoLnNpbih0LzIpKSp0fWZ1bmN0aW9uIGx0KCl7fWZ1bmN0aW9uIGN0KHQsZSxyKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGN0Pyh0aGlzLmg9K3QsdGhpcy5zPStlLHZvaWQodGhpcy5sPStyKSk6YXJndW1lbnRzLmxlbmd0aDwyP3QgaW5zdGFuY2VvZiBjdD9uZXcgY3QodC5oLHQucyx0LmwpOkF0KCIiK3Qsa3QsY3QpOm5ldyBjdCh0LGUscil9ZnVuY3Rpb24gdXQodCxlLHIpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQ+MzYwP3QtPTM2MDowPnQmJih0Kz0zNjApLDYwPnQ/bysoYS1vKSp0LzYwOjE4MD50P2E6MjQwPnQ/bysoYS1vKSooMjQwLXQpLzYwOm99ZnVuY3Rpb24gaSh0KXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqbih0KSl9dmFyIG8sYTtyZXR1cm4gdD1pc05hTih0KT8wOih0JT0zNjApPDA/dCszNjA6dCxlPWlzTmFOKGUpPzA6MD5lPzA6ZT4xPzE6ZSxyPTA+cj8wOnI+MT8xOnIsYT0uNT49cj9yKigxK2UpOnIrZS1yKmUsbz0yKnItYSxuZXcgYnQoaSh0KzEyMCksaSh0KSxpKHQtMTIwKSl9ZnVuY3Rpb24gaHQodCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaHQ/KHRoaXMuaD0rdCx0aGlzLmM9K2Usdm9pZCh0aGlzLmw9K3IpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9mIGh0P25ldyBodCh0LmgsdC5jLHQubCk6dCBpbnN0YW5jZW9mIGR0P2d0KHQubCx0LmEsdC5iKTpndCgodD1NdCgodD11YS5yZ2IodCkpLnIsdC5nLHQuYikpLmwsdC5hLHQuYik6bmV3IGh0KHQsZSxyKX1mdW5jdGlvbiBmdCh0LGUscil7cmV0dXJuIGlzTmFOKHQpJiYodD0wKSxpc05hTihlKSYmKGU9MCksbmV3IGR0KHIsTWF0aC5jb3ModCo9R2EpKmUsTWF0aC5zaW4odCkqZSl9ZnVuY3Rpb24gZHQodCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgZHQ/KHRoaXMubD0rdCx0aGlzLmE9K2Usdm9pZCh0aGlzLmI9K3IpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9mIGR0P25ldyBkdCh0LmwsdC5hLHQuYik6dCBpbnN0YW5jZW9mIGh0P2Z0KHQuaCx0LmMsdC5sKTpNdCgodD1idCh0KSkucix0LmcsdC5iKTpuZXcgZHQodCxlLHIpfWZ1bmN0aW9uIHB0KHQsZSxyKXt2YXIgbj0odCsxNikvMTE2LGk9bitlLzUwMCxvPW4tci8yMDA7cmV0dXJuIGk9dnQoaSkqcnMsbj12dChuKSpucyxvPXZ0KG8pKmlzLG5ldyBidCh5dCgzLjI0MDQ1NDIqaS0xLjUzNzEzODUqbi0uNDk4NTMxNCpvKSx5dCgtLjk2OTI2NippKzEuODc2MDEwOCpuKy4wNDE1NTYqbykseXQoLjA1NTY0MzQqaS0uMjA0MDI1OSpuKzEuMDU3MjI1MipvKSl9ZnVuY3Rpb24gZ3QodCxlLHIpe3JldHVybiB0PjA/bmV3IGh0KE1hdGguYXRhbjIocixlKSpZYSxNYXRoLnNxcnQoZSplK3IqciksdCk6bmV3IGh0KE5hTixOYU4sdCl9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIHQ+LjIwNjg5MzAzND90KnQqdDoodC00LzI5KS83Ljc4NzAzN31mdW5jdGlvbiBtdCh0KXtyZXR1cm4gdD4uMDA4ODU2P01hdGgucG93KHQsMS8zKTo3Ljc4NzAzNyp0KzQvMjl9ZnVuY3Rpb24geXQodCl7cmV0dXJuIE1hdGgucm91bmQoMjU1KiguMDAzMDQ+PXQ/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KSl9ZnVuY3Rpb24gYnQodCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYnQ/KHRoaXMucj1+fnQsdGhpcy5nPX5+ZSx2b2lkKHRoaXMuYj1+fnIpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9mIGJ0P25ldyBidCh0LnIsdC5nLHQuYik6QXQoIiIrdCxidCx1dCk6bmV3IGJ0KHQsZSxyKX1mdW5jdGlvbiB4dCh0KXtyZXR1cm4gbmV3IGJ0KHQ+PjE2LHQ+PjgmMjU1LDI1NSZ0KX1mdW5jdGlvbiBfdCh0KXtyZXR1cm4geHQodCkrIiJ9ZnVuY3Rpb24gd3QodCl7cmV0dXJuIDE2PnQ/IjAiK01hdGgubWF4KDAsdCkudG9TdHJpbmcoMTYpOk1hdGgubWluKDI1NSx0KS50b1N0cmluZygxNil9ZnVuY3Rpb24gQXQodCxlLHIpe3ZhciBuLGksbyxhPTAscz0wLGw9MDtpZihuPS8oW2Etel0rKVwoKC4qKVwpLy5leGVjKHQ9dC50b0xvd2VyQ2FzZSgpKSlzd2l0Y2goaT1uWzJdLnNwbGl0KCIsIiksblsxXSl7Y2FzZSJoc2wiOnJldHVybiByKHBhcnNlRmxvYXQoaVswXSkscGFyc2VGbG9hdChpWzFdKS8xMDAscGFyc2VGbG9hdChpWzJdKS8xMDApO2Nhc2UicmdiIjpyZXR1cm4gZShFdChpWzBdKSxFdChpWzFdKSxFdChpWzJdKSl9cmV0dXJuKG89c3MuZ2V0KHQpKT9lKG8ucixvLmcsby5iKToobnVsbD09dHx8IiMiIT09dC5jaGFyQXQoMCl8fGlzTmFOKG89cGFyc2VJbnQodC5zbGljZSgxKSwxNikpfHwoND09PXQubGVuZ3RoPyhhPSgzODQwJm8pPj40LGE9YT4+NHxhLHM9MjQwJm8scz1zPj40fHMsbD0xNSZvLGw9bDw8NHxsKTo3PT09dC5sZW5ndGgmJihhPSgxNjcxMTY4MCZvKT4+MTYscz0oNjUyODAmbyk+PjgsbD0yNTUmbykpLGUoYSxzLGwpKX1mdW5jdGlvbiBrdCh0LGUscil7dmFyIG4saSxvPU1hdGgubWluKHQvPTI1NSxlLz0yNTUsci89MjU1KSxhPU1hdGgubWF4KHQsZSxyKSxzPWEtbyxsPShhK28pLzI7cmV0dXJuIHM/KGk9LjU+bD9zLyhhK28pOnMvKDItYS1vKSxuPXQ9PWE/KGUtcikvcysocj5lPzY6MCk6ZT09YT8oci10KS9zKzI6KHQtZSkvcys0LG4qPTYwKToobj1OYU4saT1sPjAmJjE+bD8wOm4pLG5ldyBjdChuLGksbCl9ZnVuY3Rpb24gTXQodCxlLHIpe3Q9VHQodCksZT1UdChlKSxyPVR0KHIpO3ZhciBuPW10KCguNDEyNDU2NCp0Ky4zNTc1NzYxKmUrLjE4MDQzNzUqcikvcnMpLGk9bXQoKC4yMTI2NzI5KnQrLjcxNTE1MjIqZSsuMDcyMTc1KnIpL25zKSxvPW10KCguMDE5MzMzOSp0Ky4xMTkxOTIqZSsuOTUwMzA0MSpyKS9pcyk7cmV0dXJuIGR0KDExNippLTE2LDUwMCoobi1pKSwyMDAqKGktbykpfWZ1bmN0aW9uIFR0KHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIEV0KHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIiUiPT09dC5jaGFyQXQodC5sZW5ndGgtMSk/TWF0aC5yb3VuZCgyLjU1KmUpOmV9ZnVuY3Rpb24gTHQodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBTdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHImJihuPXIscj1udWxsKSxDdChlLHIsdCxuKX19ZnVuY3Rpb24gQ3QodCxlLHIsbil7ZnVuY3Rpb24gaSgpe3ZhciB0LGU9bC5zdGF0dXM7aWYoIWUmJnp0KGwpfHxlPj0yMDAmJjMwMD5lfHwzMDQ9PT1lKXt0cnl7dD1yLmNhbGwobyxsKX1jYXRjaChuKXtyZXR1cm4gdm9pZCBhLmVycm9yLmNhbGwobyxuKX1hLmxvYWQuY2FsbChvLHQpfWVsc2UgYS5lcnJvci5jYWxsKG8sbCl9dmFyIG89e30sYT11YS5kaXNwYXRjaCgiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIikscz17fSxsPW5ldyBYTUxIdHRwUmVxdWVzdCxjPW51bGw7cmV0dXJuIXRoaXMuWERvbWFpblJlcXVlc3R8fCJ3aXRoQ3JlZGVudGlhbHMiaW4gbHx8IS9eKGh0dHAocyk/Oik/XC9cLy8udGVzdCh0KXx8KGw9bmV3IFhEb21haW5SZXF1ZXN0KSwib25sb2FkImluIGw/bC5vbmxvYWQ9bC5vbmVycm9yPWk6bC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtsLnJlYWR5U3RhdGU+MyYmaSgpfSxsLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24odCl7dmFyIGU9dWEuZXZlbnQ7dWEuZXZlbnQ9dDt0cnl7YS5wcm9ncmVzcy5jYWxsKG8sbCl9ZmluYWxseXt1YS5ldmVudD1lfX0sby5oZWFkZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD0odCsiIikudG9Mb3dlckNhc2UoKSxhcmd1bWVudHMubGVuZ3RoPDI/c1t0XToobnVsbD09ZT9kZWxldGUgc1t0XTpzW3RdPWUrIiIsbyl9LG8ubWltZVR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOnQrIiIsbyk6ZX0sby5yZXNwb25zZVR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxvKTpjfSxvLnJlc3BvbnNlPWZ1bmN0aW9uKHQpe3JldHVybiByPXQsb30sWyJnZXQiLCJwb3N0Il0uZm9yRWFjaChmdW5jdGlvbih0KXtvW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIG8uc2VuZC5hcHBseShvLFt0XS5jb25jYXQoZmEoYXJndW1lbnRzKSkpfX0pLG8uc2VuZD1mdW5jdGlvbihyLG4saSl7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoaT1uLG49bnVsbCksbC5vcGVuKHIsdCwhMCksbnVsbD09ZXx8ImFjY2VwdCJpbiBzfHwocy5hY2NlcHQ9ZSsiLCovKiIpLGwuc2V0UmVxdWVzdEhlYWRlcilmb3IodmFyIHUgaW4gcylsLnNldFJlcXVlc3RIZWFkZXIodSxzW3VdKTtyZXR1cm4gbnVsbCE9ZSYmbC5vdmVycmlkZU1pbWVUeXBlJiZsLm92ZXJyaWRlTWltZVR5cGUoZSksbnVsbCE9YyYmKGwucmVzcG9uc2VUeXBlPWMpLG51bGwhPWkmJm8ub24oImVycm9yIixpKS5vbigibG9hZCIsZnVuY3Rpb24odCl7aShudWxsLHQpfSksYS5iZWZvcmVzZW5kLmNhbGwobyxsKSxsLnNlbmQobnVsbD09bj9udWxsOm4pLG99LG8uYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbC5hYm9ydCgpLG99LHVhLnJlYmluZChvLGEsIm9uIiksbnVsbD09bj9vOm8uZ2V0KFB0KG4pKX1mdW5jdGlvbiBQdCh0KXtyZXR1cm4gMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7dChudWxsPT1lP3I6bnVsbCl9OnR9ZnVuY3Rpb24genQodCl7dmFyIGU9dC5yZXNwb25zZVR5cGU7cmV0dXJuIGUmJiJ0ZXh0IiE9PWU/dC5yZXNwb25zZTp0LnJlc3BvbnNlVGV4dH1mdW5jdGlvbiBSdCh0LGUscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aDsyPm4mJihlPTApLDM+biYmKHI9RGF0ZS5ub3coKSk7dmFyIGk9citlLG89e2M6dCx0OmksbjpudWxsfTtyZXR1cm4gY3M/Y3Mubj1vOmxzPW8sY3M9byx1c3x8KGhzPWNsZWFyVGltZW91dChocyksdXM9MSxmcyhPdCkpLG99ZnVuY3Rpb24gT3QoKXt2YXIgdD1JdCgpLGU9TnQoKS10O2U+MjQ/KGlzRmluaXRlKGUpJiYoY2xlYXJUaW1lb3V0KGhzKSxocz1zZXRUaW1lb3V0KE90LGUpKSx1cz0wKToodXM9MSxmcyhPdCkpfWZ1bmN0aW9uIEl0KCl7Zm9yKHZhciB0PURhdGUubm93KCksZT1scztlOyl0Pj1lLnQmJmUuYyh0LWUudCkmJihlLmM9bnVsbCksZT1lLm47cmV0dXJuIHR9ZnVuY3Rpb24gTnQoKXtmb3IodmFyIHQsZT1scyxyPTEvMDtlOyllLmM/KGUudDxyJiYocj1lLnQpLGU9KHQ9ZSkubik6ZT10P3Qubj1lLm46bHM9ZS5uO3JldHVybiBjcz10LHJ9ZnVuY3Rpb24ganQodCxlKXtyZXR1cm4gZS0odD9NYXRoLmNlaWwoTWF0aC5sb2codCkvTWF0aC5MTjEwKToxKX1mdW5jdGlvbiBGdCh0LGUpe3ZhciByPU1hdGgucG93KDEwLDMqd2EoOC1lKSk7cmV0dXJue3NjYWxlOmU+OD9mdW5jdGlvbih0KXtyZXR1cm4gdC9yfTpmdW5jdGlvbih0KXtyZXR1cm4gdCpyfSxzeW1ib2w6dH19ZnVuY3Rpb24gRHQodCl7dmFyIGU9dC5kZWNpbWFsLHI9dC50aG91c2FuZHMsbj10Lmdyb3VwaW5nLGk9dC5jdXJyZW5jeSxvPW4mJnI/ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgsbz1bXSxhPTAscz1uWzBdLGw9MDtpPjAmJnM+MCYmKGwrcysxPmUmJihzPU1hdGgubWF4KDEsZS1sKSksby5wdXNoKHQuc3Vic3RyaW5nKGktPXMsaStzKSksISgobCs9cysxKT5lKSk7KXM9blthPShhKzEpJW4ubGVuZ3RoXTtyZXR1cm4gby5yZXZlcnNlKCkuam9pbihyKX06eDtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9cHMuZXhlYyh0KSxuPXJbMV18fCIgIixhPXJbMl18fCI+IixzPXJbM118fCItIixsPXJbNF18fCIiLGM9cls1XSx1PStyWzZdLGg9cls3XSxmPXJbOF0sZD1yWzldLHA9MSxnPSIiLHY9IiIsbT0hMSx5PSEwO3N3aXRjaChmJiYoZj0rZi5zdWJzdHJpbmcoMSkpLChjfHwiMCI9PT1uJiYiPSI9PT1hKSYmKGM9bj0iMCIsYT0iPSIpLGQpe2Nhc2UibiI6aD0hMCxkPSJnIjticmVhaztjYXNlIiUiOnA9MTAwLHY9IiUiLGQ9ImYiO2JyZWFrO2Nhc2UicCI6cD0xMDAsdj0iJSIsZD0iciI7YnJlYWs7Y2FzZSJiIjpjYXNlIm8iOmNhc2UieCI6Y2FzZSJYIjoiIyI9PT1sJiYoZz0iMCIrZC50b0xvd2VyQ2FzZSgpKTtjYXNlImMiOnk9ITE7Y2FzZSJkIjptPSEwLGY9MDticmVhaztjYXNlInMiOnA9LTEsZD0iciJ9IiQiPT09bCYmKGc9aVswXSx2PWlbMV0pLCJyIiE9ZHx8Znx8KGQ9ImciKSxudWxsIT1mJiYoImciPT1kP2Y9TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxmKSk6ImUiIT1kJiYiZiIhPWR8fChmPU1hdGgubWF4KDAsTWF0aC5taW4oMjAsZikpKSksZD1ncy5nZXQoZCl8fEJ0O3ZhciBiPWMmJmg7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPXY7aWYobSYmdCUxKXJldHVybiIiO3ZhciBpPTA+dHx8MD09PXQmJjA+MS90Pyh0PS10LCItIik6Ii0iPT09cz8iIjpzO2lmKDA+cCl7dmFyIGw9dWEuZm9ybWF0UHJlZml4KHQsZik7dD1sLnNjYWxlKHQpLHI9bC5zeW1ib2wrdn1lbHNlIHQqPXA7dD1kKHQsZik7dmFyIHgsXyx3PXQubGFzdEluZGV4T2YoIi4iKTtpZigwPncpe3ZhciBBPXk/dC5sYXN0SW5kZXhPZigiZSIpOi0xOzA+QT8oeD10LF89IiIpOih4PXQuc3Vic3RyaW5nKDAsQSksXz10LnN1YnN0cmluZyhBKSl9ZWxzZSB4PXQuc3Vic3RyaW5nKDAsdyksXz1lK3Quc3Vic3RyaW5nKHcrMSk7IWMmJmgmJih4PW8oeCwxLzApKTt2YXIgaz1nLmxlbmd0aCt4Lmxlbmd0aCtfLmxlbmd0aCsoYj8wOmkubGVuZ3RoKSxNPXU+az9uZXcgQXJyYXkoaz11LWsrMSkuam9pbihuKToiIjtyZXR1cm4gYiYmKHg9byhNK3gsTS5sZW5ndGg/dS1fLmxlbmd0aDoxLzApKSxpKz1nLHQ9eCtfLCgiPCI9PT1hP2krdCtNOiI+Ij09PWE/TStpK3Q6Il4iPT09YT9NLnN1YnN0cmluZygwLGs+Pj0xKStpK3QrTS5zdWJzdHJpbmcoayk6aSsoYj90Ok0rdCkpK3J9fX1mdW5jdGlvbiBCdCh0KXtyZXR1cm4gdCsiIn1mdW5jdGlvbiBVdCgpe3RoaXMuXz1uZXcgRGF0ZShhcmd1bWVudHMubGVuZ3RoPjE/RGF0ZS5VVEMuYXBwbHkodGhpcyxhcmd1bWVudHMpOmFyZ3VtZW50c1swXSl9ZnVuY3Rpb24gVnQodCxlLHIpe2Z1bmN0aW9uIG4oZSl7dmFyIHI9dChlKSxuPW8ociwxKTtyZXR1cm4gbi1lPmUtcj9yOm59ZnVuY3Rpb24gaShyKXtyZXR1cm4gZShyPXQobmV3IG1zKHItMSkpLDEpLHJ9ZnVuY3Rpb24gbyh0LHIpe3JldHVybiBlKHQ9bmV3IG1zKCt0KSxyKSx0fWZ1bmN0aW9uIGEodCxuLG8pe3ZhciBhPWkodCkscz1bXTtpZihvPjEpZm9yKDtuPmE7KXIoYSklb3x8cy5wdXNoKG5ldyBEYXRlKCthKSksZShhLDEpO2Vsc2UgZm9yKDtuPmE7KXMucHVzaChuZXcgRGF0ZSgrYSkpLGUoYSwxKTtyZXR1cm4gc31mdW5jdGlvbiBzKHQsZSxyKXt0cnl7bXM9VXQ7dmFyIG49bmV3IFV0O3JldHVybiBuLl89dCxhKG4sZSxyKX1maW5hbGx5e21zPURhdGV9fXQuZmxvb3I9dCx0LnJvdW5kPW4sdC5jZWlsPWksdC5vZmZzZXQ9byx0LnJhbmdlPWE7dmFyIGw9dC51dGM9cXQodCk7cmV0dXJuIGwuZmxvb3I9bCxsLnJvdW5kPXF0KG4pLGwuY2VpbD1xdChpKSxsLm9mZnNldD1xdChvKSxsLnJhbmdlPXMsdH1mdW5jdGlvbiBxdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt0cnl7bXM9VXQ7dmFyIG49bmV3IFV0O3JldHVybiBuLl89ZSx0KG4scikuX31maW5hbGx5e21zPURhdGV9fX1mdW5jdGlvbiBIdCh0KXtmdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciByLGksbyxhPVtdLHM9LTEsbD0wOysrczxuOykzNz09PXQuY2hhckNvZGVBdChzKSYmKGEucHVzaCh0LnNsaWNlKGwscykpLG51bGwhPShpPWJzW3I9dC5jaGFyQXQoKytzKV0pJiYocj10LmNoYXJBdCgrK3MpKSwobz1MW3JdKSYmKHI9byhlLG51bGw9PWk/ImUiPT09cj8iICI6IjAiOmkpKSxhLnB1c2gociksbD1zKzEpO3JldHVybiBhLnB1c2godC5zbGljZShsLHMpKSxhLmpvaW4oIiIpfXZhciBuPXQubGVuZ3RoO3JldHVybiBlLnBhcnNlPWZ1bmN0aW9uKGUpe3ZhciBuPXt5OjE5MDAsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjAsWjpudWxsfSxpPXIobix0LGUsMCk7aWYoaSE9ZS5sZW5ndGgpcmV0dXJuIG51bGw7InAiaW4gbiYmKG4uSD1uLkglMTIrMTIqbi5wKTt2YXIgbz1udWxsIT1uLlomJm1zIT09VXQsYT1uZXcobz9VdDptcyk7cmV0dXJuImoiaW4gbj9hLnNldEZ1bGxZZWFyKG4ueSwwLG4uaik6IlciaW4gbnx8IlUiaW4gbj8oInciaW4gbnx8KG4udz0iVyJpbiBuPzE6MCksYS5zZXRGdWxsWWVhcihuLnksMCwxKSxhLnNldEZ1bGxZZWFyKG4ueSwwLCJXImluIG4/KG4udys2KSU3Kzcqbi5XLShhLmdldERheSgpKzUpJTc6bi53Kzcqbi5VLShhLmdldERheSgpKzYpJTcpKTphLnNldEZ1bGxZZWFyKG4ueSxuLm0sbi5kKSxhLnNldEhvdXJzKG4uSCsobi5aLzEwMHwwKSxuLk0rbi5aJTEwMCxuLlMsbi5MKSxvP2EuXzphfSxlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9ZnVuY3Rpb24gcih0LGUscixuKXtmb3IodmFyIGksbyxhLHM9MCxsPWUubGVuZ3RoLGM9ci5sZW5ndGg7bD5zOyl7aWYobj49YylyZXR1cm4tMTtpZihpPWUuY2hhckNvZGVBdChzKyspLDM3PT09aSl7aWYoYT1lLmNoYXJBdChzKyspLG89U1thIGluIGJzP2UuY2hhckF0KHMrKyk6YV0sIW98fChuPW8odCxyLG4pKTwwKXJldHVybi0xfWVsc2UgaWYoaSE9ci5jaGFyQ29kZUF0KG4rKykpcmV0dXJuLTF9cmV0dXJuIG59ZnVuY3Rpb24gbih0LGUscil7dy5sYXN0SW5kZXg9MDt2YXIgbj13LmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQudz1BLmdldChuWzBdLnRvTG93ZXJDYXNlKCkpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGkodCxlLHIpe3gubGFzdEluZGV4PTA7dmFyIG49eC5leGVjKGUuc2xpY2UocikpO3JldHVybiBuPyh0Lnc9Xy5nZXQoblswXS50b0xvd2VyQ2FzZSgpKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvKHQsZSxyKXtULmxhc3RJbmRleD0wO3ZhciBuPVQuZXhlYyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC5tPUUuZ2V0KG5bMF0udG9Mb3dlckNhc2UoKSkscituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYSh0LGUscil7ay5sYXN0SW5kZXg9MDt2YXIgbj1rLmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQubT1NLmdldChuWzBdLnRvTG93ZXJDYXNlKCkpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHModCxlLG4pe3JldHVybiByKHQsTC5jLnRvU3RyaW5nKCksZSxuKX1mdW5jdGlvbiBsKHQsZSxuKXtyZXR1cm4gcih0LEwueC50b1N0cmluZygpLGUsbil9ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIHIodCxMLlgudG9TdHJpbmcoKSxlLG4pfWZ1bmN0aW9uIHUodCxlLHIpe3ZhciBuPWIuZ2V0KGUuc2xpY2UocixyKz0yKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gbnVsbD09bj8tMToodC5wPW4scil9dmFyIGg9dC5kYXRlVGltZSxmPXQuZGF0ZSxkPXQudGltZSxwPXQucGVyaW9kcyxnPXQuZGF5cyx2PXQuc2hvcnREYXlzLG09dC5tb250aHMseT10LnNob3J0TW9udGhzO2UudXRjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIodCl7dHJ5e21zPVV0O3ZhciBlPW5ldyBtcztyZXR1cm4gZS5fPXQsbihlKX1maW5hbGx5e21zPURhdGV9fXZhciBuPWUodCk7cmV0dXJuIHIucGFyc2U9ZnVuY3Rpb24odCl7dHJ5e21zPVV0O3ZhciBlPW4ucGFyc2UodCk7cmV0dXJuIGUmJmUuX31maW5hbGx5e21zPURhdGV9fSxyLnRvU3RyaW5nPW4udG9TdHJpbmcscn0sZS5tdWx0aT1lLnV0Yy5tdWx0aT11ZTt2YXIgYj11YS5tYXAoKSx4PVl0KGcpLF89WHQoZyksdz1ZdCh2KSxBPVh0KHYpLGs9WXQobSksTT1YdChtKSxUPVl0KHkpLEU9WHQoeSk7cC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7Yi5zZXQodC50b0xvd2VyQ2FzZSgpLGUpfSk7dmFyIEw9e2E6ZnVuY3Rpb24odCl7cmV0dXJuIHZbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIGdbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIHlbdC5nZXRNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gbVt0LmdldE1vbnRoKCldfSxjOmUoaCksZDpmdW5jdGlvbih0LGUpe3JldHVybiBHdCh0LmdldERhdGUoKSxlLDIpfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KHQuZ2V0RGF0ZSgpLGUsMil9LEg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3QodC5nZXRIb3VycygpLGUsMil9LEk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3QodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfSxqOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KDErdnMuZGF5T2ZZZWFyKHQpLGUsMyl9LEw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3QodC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfSxtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KHQuZ2V0TW9udGgoKSsxLGUsMil9LE06ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3QodC5nZXRNaW51dGVzKCksZSwyKX0scDpmdW5jdGlvbih0KXtyZXR1cm4gcFsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUzpmdW5jdGlvbih0LGUpe3JldHVybiBHdCh0LmdldFNlY29uZHMoKSxlLDIpfSxVOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KHZzLnN1bmRheU9mWWVhcih0KSxlLDIpfSx3OmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERheSgpfSxXOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KHZzLm1vbmRheU9mWWVhcih0KSxlLDIpfSx4OmUoZiksWDplKGQpLHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3QodC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfSxZOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX0sWjpsZSwiJSI6ZnVuY3Rpb24oKXtyZXR1cm4iJSJ9fSxTPXthOm4sQTppLGI6byxCOmEsYzpzLGQ6cmUsZTpyZSxIOmllLEk6aWUsajpuZSxMOnNlLG06ZWUsTTpvZSxwOnUsUzphZSxVOlp0LHc6V3QsVzokdCx4OmwsWDpjLHk6UXQsWTpLdCxaOkp0LCIlIjpjZX07cmV0dXJuIGV9ZnVuY3Rpb24gR3QodCxlLHIpe3ZhciBuPTA+dD8iLSI6IiIsaT0obj8tdDp0KSsiIixvPWkubGVuZ3RoO3JldHVybiBuKyhyPm8/bmV3IEFycmF5KHItbysxKS5qb2luKGUpK2k6aSl9ZnVuY3Rpb24gWXQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKHVhLnJlcXVvdGUpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBYdCh0KXtmb3IodmFyIGU9bmV3IGgscj0tMSxuPXQubGVuZ3RoOysrcjxuOyllLnNldCh0W3JdLnRvTG93ZXJDYXNlKCkscik7cmV0dXJuIGV9ZnVuY3Rpb24gV3QodCxlLHIpe3hzLmxhc3RJbmRleD0wO3ZhciBuPXhzLmV4ZWMoZS5zbGljZShyLHIrMSkpO3JldHVybiBuPyh0Lnc9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWnQodCxlLHIpe3hzLmxhc3RJbmRleD0wO3ZhciBuPXhzLmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQuVT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiAkdCh0LGUscil7eHMubGFzdEluZGV4PTA7dmFyIG49eHMuZXhlYyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC5XPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEt0KHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzQpKTtyZXR1cm4gbj8odC55PStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFF0KHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC55PXRlKCtuWzBdKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBKdCh0LGUscil7cmV0dXJuL15bKy1dXGR7NH0kLy50ZXN0KGU9ZS5zbGljZShyLHIrNSkpPyh0Llo9LWUscis1KTotMX1mdW5jdGlvbiB0ZSh0KXtyZXR1cm4gdCsodD42OD8xOTAwOjJlMyl9ZnVuY3Rpb24gZWUodCxlLHIpe3hzLmxhc3RJbmRleD0wO3ZhciBuPXhzLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0Lm09blswXS0xLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHJlKHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5kPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG5lKHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8odC5qPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGllKHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5IPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG9lKHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5NPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGFlKHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5TPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHNlKHQsZSxyKXt4cy5sYXN0SW5kZXg9MDt2YXIgbj14cy5leGVjKGUuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8odC5MPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGxlKHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKSxyPWU+MD8iLSI6IisiLG49d2EoZSkvNjB8MCxpPXdhKGUpJTYwO3JldHVybiByK0d0KG4sIjAiLDIpK0d0KGksIjAiLDIpfWZ1bmN0aW9uIGNlKHQsZSxyKXtfcy5sYXN0SW5kZXg9MDt2YXIgbj1fcy5leGVjKGUuc2xpY2UocixyKzEpKTtyZXR1cm4gbj9yK25bMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIHVlKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPS0xOysrcjxlOyl0W3JdWzBdPXRoaXModFtyXVswXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0wLG49dFtyXTshblsxXShlKTspbj10Wysrcl07cmV0dXJuIG5bMF0oZSl9fWZ1bmN0aW9uIGhlKCl7fWZ1bmN0aW9uIGZlKHQsZSxyKXt2YXIgbj1yLnM9dCtlLGk9bi10LG89bi1pO3IudD10LW8rKGUtaSl9ZnVuY3Rpb24gZGUodCxlKXt0JiZNcy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpJiZNc1t0LnR5cGVdKHQsZSl9ZnVuY3Rpb24gcGUodCxlLHIpe3ZhciBuLGk9LTEsbz10Lmxlbmd0aC1yO2ZvcihlLmxpbmVTdGFydCgpOysraTxvOyluPXRbaV0sZS5wb2ludChuWzBdLG5bMV0sblsyXSk7ZS5saW5lRW5kKCl9ZnVuY3Rpb24gZ2UodCxlKXt2YXIgcj0tMSxuPXQubGVuZ3RoO2ZvcihlLnBvbHlnb25TdGFydCgpOysrcjxuOylwZSh0W3JdLGUsMSk7ZS5wb2x5Z29uRW5kKCl9ZnVuY3Rpb24gdmUoKXtmdW5jdGlvbiB0KHQsZSl7dCo9R2EsZT1lKkdhLzIrVWEvNDt2YXIgcj10LW4sYT1yPj0wPzE6LTEscz1hKnIsbD1NYXRoLmNvcyhlKSxjPU1hdGguc2luKGUpLHU9bypjLGg9aSpsK3UqTWF0aC5jb3MocyksZj11KmEqTWF0aC5zaW4ocyk7RXMuYWRkKE1hdGguYXRhbjIoZixoKSksbj10LGk9bCxvPWN9dmFyIGUscixuLGksbztMcy5wb2ludD1mdW5jdGlvbihhLHMpe0xzLnBvaW50PXQsbj0oZT1hKSpHYSxpPU1hdGguY29zKHM9KHI9cykqR2EvMitVYS80KSxvPU1hdGguc2luKHMpfSxMcy5saW5lRW5kPWZ1bmN0aW9uKCl7dChlLHIpfX1mdW5jdGlvbiBtZSh0KXt2YXIgZT10WzBdLHI9dFsxXSxuPU1hdGguY29zKHIpO3JldHVybltuKk1hdGguY29zKGUpLG4qTWF0aC5zaW4oZSksTWF0aC5zaW4ocildfWZ1bmN0aW9uIHllKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIGJlKHQsZSl7cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVbMV0tdFsxXSplWzBdXX1mdW5jdGlvbiB4ZSh0LGUpe3RbMF0rPWVbMF0sdFsxXSs9ZVsxXSx0WzJdKz1lWzJdfWZ1bmN0aW9uIF9lKHQsZSl7cmV0dXJuW3RbMF0qZSx0WzFdKmUsdFsyXSplXX1mdW5jdGlvbiB3ZSh0KXt2YXIgZT1NYXRoLnNxcnQodFswXSp0WzBdK3RbMV0qdFsxXSt0WzJdKnRbMl0pO3RbMF0vPWUsdFsxXS89ZSx0WzJdLz1lfWZ1bmN0aW9uIEFlKHQpe3JldHVybltNYXRoLmF0YW4yKHRbMV0sdFswXSksbnQodFsyXSldfWZ1bmN0aW9uIGtlKHQsZSl7cmV0dXJuIHdhKHRbMF0tZVswXSk8RGEmJndhKHRbMV0tZVsxXSk8RGF9ZnVuY3Rpb24gTWUodCxlKXt0Kj1HYTt2YXIgcj1NYXRoLmNvcyhlKj1HYSk7VGUocipNYXRoLmNvcyh0KSxyKk1hdGguc2luKHQpLE1hdGguc2luKGUpKX1mdW5jdGlvbiBUZSh0LGUscil7KytTcyxQcys9KHQtUHMpL1NzLHpzKz0oZS16cykvU3MsUnMrPShyLVJzKS9Tc31mdW5jdGlvbiBFZSgpe2Z1bmN0aW9uIHQodCxpKXt0Kj1HYTt2YXIgbz1NYXRoLmNvcyhpKj1HYSksYT1vKk1hdGguY29zKHQpLHM9bypNYXRoLnNpbih0KSxsPU1hdGguc2luKGkpLGM9TWF0aC5hdGFuMihNYXRoLnNxcnQoKGM9cipsLW4qcykqYysoYz1uKmEtZSpsKSpjKyhjPWUqcy1yKmEpKmMpLGUqYStyKnMrbipsKTtDcys9YyxPcys9YyooZSsoZT1hKSksSXMrPWMqKHIrKHI9cykpLE5zKz1jKihuKyhuPWwpKSxUZShlLHIsbil9dmFyIGUscixuO0JzLnBvaW50PWZ1bmN0aW9uKGksbyl7aSo9R2E7dmFyIGE9TWF0aC5jb3Mobyo9R2EpO2U9YSpNYXRoLmNvcyhpKSxyPWEqTWF0aC5zaW4oaSksbj1NYXRoLnNpbihvKSxCcy5wb2ludD10LFRlKGUscixuKX19ZnVuY3Rpb24gTGUoKXtCcy5wb2ludD1NZX1mdW5jdGlvbiBTZSgpe2Z1bmN0aW9uIHQodCxlKXt0Kj1HYTt2YXIgcj1NYXRoLmNvcyhlKj1HYSksYT1yKk1hdGguY29zKHQpLHM9cipNYXRoLnNpbih0KSxsPU1hdGguc2luKGUpLGM9aSpsLW8qcyx1PW8qYS1uKmwsaD1uKnMtaSphLGY9TWF0aC5zcXJ0KGMqYyt1KnUraCpoKSxkPW4qYStpKnMrbypsLHA9ZiYmLXJ0KGQpL2YsZz1NYXRoLmF0YW4yKGYsZCk7anMrPXAqYyxGcys9cCp1LERzKz1wKmgsQ3MrPWcsT3MrPWcqKG4rKG49YSkpLElzKz1nKihpKyhpPXMpKSxOcys9Zyoobysobz1sKSksVGUobixpLG8pfXZhciBlLHIsbixpLG87QnMucG9pbnQ9ZnVuY3Rpb24oYSxzKXtlPWEscj1zLEJzLnBvaW50PXQsYSo9R2E7dmFyIGw9TWF0aC5jb3Mocyo9R2EpO249bCpNYXRoLmNvcyhhKSxpPWwqTWF0aC5zaW4oYSksbz1NYXRoLnNpbihzKSxUZShuLGksbyl9LEJzLmxpbmVFbmQ9ZnVuY3Rpb24oKXt0KGUsciksQnMubGluZUVuZD1MZSxCcy5wb2ludD1NZX19ZnVuY3Rpb24gQ2UodCxlKXtmdW5jdGlvbiByKHIsbil7cmV0dXJuIHI9dChyLG4pLGUoclswXSxyWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYoci5pbnZlcnQ9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcj1lLmludmVydChyLG4pLHImJnQuaW52ZXJ0KHJbMF0sclsxXSl9KSxyfWZ1bmN0aW9uIFBlKCl7cmV0dXJuITB9ZnVuY3Rpb24gemUodCxlLHIsbixpKXt2YXIgbz1bXSxhPVtdO2lmKHQuZm9yRWFjaChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUscj10WzBdLG49dFtlXTtpZihrZShyLG4pKXtpLmxpbmVTdGFydCgpO2Zvcih2YXIgcz0wO2U+czsrK3MpaS5wb2ludCgocj10W3NdKVswXSxyWzFdKTtyZXR1cm4gdm9pZCBpLmxpbmVFbmQoKX12YXIgbD1uZXcgT2Uocix0LG51bGwsITApLGM9bmV3IE9lKHIsbnVsbCxsLCExKTtsLm89YyxvLnB1c2gobCksYS5wdXNoKGMpLGw9bmV3IE9lKG4sdCxudWxsLCExKSxjPW5ldyBPZShuLG51bGwsbCwhMCksbC5vPWMsby5wdXNoKGwpLGEucHVzaChjKX19KSxhLnNvcnQoZSksUmUobyksUmUoYSksby5sZW5ndGgpe2Zvcih2YXIgcz0wLGw9cixjPWEubGVuZ3RoO2M+czsrK3MpYVtzXS5lPWw9IWw7Zm9yKHZhciB1LGgsZj1vWzBdOzspe2Zvcih2YXIgZD1mLHA9ITA7ZC52OylpZigoZD1kLm4pPT09ZilyZXR1cm47dT1kLnosaS5saW5lU3RhcnQoKTtkb3tpZihkLnY9ZC5vLnY9ITAsZC5lKXtpZihwKWZvcih2YXIgcz0wLGM9dS5sZW5ndGg7Yz5zOysrcylpLnBvaW50KChoPXVbc10pWzBdLGhbMV0pO2Vsc2UgbihkLngsZC5uLngsMSxpKTtkPWQubn1lbHNle2lmKHApe3U9ZC5wLno7Zm9yKHZhciBzPXUubGVuZ3RoLTE7cz49MDstLXMpaS5wb2ludCgoaD11W3NdKVswXSxoWzFdKX1lbHNlIG4oZC54LGQucC54LC0xLGkpO2Q9ZC5wfWQ9ZC5vLHU9ZC56LHA9IXB9d2hpbGUoIWQudik7aS5saW5lRW5kKCl9fX1mdW5jdGlvbiBSZSh0KXtpZihlPXQubGVuZ3RoKXtmb3IodmFyIGUscixuPTAsaT10WzBdOysrbjxlOylpLm49cj10W25dLHIucD1pLGk9cjtpLm49cj10WzBdLHIucD1pfX1mdW5jdGlvbiBPZSh0LGUscixuKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89cix0aGlzLmU9bix0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIEllKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIGEoZSxyKXt2YXIgbj1pKGUscik7dChlPW5bMF0scj1uWzFdKSYmby5wb2ludChlLHIpfWZ1bmN0aW9uIHModCxlKXt2YXIgcj1pKHQsZSk7di5wb2ludChyWzBdLHJbMV0pfWZ1bmN0aW9uIGwoKXt5LnBvaW50PXMsdi5saW5lU3RhcnQoKX1mdW5jdGlvbiBjKCl7eS5wb2ludD1hLHYubGluZUVuZCgpfWZ1bmN0aW9uIHUodCxlKXtnLnB1c2goW3QsZV0pO3ZhciByPWkodCxlKTt4LnBvaW50KHJbMF0sclsxXSl9ZnVuY3Rpb24gaCgpe3gubGluZVN0YXJ0KCksZz1bXX1mdW5jdGlvbiBmKCl7dShnWzBdWzBdLGdbMF1bMV0pLHgubGluZUVuZCgpO3ZhciB0LGU9eC5jbGVhbigpLHI9Yi5idWZmZXIoKSxuPXIubGVuZ3RoO2lmKGcucG9wKCkscC5wdXNoKGcpLGc9bnVsbCxuKWlmKDEmZSl7dD1yWzBdO3ZhciBpLG49dC5sZW5ndGgtMSxhPS0xO2lmKG4+MCl7Zm9yKF98fChvLnBvbHlnb25TdGFydCgpLF89ITApLG8ubGluZVN0YXJ0KCk7KythPG47KW8ucG9pbnQoKGk9dFthXSlbMF0saVsxXSk7by5saW5lRW5kKCl9fWVsc2Ugbj4xJiYyJmUmJnIucHVzaChyLnBvcCgpLmNvbmNhdChyLnNoaWZ0KCkpKSxkLnB1c2goci5maWx0ZXIoTmUpKX12YXIgZCxwLGcsdj1lKG8pLG09aS5pbnZlcnQoblswXSxuWzFdKSx5PXtwb2ludDphLGxpbmVTdGFydDpsLGxpbmVFbmQ6Yyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt5LnBvaW50PXUseS5saW5lU3RhcnQ9aCx5LmxpbmVFbmQ9ZixkPVtdLHA9W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt5LnBvaW50PWEseS5saW5lU3RhcnQ9bCx5LmxpbmVFbmQ9YyxkPXVhLm1lcmdlKGQpO3ZhciB0PVZlKG0scCk7ZC5sZW5ndGg/KF98fChvLnBvbHlnb25TdGFydCgpLF89ITApLHplKGQsRmUsdCxyLG8pKTp0JiYoX3x8KG8ucG9seWdvblN0YXJ0KCksXz0hMCksby5saW5lU3RhcnQoKSxyKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpKSxfJiYoby5wb2x5Z29uRW5kKCksXz0hMSksZD1wPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe28ucG9seWdvblN0YXJ0KCksby5saW5lU3RhcnQoKSxyKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpLG8ucG9seWdvbkVuZCgpfX0sYj1qZSgpLHg9ZShiKSxfPSExO3JldHVybiB5fX1mdW5jdGlvbiBOZSh0KXtyZXR1cm4gdC5sZW5ndGg+MX1mdW5jdGlvbiBqZSgpe3ZhciB0LGU9W107cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0scG9pbnQ6ZnVuY3Rpb24oZSxyKXt0LnB1c2goW2Uscl0pfSxsaW5lRW5kOkEsYnVmZmVyOmZ1bmN0aW9uKCl7dmFyIHI9ZTtyZXR1cm4gZT1bXSx0PW51bGwscn0scmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfX19ZnVuY3Rpb24gRmUodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tSGEtRGE6SGEtdFsxXSktKChlPWUueClbMF08MD9lWzFdLUhhLURhOkhhLWVbMV0pfWZ1bmN0aW9uIERlKHQpe3ZhciBlLHI9TmFOLG49TmFOLGk9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24obyxhKXt2YXIgcz1vPjA/VWE6LVVhLGw9d2Eoby1yKTt3YShsLVVhKTxEYT8odC5wb2ludChyLG49KG4rYSkvMj4wP0hhOi1IYSksdC5wb2ludChpLG4pLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLG4pLHQucG9pbnQobyxuKSxlPTApOmkhPT1zJiZsPj1VYSYmKHdhKHItaSk8RGEmJihyLT1pKkRhKSx3YShvLXMpPERhJiYoby09cypEYSksbj1CZShyLG4sbyxhKSx0LnBvaW50KGksbiksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHMsbiksZT0wKSx0LnBvaW50KHI9byxuPWEpLGk9c30sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpLHI9bj1OYU59LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIDItZX19fWZ1bmN0aW9uIEJlKHQsZSxyLG4pe3ZhciBpLG8sYT1NYXRoLnNpbih0LXIpO3JldHVybiB3YShhKT5EYT9NYXRoLmF0YW4oKE1hdGguc2luKGUpKihvPU1hdGguY29zKG4pKSpNYXRoLnNpbihyKS1NYXRoLnNpbihuKSooaT1NYXRoLmNvcyhlKSkqTWF0aC5zaW4odCkpLyhpKm8qYSkpOihlK24pLzJ9ZnVuY3Rpb24gVWUodCxlLHIsbil7dmFyIGk7aWYobnVsbD09dClpPXIqSGEsbi5wb2ludCgtVWEsaSksbi5wb2ludCgwLGkpLG4ucG9pbnQoVWEsaSksbi5wb2ludChVYSwwKSxuLnBvaW50KFVhLC1pKSxuLnBvaW50KDAsLWkpLG4ucG9pbnQoLVVhLC1pKSxuLnBvaW50KC1VYSwwKSxuLnBvaW50KC1VYSxpKTtlbHNlIGlmKHdhKHRbMF0tZVswXSk+RGEpe3ZhciBvPXRbMF08ZVswXT9VYTotVWE7aT1yKm8vMixuLnBvaW50KC1vLGkpLG4ucG9pbnQoMCxpKSxuLnBvaW50KG8saSl9ZWxzZSBuLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gVmUodCxlKXt2YXIgcj10WzBdLG49dFsxXSxpPVtNYXRoLnNpbihyKSwtTWF0aC5jb3MociksMF0sbz0wLGE9MDtFcy5yZXNldCgpO2Zvcih2YXIgcz0wLGw9ZS5sZW5ndGg7bD5zOysrcyl7dmFyIGM9ZVtzXSx1PWMubGVuZ3RoO2lmKHUpZm9yKHZhciBoPWNbMF0sZj1oWzBdLGQ9aFsxXS8yK1VhLzQscD1NYXRoLnNpbihkKSxnPU1hdGguY29zKGQpLHY9MTs7KXt2PT09dSYmKHY9MCksdD1jW3ZdO3ZhciBtPXRbMF0seT10WzFdLzIrVWEvNCxiPU1hdGguc2luKHkpLHg9TWF0aC5jb3MoeSksXz1tLWYsdz1fPj0wPzE6LTEsQT13Kl8saz1BPlVhLE09cCpiO2lmKEVzLmFkZChNYXRoLmF0YW4yKE0qdypNYXRoLnNpbihBKSxnKngrTSpNYXRoLmNvcyhBKSkpLG8rPWs/Xyt3KlZhOl8sa15mPj1yXm0+PXIpe3ZhciBUPWJlKG1lKGgpLG1lKHQpKTt3ZShUKTt2YXIgRT1iZShpLFQpO3dlKEUpO3ZhciBMPShrXl8+PTA/LTE6MSkqbnQoRVsyXSk7KG4+THx8bj09PUwmJihUWzBdfHxUWzFdKSkmJihhKz1rXl8+PTA/MTotMSl9aWYoIXYrKylicmVhaztmPW0scD1iLGc9eCxoPXR9fXJldHVybigtRGE+b3x8RGE+byYmMD5FcyleMSZhfWZ1bmN0aW9uIHFlKHQpe2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gTWF0aC5jb3ModCkqTWF0aC5jb3MoZSk+b31mdW5jdGlvbiByKHQpe3ZhciByLG8sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZil7dmFyIGQscD1baCxmXSxnPWUoaCxmKSx2PWE/Zz8wOmkoaCxmKTpnP2koaCsoMD5oP1VhOi1VYSksZik6MDtpZighciYmKGM9bD1nKSYmdC5saW5lU3RhcnQoKSxnIT09bCYmKGQ9bihyLHApLChrZShyLGQpfHxrZShwLGQpKSYmKHBbMF0rPURhLHBbMV0rPURhLGc9ZShwWzBdLHBbMV0pKSksZyE9PWwpdT0wLGc/KHQubGluZVN0YXJ0KCksZD1uKHAsciksdC5wb2ludChkWzBdLGRbMV0pKTooZD1uKHIscCksdC5wb2ludChkWzBdLGRbMV0pLHQubGluZUVuZCgpKSxyPWQ7ZWxzZSBpZihzJiZyJiZhXmcpe3ZhciBtO3Ymb3x8IShtPW4ocCxyLCEwKSl8fCh1PTAsYT8odC5saW5lU3RhcnQoKSx0LnBvaW50KG1bMF1bMF0sbVswXVsxXSksdC5wb2ludChtWzFdWzBdLG1bMV1bMV0pLHQubGluZUVuZCgpKToodC5wb2ludChtWzFdWzBdLG1bMV1bMV0pLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChtWzBdWzBdLG1bMF1bMV0pKSl9IWd8fHImJmtlKHIscCl8fHQucG9pbnQocFswXSxwWzFdKSxyPXAsbD1nLG89dn0sbGluZUVuZDpmdW5jdGlvbigpe2wmJnQubGluZUVuZCgpLHI9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gdXwoYyYmbCk8PDF9fX1mdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj1tZSh0KSxpPW1lKGUpLGE9WzEsMCwwXSxzPWJlKG4saSksbD15ZShzLHMpLGM9c1swXSx1PWwtYypjO2lmKCF1KXJldHVybiFyJiZ0O3ZhciBoPW8qbC91LGY9LW8qYy91LGQ9YmUoYSxzKSxwPV9lKGEsaCksZz1fZShzLGYpO3hlKHAsZyk7dmFyIHY9ZCxtPXllKHAsdikseT15ZSh2LHYpLGI9bSptLXkqKHllKHAscCktMSk7aWYoISgwPmIpKXt2YXIgeD1NYXRoLnNxcnQoYiksXz1fZSh2LCgtbS14KS95KTtpZih4ZShfLHApLF89QWUoXyksIXIpcmV0dXJuIF87dmFyIHcsQT10WzBdLGs9ZVswXSxNPXRbMV0sVD1lWzFdO0E+ayYmKHc9QSxBPWssaz13KTt2YXIgRT1rLUEsTD13YShFLVVhKTxEYSxTPUx8fERhPkU7aWYoIUwmJk0+VCYmKHc9TSxNPVQsVD13KSxTP0w/TStUPjBeX1sxXTwod2EoX1swXS1BKTxEYT9NOlQpOk08PV9bMV0mJl9bMV08PVQ6RT5VYV4oQTw9X1swXSYmX1swXTw9aykpe3ZhciBDPV9lKHYsKC1tK3gpL3kpO3JldHVybiB4ZShDLHApLFtfLEFlKEMpXX19fWZ1bmN0aW9uIGkoZSxyKXt2YXIgbj1hP3Q6VWEtdCxpPTA7cmV0dXJuLW4+ZT9pfD0xOmU+biYmKGl8PTIpLC1uPnI/aXw9NDpyPm4mJihpfD04KSxpfXZhciBvPU1hdGguY29zKHQpLGE9bz4wLHM9d2Eobyk+RGEsbD12cih0LDYqR2EpO3JldHVybiBJZShlLHIsbCxhP1swLC10XTpbLVVhLHQtVWFdKX1mdW5jdGlvbiBIZSh0LGUscixuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIG8sYT1pLmEscz1pLmIsbD1hLngsYz1hLnksdT1zLngsaD1zLnksZj0wLGQ9MSxwPXUtbCxnPWgtYztpZihvPXQtbCxwfHwhKG8+MCkpe2lmKG8vPXAsMD5wKXtpZihmPm8pcmV0dXJuO2Q+byYmKGQ9byl9ZWxzZSBpZihwPjApe2lmKG8+ZClyZXR1cm47bz5mJiYoZj1vKX1pZihvPXItbCxwfHwhKDA+bykpe2lmKG8vPXAsMD5wKXtpZihvPmQpcmV0dXJuO28+ZiYmKGY9byl9ZWxzZSBpZihwPjApe2lmKGY+bylyZXR1cm47ZD5vJiYoZD1vKX1pZihvPWUtYyxnfHwhKG8+MCkpe2lmKG8vPWcsMD5nKXtpZihmPm8pcmV0dXJuO2Q+byYmKGQ9byl9ZWxzZSBpZihnPjApe2lmKG8+ZClyZXR1cm47bz5mJiYoZj1vKX1pZihvPW4tYyxnfHwhKDA+bykpe2lmKG8vPWcsMD5nKXtpZihvPmQpcmV0dXJuO28+ZiYmKGY9byl9ZWxzZSBpZihnPjApe2lmKGY+bylyZXR1cm47ZD5vJiYoZD1vKX1yZXR1cm4gZj4wJiYoaS5hPXt4OmwrZipwLHk6YytmKmd9KSwxPmQmJihpLmI9e3g6bCtkKnAseTpjK2QqZ30pLGl9fX19fX1mdW5jdGlvbiBHZSh0LGUscixuKXtmdW5jdGlvbiBpKG4saSl7cmV0dXJuIHdhKG5bMF0tdCk8RGE/aT4wPzA6Mzp3YShuWzBdLXIpPERhP2k+MD8yOjE6d2EoblsxXS1lKTxEYT9pPjA/MTowOmk+MD8zOjJ9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBhKHQueCxlLngpfWZ1bmN0aW9uIGEodCxlKXt2YXIgcj1pKHQsMSksbj1pKGUsMSk7cmV0dXJuIHIhPT1uP3ItbjowPT09cj9lWzFdLXRbMV06MT09PXI/dFswXS1lWzBdOjI9PT1yP3RbMV0tZVsxXTplWzBdLXRbMF19cmV0dXJuIGZ1bmN0aW9uKHMpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciBlPTAscj12Lmxlbmd0aCxuPXRbMV0saT0wO3I+aTsrK2kpZm9yKHZhciBvLGE9MSxzPXZbaV0sbD1zLmxlbmd0aCxjPXNbMF07bD5hOysrYSlvPXNbYV0sY1sxXTw9bj9vWzFdPm4mJmV0KGMsbyx0KT4wJiYrK2U6b1sxXTw9biYmZXQoYyxvLHQpPDAmJi0tZSxjPW87cmV0dXJuIDAhPT1lfWZ1bmN0aW9uIGMobyxzLGwsYyl7dmFyIHU9MCxoPTA7aWYobnVsbD09b3x8KHU9aShvLGwpKSE9PShoPWkocyxsKSl8fGEobyxzKTwwXmw+MCl7ZG8gYy5wb2ludCgwPT09dXx8Mz09PXU/dDpyLHU+MT9uOmUpO3doaWxlKCh1PSh1K2wrNCklNCkhPT1oKX1lbHNlIGMucG9pbnQoc1swXSxzWzFdKX1mdW5jdGlvbiB1KGksbyl7cmV0dXJuIGk+PXQmJnI+PWkmJm8+PWUmJm4+PW99ZnVuY3Rpb24gaCh0LGUpe3UodCxlKSYmcy5wb2ludCh0LGUpfWZ1bmN0aW9uIGYoKXtTLnBvaW50PXAsdiYmdi5wdXNoKG09W10pLGs9ITAsQT0hMSxfPXc9TmFOfWZ1bmN0aW9uIGQoKXtnJiYocCh5LGIpLHgmJkEmJkUucmVqb2luKCksZy5wdXNoKEUuYnVmZmVyKCkpKSxTLnBvaW50PWgsQSYmcy5saW5lRW5kKCl9ZnVuY3Rpb24gcCh0LGUpe3Q9TWF0aC5tYXgoLVZzLE1hdGgubWluKFZzLHQpKSxlPU1hdGgubWF4KC1WcyxNYXRoLm1pbihWcyxlKSk7dmFyIHI9dSh0LGUpO2lmKHYmJm0ucHVzaChbdCxlXSksayl5PXQsYj1lLHg9cixrPSExLHImJihzLmxpbmVTdGFydCgpLHMucG9pbnQodCxlKSk7ZWxzZSBpZihyJiZBKXMucG9pbnQodCxlKTtlbHNle3ZhciBuPXthOnt4Ol8seTp3fSxiOnt4OnQseTplfX07TChuKT8oQXx8KHMubGluZVN0YXJ0KCkscy5wb2ludChuLmEueCxuLmEueSkpLHMucG9pbnQobi5iLngsbi5iLnkpLHJ8fHMubGluZUVuZCgpLE09ITEpOnImJihzLmxpbmVTdGFydCgpLHMucG9pbnQodCxlKSxNPSExKX1fPXQsdz1lLEE9cn12YXIgZyx2LG0seSxiLHgsXyx3LEEsayxNLFQ9cyxFPWplKCksTD1IZSh0LGUscixuKSxTPXtwb2ludDpoLGxpbmVTdGFydDpmLGxpbmVFbmQ6ZCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtzPUUsZz1bXSx2PVtdLE09ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtzPVQsZz11YS5tZXJnZShnKTt2YXIgZT1sKFt0LG5dKSxyPU0mJmUsaT1nLmxlbmd0aDsocnx8aSkmJihzLnBvbHlnb25TdGFydCgpLHImJihzLmxpbmVTdGFydCgpLGMobnVsbCxudWxsLDEscykscy5saW5lRW5kKCkpLGkmJnplKGcsbyxlLGMscykscy5wb2x5Z29uRW5kKCkpLGc9dj1tPW51bGx9fTtyZXR1cm4gU319ZnVuY3Rpb24gWWUodCl7dmFyIGU9MCxyPVVhLzMsbj1scih0KSxpPW4oZSxyKTtyZXR1cm4gaS5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihlPXRbMF0qVWEvMTgwLHI9dFsxXSpVYS8xODApOltlL1VhKjE4MCxyL1VhKjE4MF19LGl9ZnVuY3Rpb24gWGUodCxlKXtmdW5jdGlvbiByKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KG8tMippKk1hdGguc2luKGUpKS9pO3JldHVybltyKk1hdGguc2luKHQqPWkpLGEtcipNYXRoLmNvcyh0KV19dmFyIG49TWF0aC5zaW4odCksaT0obitNYXRoLnNpbihlKSkvMixvPTErbiooMippLW4pLGE9TWF0aC5zcXJ0KG8pL2k7cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9YS1lO3JldHVybltNYXRoLmF0YW4yKHQscikvaSxudCgoby0odCp0K3IqcikqaSppKS8oMippKSldfSxyfWZ1bmN0aW9uIFdlKCl7ZnVuY3Rpb24gdCh0LGUpe0hzKz1pKnQtbiplLG49dCxpPWV9dmFyIGUscixuLGk7WnMucG9pbnQ9ZnVuY3Rpb24obyxhKXtacy5wb2ludD10LGU9bj1vLHI9aT1hfSxacy5saW5lRW5kPWZ1bmN0aW9uKCl7dChlLHIpfX1mdW5jdGlvbiBaZSh0LGUpe0dzPnQmJihHcz10KSx0PlhzJiYoWHM9dCksWXM+ZSYmKFlzPWUpLGU+V3MmJihXcz1lKX1mdW5jdGlvbiAkZSgpe2Z1bmN0aW9uIHQodCxlKXthLnB1c2goIk0iLHQsIiwiLGUsbyl9ZnVuY3Rpb24gZSh0LGUpe2EucHVzaCgiTSIsdCwiLCIsZSkscy5wb2ludD1yfWZ1bmN0aW9uIHIodCxlKXthLnB1c2goIkwiLHQsIiwiLGUpfWZ1bmN0aW9uIG4oKXtzLnBvaW50PXR9ZnVuY3Rpb24gaSgpe2EucHVzaCgiWiIpfXZhciBvPUtlKDQuNSksYT1bXSxzPXtwb2ludDp0LGxpbmVTdGFydDpmdW5jdGlvbigpe3MucG9pbnQ9ZX0sbGluZUVuZDpuLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3MubGluZUVuZD1pfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7cy5saW5lRW5kPW4scy5wb2ludD10fSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gbz1LZSh0KSxzfSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZihhLmxlbmd0aCl7dmFyIHQ9YS5qb2luKCIiKTtyZXR1cm4gYT1bXSx0fX19O3JldHVybiBzfWZ1bmN0aW9uIEtlKHQpe3JldHVybiJtMCwiK3QrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrLTIqdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIisyKnQrInoifWZ1bmN0aW9uIFFlKHQsZSl7UHMrPXQsenMrPWUsKytSc31mdW5jdGlvbiBKZSgpe2Z1bmN0aW9uIHQodCxuKXt2YXIgaT10LWUsbz1uLXIsYT1NYXRoLnNxcnQoaSppK28qbyk7T3MrPWEqKGUrdCkvMixJcys9YSoocituKS8yLE5zKz1hLFFlKGU9dCxyPW4pfXZhciBlLHI7S3MucG9pbnQ9ZnVuY3Rpb24obixpKXtLcy5wb2ludD10LFFlKGU9bixyPWkpfX1mdW5jdGlvbiB0cigpe0tzLnBvaW50PVFlfWZ1bmN0aW9uIGVyKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciByPXQtbixvPWUtaSxhPU1hdGguc3FydChyKnIrbypvKTtPcys9YSoobit0KS8yLElzKz1hKihpK2UpLzIsTnMrPWEsYT1pKnQtbiplLGpzKz1hKihuK3QpLEZzKz1hKihpK2UpLERzKz0zKmEsUWUobj10LGk9ZSl9dmFyIGUscixuLGk7S3MucG9pbnQ9ZnVuY3Rpb24obyxhKXtLcy5wb2ludD10LFFlKGU9bj1vLHI9aT1hKX0sS3MubGluZUVuZD1mdW5jdGlvbigpe3QoZSxyKX19ZnVuY3Rpb24gcnIodCl7ZnVuY3Rpb24gZShlLHIpe3QubW92ZVRvKGUrYSxyKSx0LmFyYyhlLHIsYSwwLFZhKX1mdW5jdGlvbiByKGUscil7dC5tb3ZlVG8oZSxyKSxzLnBvaW50PW59ZnVuY3Rpb24gbihlLHIpe3QubGluZVRvKGUscil9ZnVuY3Rpb24gaSgpe3MucG9pbnQ9ZX1mdW5jdGlvbiBvKCl7dC5jbG9zZVBhdGgoKX12YXIgYT00LjUscz17cG9pbnQ6ZSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtzLnBvaW50PXJ9LGxpbmVFbmQ6aSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtzLmxpbmVFbmQ9b30scG9seWdvbkVuZDpmdW5jdGlvbigpe3MubGluZUVuZD1pLHMucG9pbnQ9ZX0scG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIGE9dCxzfSxyZXN1bHQ6QX07cmV0dXJuIHN9ZnVuY3Rpb24gbnIodCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4ocz9uOnIpKHQpfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGFyKGUsZnVuY3Rpb24ocixuKXtyPXQocixuKSxlLnBvaW50KHJbMF0sclsxXSl9KX1mdW5jdGlvbiBuKGUpe2Z1bmN0aW9uIHIocixuKXtyPXQocixuKSxlLnBvaW50KHJbMF0sclsxXSl9ZnVuY3Rpb24gbigpe2I9TmFOLGsucG9pbnQ9byxlLmxpbmVTdGFydCgpfWZ1bmN0aW9uIG8ocixuKXt2YXIgbz1tZShbcixuXSksYT10KHIsbik7aShiLHgseSxfLHcsQSxiPWFbMF0seD1hWzFdLHk9cixfPW9bMF0sdz1vWzFdLEE9b1syXSxzLGUpLGUucG9pbnQoYix4KX1mdW5jdGlvbiBhKCl7ay5wb2ludD1yLGUubGluZUVuZCgpfWZ1bmN0aW9uIGwoKXtuKCksay5wb2ludD1jLGsubGluZUVuZD11fWZ1bmN0aW9uIGModCxlKXtvKGg9dCxmPWUpLGQ9YixwPXgsZz1fLHY9dyxtPUEsay5wb2ludD1vfWZ1bmN0aW9uIHUoKXtpKGIseCx5LF8sdyxBLGQscCxoLGcsdixtLHMsZSksay5saW5lRW5kPWEsYSgpfXZhciBoLGYsZCxwLGcsdixtLHksYix4LF8sdyxBLGs9e3BvaW50OnIsbGluZVN0YXJ0Om4sbGluZUVuZDphLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksay5saW5lU3RhcnQ9bH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLGsubGluZVN0YXJ0PW59fTtyZXR1cm4ga31mdW5jdGlvbiBpKGUscixuLHMsbCxjLHUsaCxmLGQscCxnLHYsbSl7dmFyIHk9dS1lLGI9aC1yLHg9eSp5K2IqYjtpZih4PjQqbyYmdi0tKXt2YXIgXz1zK2Qsdz1sK3AsQT1jK2csaz1NYXRoLnNxcnQoXypfK3cqdytBKkEpLE09TWF0aC5hc2luKEEvPWspLFQ9d2Eod2EoQSktMSk8RGF8fHdhKG4tZik8RGE/KG4rZikvMjpNYXRoLmF0YW4yKHcsXyksRT10KFQsTSksTD1FWzBdLFM9RVsxXSxDPUwtZSxQPVMtcix6PWIqQy15KlA7KHoqei94Pm98fHdhKCh5KkMrYipQKS94LS41KT4uM3x8YT5zKmQrbCpwK2MqZykmJihpKGUscixuLHMsbCxjLEwsUyxULF8vPWssdy89ayxBLHYsbSksbS5wb2ludChMLFMpLGkoTCxTLFQsXyx3LEEsdSxoLGYsZCxwLGcsdixtKSl9fXZhciBvPS41LGE9TWF0aC5jb3MoMzAqR2EpLHM9MTY7cmV0dXJuIGUucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPShvPXQqdCk+MCYmMTYsZSk6TWF0aC5zcXJ0KG8pfSxlfWZ1bmN0aW9uIGlyKHQpe3ZhciBlPW5yKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQoW2UqWWEscipZYV0pfSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBjcihlKHQpKX19ZnVuY3Rpb24gb3IodCl7dGhpcy5zdHJlYW09dH1mdW5jdGlvbiBhcih0LGUpe3JldHVybntwb2ludDplLHNwaGVyZTpmdW5jdGlvbigpe3Quc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dC5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gc3IodCl7cmV0dXJuIGxyKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSgpfWZ1bmN0aW9uIGxyKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQ9cyh0WzBdKkdhLHRbMV0qR2EpLFt0WzBdKmYrbCxjLXRbMV0qZl19ZnVuY3Rpb24gcih0KXtyZXR1cm4gdD1zLmludmVydCgodFswXS1sKS9mLChjLXRbMV0pL2YpLHQmJlt0WzBdKllhLHRbMV0qWWFdfWZ1bmN0aW9uIG4oKXtzPUNlKGE9ZnIobSx5LGIpLG8pO3ZhciB0PW8oZyx2KTtyZXR1cm4gbD1kLXRbMF0qZixjPXArdFsxXSpmLGkoKX1mdW5jdGlvbiBpKCl7cmV0dXJuIHUmJih1LnZhbGlkPSExLHU9bnVsbCksZX12YXIgbyxhLHMsbCxjLHUsaD1ucihmdW5jdGlvbih0LGUpe3JldHVybiB0PW8odCxlKSxbdFswXSpmK2wsYy10WzFdKmZdfSksZj0xNTAsZD00ODAscD0yNTAsZz0wLHY9MCxtPTAseT0wLGI9MCxfPVVzLHc9eCxBPW51bGwsaz1udWxsO3JldHVybiBlLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gdSYmKHUudmFsaWQ9ITEpLHU9Y3IoXyhhLGgodyh0KSkpKSx1LnZhbGlkPSEwLHV9LGUuY2xpcEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPW51bGw9PXQ/KEE9dCxVcyk6cWUoKEE9K3QpKkdhKSxpKCkpOkF9LGUuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz10LHc9dD9HZSh0WzBdWzBdLHRbMF1bMV0sdFsxXVswXSx0WzFdWzFdKTp4LGkoKSk6a30sZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdCxuKCkpOmZ9LGUudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0WzBdLHA9K3RbMV0sbigpKTpbZCxwXX0sZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9dFswXSUzNjAqR2Esdj10WzFdJTM2MCpHYSxuKCkpOltnKllhLHYqWWFdfSxlLnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT10WzBdJTM2MCpHYSx5PXRbMV0lMzYwKkdhLGI9dC5sZW5ndGg+Mj90WzJdJTM2MCpHYTowLG4oKSk6W20qWWEseSpZYSxiKllhXX0sdWEucmViaW5kKGUsaCwicHJlY2lzaW9uIiksZnVuY3Rpb24oKXtyZXR1cm4gbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLmludmVydD1vLmludmVydCYmcixuKCl9fWZ1bmN0aW9uIGNyKHQpe3JldHVybiBhcih0LGZ1bmN0aW9uKGUscil7dC5wb2ludChlKkdhLHIqR2EpfSl9ZnVuY3Rpb24gdXIodCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiBocih0LGUpe3JldHVyblt0PlVhP3QtVmE6LVVhPnQ/dCtWYTp0LGVdfWZ1bmN0aW9uIGZyKHQsZSxyKXtyZXR1cm4gdD9lfHxyP0NlKHByKHQpLGdyKGUscikpOnByKHQpOmV8fHI/Z3IoZSxyKTpocn1mdW5jdGlvbiBkcih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gZSs9dCxbZT5VYT9lLVZhOi1VYT5lP2UrVmE6ZSxyXX19ZnVuY3Rpb24gcHIodCl7dmFyIGU9ZHIodCk7cmV0dXJuIGUuaW52ZXJ0PWRyKC10KSxlfWZ1bmN0aW9uIGdyKHQsZSl7ZnVuY3Rpb24gcih0LGUpe3ZhciByPU1hdGguY29zKGUpLHM9TWF0aC5jb3ModCkqcixsPU1hdGguc2luKHQpKnIsYz1NYXRoLnNpbihlKSx1PWMqbitzKmk7cmV0dXJuW01hdGguYXRhbjIobCpvLXUqYSxzKm4tYyppKSxudCh1Km8rbCphKV19dmFyIG49TWF0aC5jb3ModCksaT1NYXRoLnNpbih0KSxvPU1hdGguY29zKGUpLGE9TWF0aC5zaW4oZSk7cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5jb3MoZSkscz1NYXRoLmNvcyh0KSpyLGw9TWF0aC5zaW4odCkqcixjPU1hdGguc2luKGUpLHU9YypvLWwqYTtyZXR1cm5bTWF0aC5hdGFuMihsKm8rYyphLHMqbit1KmkpLG50KHUqbi1zKmkpXX0scn1mdW5jdGlvbiB2cih0LGUpe3ZhciByPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIGZ1bmN0aW9uKGksbyxhLHMpe3ZhciBsPWEqZTtudWxsIT1pPyhpPW1yKHIsaSksbz1tcihyLG8pLChhPjA/bz5pOmk+bykmJihpKz1hKlZhKSk6KGk9dCthKlZhLG89dC0uNSpsKTtmb3IodmFyIGMsdT1pO2E+MD91Pm86bz51O3UtPWwpcy5wb2ludCgoYz1BZShbciwtbipNYXRoLmNvcyh1KSwtbipNYXRoLnNpbih1KV0pKVswXSxjWzFdKX19ZnVuY3Rpb24gbXIodCxlKXt2YXIgcj1tZShlKTtyWzBdLT10LHdlKHIpO3ZhciBuPXJ0KC1yWzFdKTtyZXR1cm4oKC1yWzJdPDA/LW46bikrMipNYXRoLlBJLURhKSUoMipNYXRoLlBJKX1mdW5jdGlvbiB5cih0LGUscil7dmFyIG49dWEucmFuZ2UodCxlLURhLHIpLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSl9fWZ1bmN0aW9uIGJyKHQsZSxyKXt2YXIgbj11YS5yYW5nZSh0LGUtRGEscikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdF19KX19ZnVuY3Rpb24geHIodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIF9yKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiB3cih0LGUscixuKXt2YXIgaT1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGE9TWF0aC5jb3Mobikscz1NYXRoLnNpbihuKSxsPWkqTWF0aC5jb3ModCksYz1pKk1hdGguc2luKHQpLHU9YSpNYXRoLmNvcyhyKSxoPWEqTWF0aC5zaW4ociksZj0yKk1hdGguYXNpbihNYXRoLnNxcnQoc3Qobi1lKStpKmEqc3Qoci10KSkpLGQ9MS9NYXRoLnNpbihmKSxwPWY/ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5zaW4odCo9ZikqZCxyPU1hdGguc2luKGYtdCkqZCxuPXIqbCtlKnUsaT1yKmMrZSpoLGE9cipvK2UqcztyZXR1cm5bTWF0aC5hdGFuMihpLG4pKllhLE1hdGguYXRhbjIoYSxNYXRoLnNxcnQobipuK2kqaSkpKllhXX06ZnVuY3Rpb24oKXtyZXR1cm5bdCpZYSxlKllhXX07cmV0dXJuIHAuZGlzdGFuY2U9ZixwfWZ1bmN0aW9uIEFyKCl7ZnVuY3Rpb24gdCh0LGkpe3ZhciBvPU1hdGguc2luKGkqPUdhKSxhPU1hdGguY29zKGkpLHM9d2EoKHQqPUdhKS1lKSxsPU1hdGguY29zKHMpO1FzKz1NYXRoLmF0YW4yKE1hdGguc3FydCgocz1hKk1hdGguc2luKHMpKSpzKyhzPW4qby1yKmEqbCkqcykscipvK24qYSpsKSxlPXQscj1vLG49YX12YXIgZSxyLG47SnMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtlPWkqR2Escj1NYXRoLnNpbihvKj1HYSksbj1NYXRoLmNvcyhvKSxKcy5wb2ludD10fSxKcy5saW5lRW5kPWZ1bmN0aW9uKCl7SnMucG9pbnQ9SnMubGluZUVuZD1BfX1mdW5jdGlvbiBrcih0LGUpe2Z1bmN0aW9uIHIoZSxyKXt2YXIgbj1NYXRoLmNvcyhlKSxpPU1hdGguY29zKHIpLG89dChuKmkpO3JldHVybltvKmkqTWF0aC5zaW4oZSksbypNYXRoLnNpbihyKV19cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQscil7dmFyIG49TWF0aC5zcXJ0KHQqdCtyKnIpLGk9ZShuKSxvPU1hdGguc2luKGkpLGE9TWF0aC5jb3MoaSk7cmV0dXJuW01hdGguYXRhbjIodCpvLG4qYSksTWF0aC5hc2luKG4mJnIqby9uKV19LHJ9ZnVuY3Rpb24gTXIodCxlKXtmdW5jdGlvbiByKHQsZSl7YT4wPy1IYStEYT5lJiYoZT0tSGErRGEpOmU+SGEtRGEmJihlPUhhLURhKTt2YXIgcj1hL01hdGgucG93KGkoZSksbyk7cmV0dXJuW3IqTWF0aC5zaW4obyp0KSxhLXIqTWF0aC5jb3Mobyp0KV19dmFyIG49TWF0aC5jb3ModCksaT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC50YW4oVWEvNCt0LzIpfSxvPXQ9PT1lP01hdGguc2luKHQpOk1hdGgubG9nKG4vTWF0aC5jb3MoZSkpL01hdGgubG9nKGkoZSkvaSh0KSksYT1uKk1hdGgucG93KGkodCksbykvbztyZXR1cm4gbz8oci5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1hLWUsbj10dChvKSpNYXRoLnNxcnQodCp0K3Iqcik7cmV0dXJuW01hdGguYXRhbjIodCxyKS9vLDIqTWF0aC5hdGFuKE1hdGgucG93KGEvbiwxL28pKS1IYV19LHIpOkVyfWZ1bmN0aW9uIFRyKHQsZSl7ZnVuY3Rpb24gcih0LGUpe3ZhciByPW8tZTtyZXR1cm5bcipNYXRoLnNpbihpKnQpLG8tcipNYXRoLmNvcyhpKnQpXX12YXIgbj1NYXRoLmNvcyh0KSxpPXQ9PT1lP01hdGguc2luKHQpOihuLU1hdGguY29zKGUpKS8oZS10KSxvPW4vaSt0O3JldHVybiB3YShpKTxEYT91cjooci5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1vLWU7cmV0dXJuW01hdGguYXRhbjIodCxyKS9pLG8tdHQoaSkqTWF0aC5zcXJ0KHQqdCtyKnIpXX0scil9ZnVuY3Rpb24gRXIodCxlKXtyZXR1cm5bdCxNYXRoLmxvZyhNYXRoLnRhbihVYS80K2UvMikpXX1mdW5jdGlvbiBMcih0KXt2YXIgZSxyPXNyKHQpLG49ci5zY2FsZSxpPXIudHJhbnNsYXRlLG89ci5jbGlwRXh0ZW50O3JldHVybiByLnNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseShyLGFyZ3VtZW50cyk7CnJldHVybiB0PT09cj9lP3IuY2xpcEV4dGVudChudWxsKTpyOnR9LHIudHJhbnNsYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9aS5hcHBseShyLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1yP2U/ci5jbGlwRXh0ZW50KG51bGwpOnI6dH0sci5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBhPW8uYXBwbHkocixhcmd1bWVudHMpO2lmKGE9PT1yKXtpZihlPW51bGw9PXQpe3ZhciBzPVVhKm4oKSxsPWkoKTtvKFtbbFswXS1zLGxbMV0tc10sW2xbMF0rcyxsWzFdK3NdXSl9fWVsc2UgZSYmKGE9bnVsbCk7cmV0dXJuIGF9LHIuY2xpcEV4dGVudChudWxsKX1mdW5jdGlvbiBTcih0LGUpe3JldHVybltNYXRoLmxvZyhNYXRoLnRhbihVYS80K2UvMikpLC10XX1mdW5jdGlvbiBDcih0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBQcih0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiB6cih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1bMCwxXSxuPTIsaT0yO2U+aTtpKyspe2Zvcig7bj4xJiZldCh0W3Jbbi0yXV0sdFtyW24tMV1dLHRbaV0pPD0wOyktLW47cltuKytdPWl9cmV0dXJuIHIuc2xpY2UoMCxuKX1mdW5jdGlvbiBScih0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1mdW5jdGlvbiBPcih0LGUscil7cmV0dXJuKHJbMF0tZVswXSkqKHRbMV0tZVsxXSk8KHJbMV0tZVsxXSkqKHRbMF0tZVswXSl9ZnVuY3Rpb24gSXIodCxlLHIsbil7dmFyIGk9dFswXSxvPXJbMF0sYT1lWzBdLWkscz1uWzBdLW8sbD10WzFdLGM9clsxXSx1PWVbMV0tbCxoPW5bMV0tYyxmPShzKihsLWMpLWgqKGktbykpLyhoKmEtcyp1KTtyZXR1cm5baStmKmEsbCtmKnVdfWZ1bmN0aW9uIE5yKHQpe3ZhciBlPXRbMF0scj10W3QubGVuZ3RoLTFdO3JldHVybiEoZVswXS1yWzBdfHxlWzFdLXJbMV0pfWZ1bmN0aW9uIGpyKCl7b24odGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIEZyKHQpe3ZhciBlPWhsLnBvcCgpfHxuZXcganI7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gRHIodCl7WnIodCksbGwucmVtb3ZlKHQpLGhsLnB1c2godCksb24odCl9ZnVuY3Rpb24gQnIodCl7dmFyIGU9dC5jaXJjbGUscj1lLngsbj1lLmN5LGk9e3g6cix5Om59LG89dC5QLGE9dC5OLHM9W3RdO0RyKHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZ3YShyLWwuY2lyY2xlLngpPERhJiZ3YShuLWwuY2lyY2xlLmN5KTxEYTspbz1sLlAscy51bnNoaWZ0KGwpLERyKGwpLGw9bztzLnVuc2hpZnQobCksWnIobCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJndhKHItYy5jaXJjbGUueCk8RGEmJndhKG4tYy5jaXJjbGUuY3kpPERhOylhPWMuTixzLnB1c2goYyksRHIoYyksYz1hO3MucHVzaChjKSxacihjKTt2YXIgdSxoPXMubGVuZ3RoO2Zvcih1PTE7aD51OysrdSljPXNbdV0sbD1zW3UtMV0sZW4oYy5lZGdlLGwuc2l0ZSxjLnNpdGUsaSk7bD1zWzBdLGM9c1toLTFdLGMuZWRnZT1KcihsLnNpdGUsYy5zaXRlLG51bGwsaSksV3IobCksV3IoYyl9ZnVuY3Rpb24gVXIodCl7Zm9yKHZhciBlLHIsbixpLG89dC54LGE9dC55LHM9bGwuXztzOylpZihuPVZyKHMsYSktbyxuPkRhKXM9cy5MO2Vsc2V7aWYoaT1vLXFyKHMsYSksIShpPkRhKSl7bj4tRGE/KGU9cy5QLHI9cyk6aT4tRGE/KGU9cyxyPXMuTik6ZT1yPXM7YnJlYWt9aWYoIXMuUil7ZT1zO2JyZWFrfXM9cy5SfXZhciBsPUZyKHQpO2lmKGxsLmluc2VydChlLGwpLGV8fHIpe2lmKGU9PT1yKXJldHVybiBacihlKSxyPUZyKGUuc2l0ZSksbGwuaW5zZXJ0KGwsciksbC5lZGdlPXIuZWRnZT1KcihlLnNpdGUsbC5zaXRlKSxXcihlKSx2b2lkIFdyKHIpO2lmKCFyKXJldHVybiB2b2lkKGwuZWRnZT1KcihlLnNpdGUsbC5zaXRlKSk7WnIoZSksWnIocik7dmFyIGM9ZS5zaXRlLHU9Yy54LGg9Yy55LGY9dC54LXUsZD10LnktaCxwPXIuc2l0ZSxnPXAueC11LHY9cC55LWgsbT0yKihmKnYtZCpnKSx5PWYqZitkKmQsYj1nKmcrdip2LHg9e3g6KHYqeS1kKmIpL20rdSx5OihmKmItZyp5KS9tK2h9O2VuKHIuZWRnZSxjLHAseCksbC5lZGdlPUpyKGMsdCxudWxsLHgpLHIuZWRnZT1Kcih0LHAsbnVsbCx4KSxXcihlKSxXcihyKX19ZnVuY3Rpb24gVnIodCxlKXt2YXIgcj10LnNpdGUsbj1yLngsaT1yLnksbz1pLWU7aWYoIW8pcmV0dXJuIG47dmFyIGE9dC5QO2lmKCFhKXJldHVybi0oMS8wKTtyPWEuc2l0ZTt2YXIgcz1yLngsbD1yLnksYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1uLGg9MS9vLTEvYyxmPXUvYztyZXR1cm4gaD8oLWYrTWF0aC5zcXJ0KGYqZi0yKmgqKHUqdS8oLTIqYyktbCtjLzIraS1vLzIpKSkvaCtuOihuK3MpLzJ9ZnVuY3Rpb24gcXIodCxlKXt2YXIgcj10Lk47aWYocilyZXR1cm4gVnIocixlKTt2YXIgbj10LnNpdGU7cmV0dXJuIG4ueT09PWU/bi54OjEvMH1mdW5jdGlvbiBIcih0KXt0aGlzLnNpdGU9dCx0aGlzLmVkZ2VzPVtdfWZ1bmN0aW9uIEdyKHQpe2Zvcih2YXIgZSxyLG4saSxvLGEscyxsLGMsdSxoPXRbMF1bMF0sZj10WzFdWzBdLGQ9dFswXVsxXSxwPXRbMV1bMV0sZz1zbCx2PWcubGVuZ3RoO3YtLTspaWYobz1nW3ZdLG8mJm8ucHJlcGFyZSgpKWZvcihzPW8uZWRnZXMsbD1zLmxlbmd0aCxhPTA7bD5hOyl1PXNbYV0uZW5kKCksbj11LngsaT11LnksYz1zWysrYSVsXS5zdGFydCgpLGU9Yy54LHI9Yy55LCh3YShuLWUpPkRhfHx3YShpLXIpPkRhKSYmKHMuc3BsaWNlKGEsMCxuZXcgcm4odG4oby5zaXRlLHUsd2Eobi1oKTxEYSYmcC1pPkRhP3t4OmgseTp3YShlLWgpPERhP3I6cH06d2EoaS1wKTxEYSYmZi1uPkRhP3t4OndhKHItcCk8RGE/ZTpmLHk6cH06d2Eobi1mKTxEYSYmaS1kPkRhP3t4OmYseTp3YShlLWYpPERhP3I6ZH06d2EoaS1kKTxEYSYmbi1oPkRhP3t4OndhKHItZCk8RGE/ZTpoLHk6ZH06bnVsbCksby5zaXRlLG51bGwpKSwrK2wpfWZ1bmN0aW9uIFlyKHQsZSl7cmV0dXJuIGUuYW5nbGUtdC5hbmdsZX1mdW5jdGlvbiBYcigpe29uKHRoaXMpLHRoaXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBXcih0KXt2YXIgZT10LlAscj10Lk47aWYoZSYmcil7dmFyIG49ZS5zaXRlLGk9dC5zaXRlLG89ci5zaXRlO2lmKG4hPT1vKXt2YXIgYT1pLngscz1pLnksbD1uLngtYSxjPW4ueS1zLHU9by54LWEsaD1vLnktcyxmPTIqKGwqaC1jKnUpO2lmKCEoZj49LUJhKSl7dmFyIGQ9bCpsK2MqYyxwPXUqdStoKmgsZz0oaCpkLWMqcCkvZix2PShsKnAtdSpkKS9mLGg9ditzLG09ZmwucG9wKCl8fG5ldyBYcjttLmFyYz10LG0uc2l0ZT1pLG0ueD1nK2EsbS55PWgrTWF0aC5zcXJ0KGcqZyt2KnYpLG0uY3k9aCx0LmNpcmNsZT1tO2Zvcih2YXIgeT1udWxsLGI9dWwuXztiOylpZihtLnk8Yi55fHxtLnk9PT1iLnkmJm0ueDw9Yi54KXtpZighYi5MKXt5PWIuUDticmVha31iPWIuTH1lbHNle2lmKCFiLlIpe3k9YjticmVha31iPWIuUn11bC5pbnNlcnQoeSxtKSx5fHwoY2w9bSl9fX19ZnVuY3Rpb24gWnIodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KGNsPWUuTiksdWwucmVtb3ZlKGUpLGZsLnB1c2goZSksb24oZSksdC5jaXJjbGU9bnVsbCl9ZnVuY3Rpb24gJHIodCl7Zm9yKHZhciBlLHI9YWwsbj1IZSh0WzBdWzBdLHRbMF1bMV0sdFsxXVswXSx0WzFdWzFdKSxpPXIubGVuZ3RoO2ktLTspZT1yW2ldLCghS3IoZSx0KXx8IW4oZSl8fHdhKGUuYS54LWUuYi54KTxEYSYmd2EoZS5hLnktZS5iLnkpPERhKSYmKGUuYT1lLmI9bnVsbCxyLnNwbGljZShpLDEpKX1mdW5jdGlvbiBLcih0LGUpe3ZhciByPXQuYjtpZihyKXJldHVybiEwO3ZhciBuLGksbz10LmEsYT1lWzBdWzBdLHM9ZVsxXVswXSxsPWVbMF1bMV0sYz1lWzFdWzFdLHU9dC5sLGg9dC5yLGY9dS54LGQ9dS55LHA9aC54LGc9aC55LHY9KGYrcCkvMixtPShkK2cpLzI7aWYoZz09PWQpe2lmKGE+dnx8dj49cylyZXR1cm47aWYoZj5wKXtpZihvKXtpZihvLnk+PWMpcmV0dXJufWVsc2Ugbz17eDp2LHk6bH07cj17eDp2LHk6Y319ZWxzZXtpZihvKXtpZihvLnk8bClyZXR1cm59ZWxzZSBvPXt4OnYseTpjfTtyPXt4OnYseTpsfX19ZWxzZSBpZihuPShmLXApLyhnLWQpLGk9bS1uKnYsLTE+bnx8bj4xKWlmKGY+cCl7aWYobyl7aWYoby55Pj1jKXJldHVybn1lbHNlIG89e3g6KGwtaSkvbix5Omx9O3I9e3g6KGMtaSkvbix5OmN9fWVsc2V7aWYobyl7aWYoby55PGwpcmV0dXJufWVsc2Ugbz17eDooYy1pKS9uLHk6Y307cj17eDoobC1pKS9uLHk6bH19ZWxzZSBpZihnPmQpe2lmKG8pe2lmKG8ueD49cylyZXR1cm59ZWxzZSBvPXt4OmEseTpuKmEraX07cj17eDpzLHk6bipzK2l9fWVsc2V7aWYobyl7aWYoby54PGEpcmV0dXJufWVsc2Ugbz17eDpzLHk6bipzK2l9O3I9e3g6YSx5Om4qYStpfX1yZXR1cm4gdC5hPW8sdC5iPXIsITB9ZnVuY3Rpb24gUXIodCxlKXt0aGlzLmw9dCx0aGlzLnI9ZSx0aGlzLmE9dGhpcy5iPW51bGx9ZnVuY3Rpb24gSnIodCxlLHIsbil7dmFyIGk9bmV3IFFyKHQsZSk7cmV0dXJuIGFsLnB1c2goaSksciYmZW4oaSx0LGUsciksbiYmZW4oaSxlLHQsbiksc2xbdC5pXS5lZGdlcy5wdXNoKG5ldyBybihpLHQsZSkpLHNsW2UuaV0uZWRnZXMucHVzaChuZXcgcm4oaSxlLHQpKSxpfWZ1bmN0aW9uIHRuKHQsZSxyKXt2YXIgbj1uZXcgUXIodCxudWxsKTtyZXR1cm4gbi5hPWUsbi5iPXIsYWwucHVzaChuKSxufWZ1bmN0aW9uIGVuKHQsZSxyLG4pe3QuYXx8dC5iP3QubD09PXI/dC5iPW46dC5hPW46KHQuYT1uLHQubD1lLHQucj1yKX1mdW5jdGlvbiBybih0LGUscil7dmFyIG49dC5hLGk9dC5iO3RoaXMuZWRnZT10LHRoaXMuc2l0ZT1lLHRoaXMuYW5nbGU9cj9NYXRoLmF0YW4yKHIueS1lLnksci54LWUueCk6dC5sPT09ZT9NYXRoLmF0YW4yKGkueC1uLngsbi55LWkueSk6TWF0aC5hdGFuMihuLngtaS54LGkueS1uLnkpfWZ1bmN0aW9uIG5uKCl7dGhpcy5fPW51bGx9ZnVuY3Rpb24gb24odCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBhbih0LGUpe3ZhciByPWUsbj1lLlIsaT1yLlU7aT9pLkw9PT1yP2kuTD1uOmkuUj1uOnQuXz1uLG4uVT1pLHIuVT1uLHIuUj1uLkwsci5SJiYoci5SLlU9ciksbi5MPXJ9ZnVuY3Rpb24gc24odCxlKXt2YXIgcj1lLG49ZS5MLGk9ci5VO2k/aS5MPT09cj9pLkw9bjppLlI9bjp0Ll89bixuLlU9aSxyLlU9bixyLkw9bi5SLHIuTCYmKHIuTC5VPXIpLG4uUj1yfWZ1bmN0aW9uIGxuKHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBjbih0LGUpe3ZhciByLG4saSxvPXQuc29ydCh1bikucG9wKCk7Zm9yKGFsPVtdLHNsPW5ldyBBcnJheSh0Lmxlbmd0aCksbGw9bmV3IG5uLHVsPW5ldyBubjs7KWlmKGk9Y2wsbyYmKCFpfHxvLnk8aS55fHxvLnk9PT1pLnkmJm8ueDxpLngpKW8ueD09PXImJm8ueT09PW58fChzbFtvLmldPW5ldyBIcihvKSxVcihvKSxyPW8ueCxuPW8ueSksbz10LnBvcCgpO2Vsc2V7aWYoIWkpYnJlYWs7QnIoaS5hcmMpfWUmJigkcihlKSxHcihlKSk7dmFyIGE9e2NlbGxzOnNsLGVkZ2VzOmFsfTtyZXR1cm4gbGw9dWw9YWw9c2w9bnVsbCxhfWZ1bmN0aW9uIHVuKHQsZSl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9ZnVuY3Rpb24gaG4odCxlLHIpe3JldHVybih0Lngtci54KSooZS55LXQueSktKHQueC1lLngpKihyLnktdC55KX1mdW5jdGlvbiBmbih0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIGRuKHQpe3JldHVybiB0Lnl9ZnVuY3Rpb24gcG4oKXtyZXR1cm57bGVhZjohMCxub2RlczpbXSxwb2ludDpudWxsLHg6bnVsbCx5Om51bGx9fWZ1bmN0aW9uIGduKHQsZSxyLG4saSxvKXtpZighdChlLHIsbixpLG8pKXt2YXIgYT0uNSoocitpKSxzPS41KihuK28pLGw9ZS5ub2RlcztsWzBdJiZnbih0LGxbMF0scixuLGEscyksbFsxXSYmZ24odCxsWzFdLGEsbixpLHMpLGxbMl0mJmduKHQsbFsyXSxyLHMsYSxvKSxsWzNdJiZnbih0LGxbM10sYSxzLGksbyl9fWZ1bmN0aW9uIHZuKHQsZSxyLG4saSxvLGEpe3ZhciBzLGw9MS8wO3JldHVybiBmdW5jdGlvbiBjKHQsdSxoLGYsZCl7aWYoISh1Pm98fGg+YXx8bj5mfHxpPmQpKXtpZihwPXQucG9pbnQpe3ZhciBwLGc9ZS10Lngsdj1yLXQueSxtPWcqZyt2KnY7aWYobD5tKXt2YXIgeT1NYXRoLnNxcnQobD1tKTtuPWUteSxpPXIteSxvPWUreSxhPXIreSxzPXB9fWZvcih2YXIgYj10Lm5vZGVzLHg9LjUqKHUrZiksXz0uNSooaCtkKSx3PWU+PXgsQT1yPj1fLGs9QTw8MXx3LE09ays0O00+azsrK2spaWYodD1iWzMma10pc3dpdGNoKDMmayl7Y2FzZSAwOmModCx1LGgseCxfKTticmVhaztjYXNlIDE6Yyh0LHgsaCxmLF8pO2JyZWFrO2Nhc2UgMjpjKHQsdSxfLHgsZCk7YnJlYWs7Y2FzZSAzOmModCx4LF8sZixkKX19fSh0LG4saSxvLGEpLHN9ZnVuY3Rpb24gbW4odCxlKXt0PXVhLnJnYih0KSxlPXVhLnJnYihlKTt2YXIgcj10LnIsbj10LmcsaT10LmIsbz1lLnItcixhPWUuZy1uLHM9ZS5iLWk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiIjIit3dChNYXRoLnJvdW5kKHIrbyp0KSkrd3QoTWF0aC5yb3VuZChuK2EqdCkpK3d0KE1hdGgucm91bmQoaStzKnQpKX19ZnVuY3Rpb24geW4odCxlKXt2YXIgcixuPXt9LGk9e307Zm9yKHIgaW4gdClyIGluIGU/bltyXT1fbih0W3JdLGVbcl0pOmlbcl09dFtyXTtmb3IociBpbiBlKXIgaW4gdHx8KGlbcl09ZVtyXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihyIGluIG4paVtyXT1uW3JdKHQpO3JldHVybiBpfX1mdW5jdGlvbiBibih0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIHQqKDEtcikrZSpyfX1mdW5jdGlvbiB4bih0LGUpe3ZhciByLG4saSxvPXBsLmxhc3RJbmRleD1nbC5sYXN0SW5kZXg9MCxhPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KHI9cGwuZXhlYyh0KSkmJihuPWdsLmV4ZWMoZSkpOykoaT1uLmluZGV4KT5vJiYoaT1lLnNsaWNlKG8saSksc1thXT9zW2FdKz1pOnNbKythXT1pKSwocj1yWzBdKT09PShuPW5bMF0pP3NbYV0/c1thXSs9bjpzWysrYV09bjooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpibihyLG4pfSkpLG89Z2wubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYoaT1lLnNsaWNlKG8pLHNbYV0/c1thXSs9aTpzWysrYV09aSkscy5sZW5ndGg8Mj9sWzBdPyhlPWxbMF0ueCxmdW5jdGlvbih0KXtyZXR1cm4gZSh0KSsiIn0pOmZ1bmN0aW9uKCl7cmV0dXJuIGV9OihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcixuPTA7ZT5uOysrbilzWyhyPWxbbl0pLmldPXIueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIF9uKHQsZSl7Zm9yKHZhciByLG49dWEuaW50ZXJwb2xhdG9ycy5sZW5ndGg7LS1uPj0wJiYhKHI9dWEuaW50ZXJwb2xhdG9yc1tuXSh0LGUpKTspO3JldHVybiByfWZ1bmN0aW9uIHduKHQsZSl7dmFyIHIsbj1bXSxpPVtdLG89dC5sZW5ndGgsYT1lLmxlbmd0aCxzPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKTtmb3Iocj0wO3M+cjsrK3Ipbi5wdXNoKF9uKHRbcl0sZVtyXSkpO2Zvcig7bz5yOysrcilpW3JdPXRbcl07Zm9yKDthPnI7KytyKWlbcl09ZVtyXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHI9MDtzPnI7KytyKWlbcl09bltyXSh0KTtyZXR1cm4gaX19ZnVuY3Rpb24gQW4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAwPj1lPzA6ZT49MT8xOnQoZSl9fWZ1bmN0aW9uIGtuKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMS10KDEtZSl9fWZ1bmN0aW9uIE1uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4uNSooLjU+ZT90KDIqZSk6Mi10KDItMiplKSl9fWZ1bmN0aW9uIFRuKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gRW4odCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIExuKHQpe2lmKDA+PXQpcmV0dXJuIDA7aWYodD49MSlyZXR1cm4gMTt2YXIgZT10KnQscj1lKnQ7cmV0dXJuIDQqKC41PnQ/cjozKih0LWUpK3ItLjc1KX1mdW5jdGlvbiBTbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIENuKHQpe3JldHVybiAxLU1hdGguY29zKHQqSGEpfWZ1bmN0aW9uIFBuKHQpe3JldHVybiBNYXRoLnBvdygyLDEwKih0LTEpKX1mdW5jdGlvbiB6bih0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIFJuKHQsZSl7dmFyIHI7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKGU9LjQ1KSxhcmd1bWVudHMubGVuZ3RoP3I9ZS9WYSpNYXRoLmFzaW4oMS90KToodD0xLHI9ZS80KSxmdW5jdGlvbihuKXtyZXR1cm4gMSt0Kk1hdGgucG93KDIsLTEwKm4pKk1hdGguc2luKChuLXIpKlZhL2UpfX1mdW5jdGlvbiBPbih0KXtyZXR1cm4gdHx8KHQ9MS43MDE1OCksZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSooKHQrMSkqZS10KX19ZnVuY3Rpb24gSW4odCl7cmV0dXJuIDEvMi43NT50PzcuNTYyNSp0KnQ6Mi8yLjc1PnQ/Ny41NjI1Kih0LT0xLjUvMi43NSkqdCsuNzU6Mi41LzIuNzU+dD83LjU2MjUqKHQtPTIuMjUvMi43NSkqdCsuOTM3NTo3LjU2MjUqKHQtPTIuNjI1LzIuNzUpKnQrLjk4NDM3NX1mdW5jdGlvbiBObih0LGUpe3Q9dWEuaGNsKHQpLGU9dWEuaGNsKGUpO3ZhciByPXQuaCxuPXQuYyxpPXQubCxvPWUuaC1yLGE9ZS5jLW4scz1lLmwtaTtyZXR1cm4gaXNOYU4oYSkmJihhPTAsbj1pc05hTihuKT9lLmM6biksaXNOYU4obyk/KG89MCxyPWlzTmFOKHIpP2UuaDpyKTpvPjE4MD9vLT0zNjA6LTE4MD5vJiYobys9MzYwKSxmdW5jdGlvbih0KXtyZXR1cm4gZnQocitvKnQsbithKnQsaStzKnQpKyIifX1mdW5jdGlvbiBqbih0LGUpe3Q9dWEuaHNsKHQpLGU9dWEuaHNsKGUpO3ZhciByPXQuaCxuPXQucyxpPXQubCxvPWUuaC1yLGE9ZS5zLW4scz1lLmwtaTtyZXR1cm4gaXNOYU4oYSkmJihhPTAsbj1pc05hTihuKT9lLnM6biksaXNOYU4obyk/KG89MCxyPWlzTmFOKHIpP2UuaDpyKTpvPjE4MD9vLT0zNjA6LTE4MD5vJiYobys9MzYwKSxmdW5jdGlvbih0KXtyZXR1cm4gdXQocitvKnQsbithKnQsaStzKnQpKyIifX1mdW5jdGlvbiBGbih0LGUpe3Q9dWEubGFiKHQpLGU9dWEubGFiKGUpO3ZhciByPXQubCxuPXQuYSxpPXQuYixvPWUubC1yLGE9ZS5hLW4scz1lLmItaTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHB0KHIrbyp0LG4rYSp0LGkrcyp0KSsiIn19ZnVuY3Rpb24gRG4odCxlKXtyZXR1cm4gZS09dCxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5yb3VuZCh0K2Uqcil9fWZ1bmN0aW9uIEJuKHQpe3ZhciBlPVt0LmEsdC5iXSxyPVt0LmMsdC5kXSxuPVZuKGUpLGk9VW4oZSxyKSxvPVZuKHFuKHIsZSwtaSkpfHwwO2VbMF0qclsxXTxyWzBdKmVbMV0mJihlWzBdKj0tMSxlWzFdKj0tMSxuKj0tMSxpKj0tMSksdGhpcy5yb3RhdGU9KG4/TWF0aC5hdGFuMihlWzFdLGVbMF0pOk1hdGguYXRhbjIoLXJbMF0sclsxXSkpKllhLHRoaXMudHJhbnNsYXRlPVt0LmUsdC5mXSx0aGlzLnNjYWxlPVtuLG9dLHRoaXMuc2tldz1vP01hdGguYXRhbjIoaSxvKSpZYTowfWZ1bmN0aW9uIFVuKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV19ZnVuY3Rpb24gVm4odCl7dmFyIGU9TWF0aC5zcXJ0KFVuKHQsdCkpO3JldHVybiBlJiYodFswXS89ZSx0WzFdLz1lKSxlfWZ1bmN0aW9uIHFuKHQsZSxyKXtyZXR1cm4gdFswXSs9ciplWzBdLHRbMV0rPXIqZVsxXSx0fWZ1bmN0aW9uIEhuKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIsIjoiIn1mdW5jdGlvbiBHbih0LGUscixuKXtpZih0WzBdIT09ZVswXXx8dFsxXSE9PWVbMV0pe3ZhciBpPXIucHVzaCgidHJhbnNsYXRlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO24ucHVzaCh7aTppLTQseDpibih0WzBdLGVbMF0pfSx7aTppLTIseDpibih0WzFdLGVbMV0pfSl9ZWxzZShlWzBdfHxlWzFdKSYmci5wdXNoKCJ0cmFuc2xhdGUoIitlKyIpIil9ZnVuY3Rpb24gWW4odCxlLHIsbil7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLG4ucHVzaCh7aTpyLnB1c2goSG4ocikrInJvdGF0ZSgiLG51bGwsIikiKS0yLHg6Ym4odCxlKX0pKTplJiZyLnB1c2goSG4ocikrInJvdGF0ZSgiK2UrIikiKX1mdW5jdGlvbiBYbih0LGUscixuKXt0IT09ZT9uLnB1c2goe2k6ci5wdXNoKEhuKHIpKyJza2V3WCgiLG51bGwsIikiKS0yLHg6Ym4odCxlKX0pOmUmJnIucHVzaChIbihyKSsic2tld1goIitlKyIpIil9ZnVuY3Rpb24gV24odCxlLHIsbil7aWYodFswXSE9PWVbMF18fHRbMV0hPT1lWzFdKXt2YXIgaT1yLnB1c2goSG4ocikrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO24ucHVzaCh7aTppLTQseDpibih0WzBdLGVbMF0pfSx7aTppLTIseDpibih0WzFdLGVbMV0pfSl9ZWxzZSAxPT09ZVswXSYmMT09PWVbMV18fHIucHVzaChIbihyKSsic2NhbGUoIitlKyIpIil9ZnVuY3Rpb24gWm4odCxlKXt2YXIgcj1bXSxuPVtdO3JldHVybiB0PXVhLnRyYW5zZm9ybSh0KSxlPXVhLnRyYW5zZm9ybShlKSxHbih0LnRyYW5zbGF0ZSxlLnRyYW5zbGF0ZSxyLG4pLFluKHQucm90YXRlLGUucm90YXRlLHIsbiksWG4odC5za2V3LGUuc2tldyxyLG4pLFduKHQuc2NhbGUsZS5zY2FsZSxyLG4pLHQ9ZT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPS0xLG89bi5sZW5ndGg7KytpPG87KXJbKGU9bltpXSkuaV09ZS54KHQpO3JldHVybiByLmpvaW4oIiIpfX1mdW5jdGlvbiAkbih0LGUpe3JldHVybiBlPShlLT10PSt0KXx8MS9lLGZ1bmN0aW9uKHIpe3JldHVybihyLXQpL2V9fWZ1bmN0aW9uIEtuKHQsZSl7cmV0dXJuIGU9KGUtPXQ9K3QpfHwxL2UsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSwoci10KS9lKSl9fWZ1bmN0aW9uIFFuKHQpe2Zvcih2YXIgZT10LnNvdXJjZSxyPXQudGFyZ2V0LG49dGkoZSxyKSxpPVtlXTtlIT09bjspZT1lLnBhcmVudCxpLnB1c2goZSk7Zm9yKHZhciBvPWkubGVuZ3RoO3IhPT1uOylpLnNwbGljZShvLDAscikscj1yLnBhcmVudDtyZXR1cm4gaX1mdW5jdGlvbiBKbih0KXtmb3IodmFyIGU9W10scj10LnBhcmVudDtudWxsIT1yOyllLnB1c2godCksdD1yLHI9ci5wYXJlbnQ7cmV0dXJuIGUucHVzaCh0KSxlfWZ1bmN0aW9uIHRpKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7Zm9yKHZhciByPUpuKHQpLG49Sm4oZSksaT1yLnBvcCgpLG89bi5wb3AoKSxhPW51bGw7aT09PW87KWE9aSxpPXIucG9wKCksbz1uLnBvcCgpO3JldHVybiBhfWZ1bmN0aW9uIGVpKHQpe3QuZml4ZWR8PTJ9ZnVuY3Rpb24gcmkodCl7dC5maXhlZCY9LTd9ZnVuY3Rpb24gbmkodCl7dC5maXhlZHw9NCx0LnB4PXQueCx0LnB5PXQueX1mdW5jdGlvbiBpaSh0KXt0LmZpeGVkJj0tNX1mdW5jdGlvbiBvaSh0LGUscil7dmFyIG49MCxpPTA7aWYodC5jaGFyZ2U9MCwhdC5sZWFmKWZvcih2YXIgbyxhPXQubm9kZXMscz1hLmxlbmd0aCxsPS0xOysrbDxzOylvPWFbbF0sbnVsbCE9byYmKG9pKG8sZSxyKSx0LmNoYXJnZSs9by5jaGFyZ2Usbis9by5jaGFyZ2Uqby5jeCxpKz1vLmNoYXJnZSpvLmN5KTtpZih0LnBvaW50KXt0LmxlYWZ8fCh0LnBvaW50LngrPU1hdGgucmFuZG9tKCktLjUsdC5wb2ludC55Kz1NYXRoLnJhbmRvbSgpLS41KTt2YXIgYz1lKnJbdC5wb2ludC5pbmRleF07dC5jaGFyZ2UrPXQucG9pbnRDaGFyZ2U9YyxuKz1jKnQucG9pbnQueCxpKz1jKnQucG9pbnQueX10LmN4PW4vdC5jaGFyZ2UsdC5jeT1pL3QuY2hhcmdlfWZ1bmN0aW9uIGFpKHQsZSl7cmV0dXJuIHVhLnJlYmluZCh0LGUsInNvcnQiLCJjaGlsZHJlbiIsInZhbHVlIiksdC5ub2Rlcz10LHQubGlua3M9ZmksdH1mdW5jdGlvbiBzaSh0LGUpe2Zvcih2YXIgcj1bdF07bnVsbCE9KHQ9ci5wb3AoKSk7KWlmKGUodCksKGk9dC5jaGlsZHJlbikmJihuPWkubGVuZ3RoKSlmb3IodmFyIG4saTstLW4+PTA7KXIucHVzaChpW25dKX1mdW5jdGlvbiBsaSh0LGUpe2Zvcih2YXIgcj1bdF0sbj1bXTtudWxsIT0odD1yLnBvcCgpKTspaWYobi5wdXNoKHQpLChvPXQuY2hpbGRyZW4pJiYoaT1vLmxlbmd0aCkpZm9yKHZhciBpLG8sYT0tMTsrK2E8aTspci5wdXNoKG9bYV0pO2Zvcig7bnVsbCE9KHQ9bi5wb3AoKSk7KWUodCl9ZnVuY3Rpb24gY2kodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gdWkodCl7cmV0dXJuIHQudmFsdWV9ZnVuY3Rpb24gaGkodCxlKXtyZXR1cm4gZS52YWx1ZS10LnZhbHVlfWZ1bmN0aW9uIGZpKHQpe3JldHVybiB1YS5tZXJnZSh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4odC5jaGlsZHJlbnx8W10pLm1hcChmdW5jdGlvbihlKXtyZXR1cm57c291cmNlOnQsdGFyZ2V0OmV9fSl9KSl9ZnVuY3Rpb24gZGkodCl7cmV0dXJuIHQueH1mdW5jdGlvbiBwaSh0KXtyZXR1cm4gdC55fWZ1bmN0aW9uIGdpKHQsZSxyKXt0LnkwPWUsdC55PXJ9ZnVuY3Rpb24gdmkodCl7cmV0dXJuIHVhLnJhbmdlKHQubGVuZ3RoKX1mdW5jdGlvbiBtaSh0KXtmb3IodmFyIGU9LTEscj10WzBdLmxlbmd0aCxuPVtdOysrZTxyOyluW2VdPTA7cmV0dXJuIG59ZnVuY3Rpb24geWkodCl7Zm9yKHZhciBlLHI9MSxuPTAsaT10WzBdWzFdLG89dC5sZW5ndGg7bz5yOysrcikoZT10W3JdWzFdKT5pJiYobj1yLGk9ZSk7cmV0dXJuIG59ZnVuY3Rpb24gYmkodCl7cmV0dXJuIHQucmVkdWNlKHhpLDApfWZ1bmN0aW9uIHhpKHQsZSl7cmV0dXJuIHQrZVsxXX1mdW5jdGlvbiBfaSh0LGUpe3JldHVybiB3aSh0LE1hdGguY2VpbChNYXRoLmxvZyhlLmxlbmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIHdpKHQsZSl7Zm9yKHZhciByPS0xLG49K3RbMF0saT0odFsxXS1uKS9lLG89W107KytyPD1lOylvW3JdPWkqcituO3JldHVybiBvfWZ1bmN0aW9uIEFpKHQpe3JldHVyblt1YS5taW4odCksdWEubWF4KHQpXX1mdW5jdGlvbiBraSh0LGUpe3JldHVybiB0LnZhbHVlLWUudmFsdWV9ZnVuY3Rpb24gTWkodCxlKXt2YXIgcj10Ll9wYWNrX25leHQ7dC5fcGFja19uZXh0PWUsZS5fcGFja19wcmV2PXQsZS5fcGFja19uZXh0PXIsci5fcGFja19wcmV2PWV9ZnVuY3Rpb24gVGkodCxlKXt0Ll9wYWNrX25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiBFaSh0LGUpe3ZhciByPWUueC10Lngsbj1lLnktdC55LGk9dC5yK2UucjtyZXR1cm4uOTk5KmkqaT5yKnIrbipufWZ1bmN0aW9uIExpKHQpe2Z1bmN0aW9uIGUodCl7dT1NYXRoLm1pbih0LngtdC5yLHUpLGg9TWF0aC5tYXgodC54K3QucixoKSxmPU1hdGgubWluKHQueS10LnIsZiksZD1NYXRoLm1heCh0LnkrdC5yLGQpfWlmKChyPXQuY2hpbGRyZW4pJiYoYz1yLmxlbmd0aCkpe3ZhciByLG4saSxvLGEscyxsLGMsdT0xLzAsaD0tKDEvMCksZj0xLzAsZD0tKDEvMCk7aWYoci5mb3JFYWNoKFNpKSxuPXJbMF0sbi54PS1uLnIsbi55PTAsZShuKSxjPjEmJihpPXJbMV0saS54PWkucixpLnk9MCxlKGkpLGM+MikpZm9yKG89clsyXSx6aShuLGksbyksZShvKSxNaShuLG8pLG4uX3BhY2tfcHJldj1vLE1pKG8saSksaT1uLl9wYWNrX25leHQsYT0zO2M+YTthKyspe3ppKG4saSxvPXJbYV0pO3ZhciBwPTAsZz0xLHY9MTtmb3Iocz1pLl9wYWNrX25leHQ7cyE9PWk7cz1zLl9wYWNrX25leHQsZysrKWlmKEVpKHMsbykpe3A9MTticmVha31pZigxPT1wKWZvcihsPW4uX3BhY2tfcHJldjtsIT09cy5fcGFja19wcmV2JiYhRWkobCxvKTtsPWwuX3BhY2tfcHJldix2KyspO3A/KHY+Z3x8Zz09diYmaS5yPG4ucj9UaShuLGk9cyk6VGkobj1sLGkpLGEtLSk6KE1pKG4sbyksaT1vLGUobykpfXZhciBtPSh1K2gpLzIseT0oZitkKS8yLGI9MDtmb3IoYT0wO2M+YTthKyspbz1yW2FdLG8ueC09bSxvLnktPXksYj1NYXRoLm1heChiLG8ucitNYXRoLnNxcnQoby54Km8ueCtvLnkqby55KSk7dC5yPWIsci5mb3JFYWNoKENpKX19ZnVuY3Rpb24gU2kodCl7dC5fcGFja19uZXh0PXQuX3BhY2tfcHJldj10fWZ1bmN0aW9uIENpKHQpe2RlbGV0ZSB0Ll9wYWNrX25leHQsZGVsZXRlIHQuX3BhY2tfcHJldn1mdW5jdGlvbiBQaSh0LGUscixuKXt2YXIgaT10LmNoaWxkcmVuO2lmKHQueD1lKz1uKnQueCx0Lnk9cis9bip0LnksdC5yKj1uLGkpZm9yKHZhciBvPS0xLGE9aS5sZW5ndGg7KytvPGE7KVBpKGlbb10sZSxyLG4pfWZ1bmN0aW9uIHppKHQsZSxyKXt2YXIgbj10LnIrci5yLGk9ZS54LXQueCxvPWUueS10Lnk7aWYobiYmKGl8fG8pKXt2YXIgYT1lLnIrci5yLHM9aSppK28qbzthKj1hLG4qPW47dmFyIGw9LjUrKG4tYSkvKDIqcyksYz1NYXRoLnNxcnQoTWF0aC5tYXgoMCwyKmEqKG4rcyktKG4tPXMpKm4tYSphKSkvKDIqcyk7ci54PXQueCtsKmkrYypvLHIueT10LnkrbCpvLWMqaX1lbHNlIHIueD10LngrbixyLnk9dC55fWZ1bmN0aW9uIFJpKHQsZSl7cmV0dXJuIHQucGFyZW50PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gT2kodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZS5sZW5ndGg/ZVswXTp0LnR9ZnVuY3Rpb24gSWkodCl7dmFyIGUscj10LmNoaWxkcmVuO3JldHVybihlPXIubGVuZ3RoKT9yW2UtMV06dC50fWZ1bmN0aW9uIE5pKHQsZSxyKXt2YXIgbj1yLyhlLmktdC5pKTtlLmMtPW4sZS5zKz1yLHQuYys9bixlLnorPXIsZS5tKz1yfWZ1bmN0aW9uIGppKHQpe2Zvcih2YXIgZSxyPTAsbj0wLGk9dC5jaGlsZHJlbixvPWkubGVuZ3RoOy0tbz49MDspZT1pW29dLGUueis9cixlLm0rPXIscis9ZS5zKyhuKz1lLmMpfWZ1bmN0aW9uIEZpKHQsZSxyKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpyfWZ1bmN0aW9uIERpKHQpe3JldHVybiAxK3VhLm1heCh0LGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KX1mdW5jdGlvbiBCaSh0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnh9LDApL3QubGVuZ3RofWZ1bmN0aW9uIFVpKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGUmJmUubGVuZ3RoP1VpKGVbMF0pOnR9ZnVuY3Rpb24gVmkodCl7dmFyIGUscj10LmNoaWxkcmVuO3JldHVybiByJiYoZT1yLmxlbmd0aCk/VmkocltlLTFdKTp0fWZ1bmN0aW9uIHFpKHQpe3JldHVybnt4OnQueCx5OnQueSxkeDp0LmR4LGR5OnQuZHl9fWZ1bmN0aW9uIEhpKHQsZSl7dmFyIHI9dC54K2VbM10sbj10LnkrZVswXSxpPXQuZHgtZVsxXS1lWzNdLG89dC5keS1lWzBdLWVbMl07cmV0dXJuIDA+aSYmKHIrPWkvMixpPTApLDA+byYmKG4rPW8vMixvPTApLHt4OnIseTpuLGR4OmksZHk6b319ZnVuY3Rpb24gR2kodCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJuIHI+ZT9bZSxyXTpbcixlXX1mdW5jdGlvbiBZaSh0KXtyZXR1cm4gdC5yYW5nZUV4dGVudD90LnJhbmdlRXh0ZW50KCk6R2kodC5yYW5nZSgpKX1mdW5jdGlvbiBYaSh0LGUscixuKXt2YXIgaT1yKHRbMF0sdFsxXSksbz1uKGVbMF0sZVsxXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBvKGkodCkpfX1mdW5jdGlvbiBXaSh0LGUpe3ZhciByLG49MCxpPXQubGVuZ3RoLTEsbz10W25dLGE9dFtpXTtyZXR1cm4gbz5hJiYocj1uLG49aSxpPXIscj1vLG89YSxhPXIpLHRbbl09ZS5mbG9vcihvKSx0W2ldPWUuY2VpbChhKSx0fWZ1bmN0aW9uIFppKHQpe3JldHVybiB0P3tmbG9vcjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlL3QpKnR9LGNlaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguY2VpbChlL3QpKnR9fTpUbH1mdW5jdGlvbiAkaSh0LGUscixuKXt2YXIgaT1bXSxvPVtdLGE9MCxzPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xO2Zvcih0W3NdPHRbMF0mJih0PXQuc2xpY2UoKS5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTsrK2E8PXM7KWkucHVzaChyKHRbYS0xXSx0W2FdKSksby5wdXNoKG4oZVthLTFdLGVbYV0pKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9dWEuYmlzZWN0KHQsZSwxLHMpLTE7cmV0dXJuIG9bcl0oaVtyXShlKSl9fWZ1bmN0aW9uIEtpKHQsZSxyLG4pe2Z1bmN0aW9uIGkoKXt2YXIgaT1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk+Mj8kaTpYaSxsPW4/S246JG47cmV0dXJuIGE9aSh0LGUsbCxyKSxzPWkoZSx0LGwsX24pLG99ZnVuY3Rpb24gbyh0KXtyZXR1cm4gYSh0KX12YXIgYSxzO3JldHVybiBvLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gcyh0KX0sby5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZS5tYXAoTnVtYmVyKSxpKCkpOnR9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxpKCkpOmV9LG8ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gby5yYW5nZSh0KS5pbnRlcnBvbGF0ZShEbil9LG8uY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxpKCkpOm59LG8uaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxpKCkpOnJ9LG8udGlja3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGVvKHQsZSl9LG8udGlja0Zvcm1hdD1mdW5jdGlvbihlLHIpe3JldHVybiBybyh0LGUscil9LG8ubmljZT1mdW5jdGlvbihlKXtyZXR1cm4gSmkodCxlKSxpKCl9LG8uY29weT1mdW5jdGlvbigpe3JldHVybiBLaSh0LGUscixuKX0saSgpfWZ1bmN0aW9uIFFpKHQsZSl7cmV0dXJuIHVhLnJlYmluZCh0LGUsInJhbmdlIiwicmFuZ2VSb3VuZCIsImludGVycG9sYXRlIiwiY2xhbXAiKX1mdW5jdGlvbiBKaSh0LGUpe3JldHVybiBXaSh0LFppKHRvKHQsZSlbMl0pKSxXaSh0LFppKHRvKHQsZSlbMl0pKSx0fWZ1bmN0aW9uIHRvKHQsZSl7bnVsbD09ZSYmKGU9MTApO3ZhciByPUdpKHQpLG49clsxXS1yWzBdLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhuL2UpL01hdGguTE4xMCkpLG89ZS9uKmk7cmV0dXJuLjE1Pj1vP2kqPTEwOi4zNT49bz9pKj01Oi43NT49byYmKGkqPTIpLHJbMF09TWF0aC5jZWlsKHJbMF0vaSkqaSxyWzFdPU1hdGguZmxvb3IoclsxXS9pKSppKy41KmksclsyXT1pLHJ9ZnVuY3Rpb24gZW8odCxlKXtyZXR1cm4gdWEucmFuZ2UuYXBwbHkodWEsdG8odCxlKSl9ZnVuY3Rpb24gcm8odCxlLHIpe3ZhciBuPXRvKHQsZSk7aWYocil7dmFyIGk9cHMuZXhlYyhyKTtpZihpLnNoaWZ0KCksInMiPT09aVs4XSl7dmFyIG89dWEuZm9ybWF0UHJlZml4KE1hdGgubWF4KHdhKG5bMF0pLHdhKG5bMV0pKSk7cmV0dXJuIGlbN118fChpWzddPSIuIitubyhvLnNjYWxlKG5bMl0pKSksaVs4XT0iZiIscj11YS5mb3JtYXQoaS5qb2luKCIiKSksZnVuY3Rpb24odCl7cmV0dXJuIHIoby5zY2FsZSh0KSkrby5zeW1ib2x9fWlbN118fChpWzddPSIuIitpbyhpWzhdLG4pKSxyPWkuam9pbigiIil9ZWxzZSByPSIsLiIrbm8oblsyXSkrImYiO3JldHVybiB1YS5mb3JtYXQocil9ZnVuY3Rpb24gbm8odCl7cmV0dXJuLU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjEwKy4wMSl9ZnVuY3Rpb24gaW8odCxlKXt2YXIgcj1ubyhlWzJdKTtyZXR1cm4gdCBpbiBFbD9NYXRoLmFicyhyLW5vKE1hdGgubWF4KHdhKGVbMF0pLHdhKGVbMV0pKSkpKyArKCJlIiE9PXQpOnItMiooIiUiPT09dCl9ZnVuY3Rpb24gb28odCxlLHIsbil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4ocj9NYXRoLmxvZygwPnQ/MDp0KTotTWF0aC5sb2codD4wPzA6LXQpKS9NYXRoLmxvZyhlKX1mdW5jdGlvbiBvKHQpe3JldHVybiByP01hdGgucG93KGUsdCk6LU1hdGgucG93KGUsLXQpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIHQoaShlKSl9cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKGUpe3JldHVybiBvKHQuaW52ZXJ0KGUpKX0sYS5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZVswXT49MCx0LmRvbWFpbigobj1lLm1hcChOdW1iZXIpKS5tYXAoaSkpLGEpOm59LGEuYmFzZT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rcix0LmRvbWFpbihuLm1hcChpKSksYSk6ZX0sYS5uaWNlPWZ1bmN0aW9uKCl7dmFyIGU9V2kobi5tYXAoaSkscj9NYXRoOlNsKTtyZXR1cm4gdC5kb21haW4oZSksbj1lLm1hcChvKSxhfSxhLnRpY2tzPWZ1bmN0aW9uKCl7dmFyIHQ9R2kobiksYT1bXSxzPXRbMF0sbD10WzFdLGM9TWF0aC5mbG9vcihpKHMpKSx1PU1hdGguY2VpbChpKGwpKSxoPWUlMT8yOmU7aWYoaXNGaW5pdGUodS1jKSl7aWYocil7Zm9yKDt1PmM7YysrKWZvcih2YXIgZj0xO2g+ZjtmKyspYS5wdXNoKG8oYykqZik7YS5wdXNoKG8oYykpfWVsc2UgZm9yKGEucHVzaChvKGMpKTtjKys8dTspZm9yKHZhciBmPWgtMTtmPjA7Zi0tKWEucHVzaChvKGMpKmYpO2ZvcihjPTA7YVtjXTxzO2MrKyk7Zm9yKHU9YS5sZW5ndGg7YVt1LTFdPmw7dS0tKTthPWEuc2xpY2UoYyx1KX1yZXR1cm4gYX0sYS50aWNrRm9ybWF0PWZ1bmN0aW9uKHQscil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIExsO2FyZ3VtZW50cy5sZW5ndGg8Mj9yPUxsOiJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj11YS5mb3JtYXQocikpO3ZhciBuPU1hdGgubWF4KDEsZSp0L2EudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgYT10L28oTWF0aC5yb3VuZChpKHQpKSk7cmV0dXJuIGUtLjU+YSplJiYoYSo9ZSksbj49YT9yKHQpOiIifX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIG9vKHQuY29weSgpLGUscixuKX0sUWkoYSx0KX1mdW5jdGlvbiBhbyh0LGUscil7ZnVuY3Rpb24gbihlKXtyZXR1cm4gdChpKGUpKX12YXIgaT1zbyhlKSxvPXNvKDEvZSk7cmV0dXJuIG4uaW52ZXJ0PWZ1bmN0aW9uKGUpe3JldHVybiBvKHQuaW52ZXJ0KGUpKX0sbi5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQuZG9tYWluKChyPWUubWFwKE51bWJlcikpLm1hcChpKSksbik6cn0sbi50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gZW8ocix0KX0sbi50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJvKHIsdCxlKX0sbi5uaWNlPWZ1bmN0aW9uKHQpe3JldHVybiBuLmRvbWFpbihKaShyLHQpKX0sbi5leHBvbmVudD1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1zbyhlPWEpLG89c28oMS9lKSx0LmRvbWFpbihyLm1hcChpKSksbik6ZX0sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGFvKHQuY29weSgpLGUscil9LFFpKG4sdCl9ZnVuY3Rpb24gc28odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAwPmU/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIGxvKHQsZSl7ZnVuY3Rpb24gcihyKXtyZXR1cm4gb1soKGkuZ2V0KHIpfHwoInJhbmdlIj09PWUudD9pLnNldChyLHQucHVzaChyKSk6TmFOKSktMSklby5sZW5ndGhdfWZ1bmN0aW9uIG4oZSxyKXtyZXR1cm4gdWEucmFuZ2UodC5sZW5ndGgpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZStyKnR9KX12YXIgaSxvLGE7cmV0dXJuIHIuZG9tYWluPWZ1bmN0aW9uKG4pe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0O3Q9W10saT1uZXcgaDtmb3IodmFyIG8sYT0tMSxzPW4ubGVuZ3RoOysrYTxzOylpLmhhcyhvPW5bYV0pfHxpLnNldChvLHQucHVzaChvKSk7cmV0dXJuIHJbZS50XS5hcHBseShyLGUuYSl9LHIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxhPTAsZT17dDoicmFuZ2UiLGE6YXJndW1lbnRzfSxyKTpvfSxyLnJhbmdlUG9pbnRzPWZ1bmN0aW9uKGkscyl7YXJndW1lbnRzLmxlbmd0aDwyJiYocz0wKTt2YXIgbD1pWzBdLGM9aVsxXSx1PXQubGVuZ3RoPDI/KGw9KGwrYykvMiwwKTooYy1sKS8odC5sZW5ndGgtMStzKTtyZXR1cm4gbz1uKGwrdSpzLzIsdSksYT0wLGU9e3Q6InJhbmdlUG9pbnRzIixhOmFyZ3VtZW50c30scn0sci5yYW5nZVJvdW5kUG9pbnRzPWZ1bmN0aW9uKGkscyl7YXJndW1lbnRzLmxlbmd0aDwyJiYocz0wKTt2YXIgbD1pWzBdLGM9aVsxXSx1PXQubGVuZ3RoPDI/KGw9Yz1NYXRoLnJvdW5kKChsK2MpLzIpLDApOihjLWwpLyh0Lmxlbmd0aC0xK3MpfDA7cmV0dXJuIG89bihsK01hdGgucm91bmQodSpzLzIrKGMtbC0odC5sZW5ndGgtMStzKSp1KS8yKSx1KSxhPTAsZT17dDoicmFuZ2VSb3VuZFBvaW50cyIsYTphcmd1bWVudHN9LHJ9LHIucmFuZ2VCYW5kcz1mdW5jdGlvbihpLHMsbCl7YXJndW1lbnRzLmxlbmd0aDwyJiYocz0wKSxhcmd1bWVudHMubGVuZ3RoPDMmJihsPXMpO3ZhciBjPWlbMV08aVswXSx1PWlbYy0wXSxoPWlbMS1jXSxmPShoLXUpLyh0Lmxlbmd0aC1zKzIqbCk7cmV0dXJuIG89bih1K2YqbCxmKSxjJiZvLnJldmVyc2UoKSxhPWYqKDEtcyksZT17dDoicmFuZ2VCYW5kcyIsYTphcmd1bWVudHN9LHJ9LHIucmFuZ2VSb3VuZEJhbmRzPWZ1bmN0aW9uKGkscyxsKXthcmd1bWVudHMubGVuZ3RoPDImJihzPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGw9cyk7dmFyIGM9aVsxXTxpWzBdLHU9aVtjLTBdLGg9aVsxLWNdLGY9TWF0aC5mbG9vcigoaC11KS8odC5sZW5ndGgtcysyKmwpKTtyZXR1cm4gbz1uKHUrTWF0aC5yb3VuZCgoaC11LSh0Lmxlbmd0aC1zKSpmKS8yKSxmKSxjJiZvLnJldmVyc2UoKSxhPU1hdGgucm91bmQoZiooMS1zKSksZT17dDoicmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50c30scn0sci5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gYX0sci5yYW5nZUV4dGVudD1mdW5jdGlvbigpe3JldHVybiBHaShlLmFbMF0pfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gbG8odCxlKX0sci5kb21haW4odCl9ZnVuY3Rpb24gY28odCxlKXtmdW5jdGlvbiByKCl7dmFyIHI9MCxpPWUubGVuZ3RoO2ZvcihzPVtdOysrcjxpOylzW3ItMV09dWEucXVhbnRpbGUodCxyL2kpO3JldHVybiBufWZ1bmN0aW9uIG4odCl7cmV0dXJuIGlzTmFOKHQ9K3QpP3ZvaWQgMDplW3VhLmJpc2VjdChzLHQpXX12YXIgcztyZXR1cm4gbi5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZS5tYXAobykuZmlsdGVyKGEpLnNvcnQoaSkscigpKTp0fSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQscigpKTplfSxuLnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBzfSxuLmludmVydEV4dGVudD1mdW5jdGlvbihyKXtyZXR1cm4gcj1lLmluZGV4T2YociksMD5yP1tOYU4sTmFOXTpbcj4wP3Nbci0xXTp0WzBdLHI8cy5sZW5ndGg/c1tyXTp0W3QubGVuZ3RoLTFdXX0sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvKHQsZSl9LHIoKX1mdW5jdGlvbiB1byh0LGUscil7ZnVuY3Rpb24gbihlKXtyZXR1cm4gcltNYXRoLm1heCgwLE1hdGgubWluKGEsTWF0aC5mbG9vcihvKihlLXQpKSkpXX1mdW5jdGlvbiBpKCl7cmV0dXJuIG89ci5sZW5ndGgvKGUtdCksYT1yLmxlbmd0aC0xLG59dmFyIG8sYTtyZXR1cm4gbi5kb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K3JbMF0sZT0rcltyLmxlbmd0aC0xXSxpKCkpOlt0LGVdfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaSgpKTpyfSxuLmludmVydEV4dGVudD1mdW5jdGlvbihlKXtyZXR1cm4gZT1yLmluZGV4T2YoZSksZT0wPmU/TmFOOmUvbyt0LFtlLGUrMS9vXX0sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHVvKHQsZSxyKX0saSgpfWZ1bmN0aW9uIGhvKHQsZSl7ZnVuY3Rpb24gcihyKXtyZXR1cm4gcj49cj9lW3VhLmJpc2VjdCh0LHIpXTp2b2lkIDB9cmV0dXJuIHIuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHIpOmV9LHIuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHIpe3JldHVybiByPWUuaW5kZXhPZihyKSxbdFtyLTFdLHRbcl1dfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaG8odCxlKX0scn1mdW5jdGlvbiBmbyh0KXtmdW5jdGlvbiBlKHQpe3JldHVybit0fXJldHVybiBlLmludmVydD1lLGUuZG9tYWluPWUucmFuZ2U9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ci5tYXAoZSksZSk6dH0sZS50aWNrcz1mdW5jdGlvbihlKXtyZXR1cm4gZW8odCxlKX0sZS50aWNrRm9ybWF0PWZ1bmN0aW9uKGUscil7cmV0dXJuIHJvKHQsZSxyKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGZvKHQpfSxlfWZ1bmN0aW9uIHBvKCl7cmV0dXJuIDB9ZnVuY3Rpb24gZ28odCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gdm8odCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gbW8odCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiB5byh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBibyh0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiB4byh0LGUscixuKXtyZXR1cm4odC1yKSplLShlLW4pKnQ+MD8wOjF9ZnVuY3Rpb24gX28odCxlLHIsbixpKXt2YXIgbz10WzBdLWVbMF0sYT10WzFdLWVbMV0scz0oaT9uOi1uKS9NYXRoLnNxcnQobypvK2EqYSksbD1zKmEsYz0tcypvLHU9dFswXStsLGg9dFsxXStjLGY9ZVswXStsLGQ9ZVsxXStjLHA9KHUrZikvMixnPShoK2QpLzIsdj1mLXUsbT1kLWgseT12KnYrbSptLGI9ci1uLHg9dSpkLWYqaCxfPSgwPm0/LTE6MSkqTWF0aC5zcXJ0KE1hdGgubWF4KDAsYipiKnkteCp4KSksdz0oeCptLXYqXykveSxBPSgteCp2LW0qXykveSxrPSh4Km0rdipfKS95LE09KC14KnYrbSpfKS95LFQ9dy1wLEU9QS1nLEw9ay1wLFM9TS1nO3JldHVybiBUKlQrRSpFPkwqTCtTKlMmJih3PWssQT1NKSxbW3ctbCxBLWNdLFt3KnIvYixBKnIvYl1dfWZ1bmN0aW9uIHdvKHQpe2Z1bmN0aW9uIGUoZSl7ZnVuY3Rpb24gYSgpe2MucHVzaCgiTSIsbyh0KHUpLHMpKX1mb3IodmFyIGwsYz1bXSx1PVtdLGg9LTEsZj1lLmxlbmd0aCxkPUx0KHIpLHA9THQobik7KytoPGY7KWkuY2FsbCh0aGlzLGw9ZVtoXSxoKT91LnB1c2goWytkLmNhbGwodGhpcyxsLGgpLCtwLmNhbGwodGhpcyxsLGgpXSk6dS5sZW5ndGgmJihhKCksdT1bXSk7cmV0dXJuIHUubGVuZ3RoJiZhKCksYy5sZW5ndGg/Yy5qb2luKCIiKTpudWxsfXZhciByPUNyLG49UHIsaT1QZSxvPUFvLGE9by5rZXkscz0uNztyZXR1cm4gZS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsZSk6cn0sZS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsZSk6aX0sZS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD9vPXQ6KG89SWwuZ2V0KHQpfHxBbykua2V5LGUpOmF9LGUudGVuc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGUpOnN9LGV9ZnVuY3Rpb24gQW8odCl7cmV0dXJuIHQubGVuZ3RoPjE/dC5qb2luKCJMIik6dCsiWiJ9ZnVuY3Rpb24ga28odCl7cmV0dXJuIHQuam9pbigiTCIpKyJaIn1mdW5jdGlvbiBNbyh0KXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLG49dFswXSxpPVtuWzBdLCIsIixuWzFdXTsrK2U8cjspaS5wdXNoKCJIIiwoblswXSsobj10W2VdKVswXSkvMiwiViIsblsxXSk7cmV0dXJuIHI+MSYmaS5wdXNoKCJIIixuWzBdKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIFRvKHQpe2Zvcih2YXIgZT0wLHI9dC5sZW5ndGgsbj10WzBdLGk9W25bMF0sIiwiLG5bMV1dOysrZTxyOylpLnB1c2goIlYiLChuPXRbZV0pWzFdLCJIIixuWzBdKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBFbyh0KXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLG49dFswXSxpPVtuWzBdLCIsIixuWzFdXTsrK2U8cjspaS5wdXNoKCJIIiwobj10W2VdKVswXSwiViIsblsxXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gTG8odCxlKXtyZXR1cm4gdC5sZW5ndGg8ND9Bbyh0KTp0WzFdK1BvKHQuc2xpY2UoMSwtMSksem8odCxlKSl9ZnVuY3Rpb24gU28odCxlKXtyZXR1cm4gdC5sZW5ndGg8Mz9rbyh0KTp0WzBdK1BvKCh0LnB1c2godFswXSksdCksem8oW3RbdC5sZW5ndGgtMl1dLmNvbmNhdCh0LFt0WzFdXSksZSkpfWZ1bmN0aW9uIENvKHQsZSl7cmV0dXJuIHQubGVuZ3RoPDM/QW8odCk6dFswXStQbyh0LHpvKHQsZSkpfWZ1bmN0aW9uIFBvKHQsZSl7aWYoZS5sZW5ndGg8MXx8dC5sZW5ndGghPWUubGVuZ3RoJiZ0Lmxlbmd0aCE9ZS5sZW5ndGgrMilyZXR1cm4gQW8odCk7dmFyIHI9dC5sZW5ndGghPWUubGVuZ3RoLG49IiIsaT10WzBdLG89dFsxXSxhPWVbMF0scz1hLGw9MTtpZihyJiYobis9IlEiKyhvWzBdLTIqYVswXS8zKSsiLCIrKG9bMV0tMiphWzFdLzMpKyIsIitvWzBdKyIsIitvWzFdLGk9dFsxXSxsPTIpLGUubGVuZ3RoPjEpe3M9ZVsxXSxvPXRbbF0sbCsrLG4rPSJDIisoaVswXSthWzBdKSsiLCIrKGlbMV0rYVsxXSkrIiwiKyhvWzBdLXNbMF0pKyIsIisob1sxXS1zWzFdKSsiLCIrb1swXSsiLCIrb1sxXTtmb3IodmFyIGM9MjtjPGUubGVuZ3RoO2MrKyxsKyspbz10W2xdLHM9ZVtjXSxuKz0iUyIrKG9bMF0tc1swXSkrIiwiKyhvWzFdLXNbMV0pKyIsIitvWzBdKyIsIitvWzFdfWlmKHIpe3ZhciB1PXRbbF07bis9IlEiKyhvWzBdKzIqc1swXS8zKSsiLCIrKG9bMV0rMipzWzFdLzMpKyIsIit1WzBdKyIsIit1WzFdfXJldHVybiBufWZ1bmN0aW9uIHpvKHQsZSl7Zm9yKHZhciByLG49W10saT0oMS1lKS8yLG89dFswXSxhPXRbMV0scz0xLGw9dC5sZW5ndGg7KytzPGw7KXI9byxvPWEsYT10W3NdLG4ucHVzaChbaSooYVswXS1yWzBdKSxpKihhWzFdLXJbMV0pXSk7cmV0dXJuIG59ZnVuY3Rpb24gUm8odCl7aWYodC5sZW5ndGg8MylyZXR1cm4gQW8odCk7dmFyIGU9MSxyPXQubGVuZ3RoLG49dFswXSxpPW5bMF0sbz1uWzFdLGE9W2ksaSxpLChuPXRbMV0pWzBdXSxzPVtvLG8sbyxuWzFdXSxsPVtpLCIsIixvLCJMIixqbyhGbCxhKSwiLCIsam8oRmwscyldO2Zvcih0LnB1c2godFtyLTFdKTsrK2U8PXI7KW49dFtlXSxhLnNoaWZ0KCksYS5wdXNoKG5bMF0pLHMuc2hpZnQoKSxzLnB1c2goblsxXSksRm8obCxhLHMpO3JldHVybiB0LnBvcCgpLGwucHVzaCgiTCIsbiksbC5qb2luKCIiKX1mdW5jdGlvbiBPbyh0KXtpZih0Lmxlbmd0aDw0KXJldHVybiBBbyh0KTtmb3IodmFyIGUscj1bXSxuPS0xLGk9dC5sZW5ndGgsbz1bMF0sYT1bMF07KytuPDM7KWU9dFtuXSxvLnB1c2goZVswXSksYS5wdXNoKGVbMV0pO2ZvcihyLnB1c2goam8oRmwsbykrIiwiK2pvKEZsLGEpKSwtLW47KytuPGk7KWU9dFtuXSxvLnNoaWZ0KCksby5wdXNoKGVbMF0pLGEuc2hpZnQoKSxhLnB1c2goZVsxXSksRm8ocixvLGEpO3JldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIElvKHQpe2Zvcih2YXIgZSxyLG49LTEsaT10Lmxlbmd0aCxvPWkrNCxhPVtdLHM9W107KytuPDQ7KXI9dFtuJWldLGEucHVzaChyWzBdKSxzLnB1c2goclsxXSk7Zm9yKGU9W2pvKEZsLGEpLCIsIixqbyhGbCxzKV0sLS1uOysrbjxvOylyPXRbbiVpXSxhLnNoaWZ0KCksYS5wdXNoKHJbMF0pLHMuc2hpZnQoKSxzLnB1c2goclsxXSksRm8oZSxhLHMpO3JldHVybiBlLmpvaW4oIiIpfWZ1bmN0aW9uIE5vKHQsZSl7dmFyIHI9dC5sZW5ndGgtMTtpZihyKWZvcih2YXIgbixpLG89dFswXVswXSxhPXRbMF1bMV0scz10W3JdWzBdLW8sbD10W3JdWzFdLWEsYz0tMTsrK2M8PXI7KW49dFtjXSxpPWMvcixuWzBdPWUqblswXSsoMS1lKSoobytpKnMpLG5bMV09ZSpuWzFdKygxLWUpKihhK2kqbCk7cmV0dXJuIFJvKHQpfWZ1bmN0aW9uIGpvKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdK3RbM10qZVszXX1mdW5jdGlvbiBGbyh0LGUscil7dC5wdXNoKCJDIixqbyhObCxlKSwiLCIsam8oTmwsciksIiwiLGpvKGpsLGUpLCIsIixqbyhqbCxyKSwiLCIsam8oRmwsZSksIiwiLGpvKEZsLHIpKX1mdW5jdGlvbiBEbyh0LGUpe3JldHVybihlWzFdLXRbMV0pLyhlWzBdLXRbMF0pfWZ1bmN0aW9uIEJvKHQpe2Zvcih2YXIgZT0wLHI9dC5sZW5ndGgtMSxuPVtdLGk9dFswXSxvPXRbMV0sYT1uWzBdPURvKGksbyk7KytlPHI7KW5bZV09KGErKGE9RG8oaT1vLG89dFtlKzFdKSkpLzI7cmV0dXJuIG5bZV09YSxufWZ1bmN0aW9uIFVvKHQpe2Zvcih2YXIgZSxyLG4saSxvPVtdLGE9Qm8odCkscz0tMSxsPXQubGVuZ3RoLTE7KytzPGw7KWU9RG8odFtzXSx0W3MrMV0pLHdhKGUpPERhP2Fbc109YVtzKzFdPTA6KHI9YVtzXS9lLG49YVtzKzFdL2UsaT1yKnIrbipuLGk+OSYmKGk9MyplL01hdGguc3FydChpKSxhW3NdPWkqcixhW3MrMV09aSpuKSk7Zm9yKHM9LTE7KytzPD1sOylpPSh0W01hdGgubWluKGwscysxKV1bMF0tdFtNYXRoLm1heCgwLHMtMSldWzBdKS8oNiooMSthW3NdKmFbc10pKSxvLnB1c2goW2l8fDAsYVtzXSppfHwwXSk7cmV0dXJuIG99ZnVuY3Rpb24gVm8odCl7cmV0dXJuIHQubGVuZ3RoPDM/QW8odCk6dFswXStQbyh0LFVvKHQpKX1mdW5jdGlvbiBxbyh0KXtmb3IodmFyIGUscixuLGk9LTEsbz10Lmxlbmd0aDsrK2k8bzspZT10W2ldLHI9ZVswXSxuPWVbMV0tSGEsZVswXT1yKk1hdGguY29zKG4pLGVbMV09cipNYXRoLnNpbihuKTtyZXR1cm4gdH1mdW5jdGlvbiBIbyh0KXtmdW5jdGlvbiBlKGUpe2Z1bmN0aW9uIGwoKXtnLnB1c2goIk0iLHModChtKSxoKSx1LGModCh2LnJldmVyc2UoKSksaCksIloiKX1mb3IodmFyIGYsZCxwLGc9W10sdj1bXSxtPVtdLHk9LTEsYj1lLmxlbmd0aCx4PUx0KHIpLF89THQoaSksdz1yPT09bj9mdW5jdGlvbigpe3JldHVybiBkfTpMdChuKSxBPWk9PT1vP2Z1bmN0aW9uKCl7cmV0dXJuIHB9Okx0KG8pOysreTxiOylhLmNhbGwodGhpcyxmPWVbeV0seSk/KHYucHVzaChbZD0reC5jYWxsKHRoaXMsZix5KSxwPStfLmNhbGwodGhpcyxmLHkpXSksbS5wdXNoKFsrdy5jYWxsKHRoaXMsZix5KSwrQS5jYWxsKHRoaXMsZix5KV0pKTp2Lmxlbmd0aCYmKGwoKSx2PVtdLG09W10pO3JldHVybiB2Lmxlbmd0aCYmbCgpLGcubGVuZ3RoP2cuam9pbigiIik6bnVsbH12YXIgcj1DcixuPUNyLGk9MCxvPVByLGE9UGUscz1BbyxsPXMua2V5LGM9cyx1PSJMIixoPS43O3JldHVybiBlLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bj10LGUpOm59LGUueDA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxlKTpyfSxlLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW89dCxlKTpvfSxlLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsZSk6aX0sZS55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LGUpOm99LGUuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LGUpOmF9LGUuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/cz10OihzPUlsLmdldCh0KXx8QW8pLmtleSxjPXMucmV2ZXJzZXx8cyx1PXMuY2xvc2VkPyJNIjoiTCIsZSk6bH0sZS50ZW5zaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQsZSk6aH0sZX1mdW5jdGlvbiBHbyh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24gWW8odCl7cmV0dXJuW3QueCx0LnldfWZ1bmN0aW9uIFhvKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9ZVswXSxuPWVbMV0tSGE7cmV0dXJuW3IqTWF0aC5jb3MobikscipNYXRoLnNpbihuKV19fWZ1bmN0aW9uIFdvKCl7cmV0dXJuIDY0fWZ1bmN0aW9uIFpvKCl7cmV0dXJuImNpcmNsZSJ9ZnVuY3Rpb24gJG8odCl7dmFyIGU9TWF0aC5zcXJ0KHQvVWEpO3JldHVybiJNMCwiK2UrIkEiK2UrIiwiK2UrIiAwIDEsMSAwLCIrLWUrIkEiK2UrIiwiK2UrIiAwIDEsMSAwLCIrZSsiWiJ9ZnVuY3Rpb24gS28odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGUscixuOyhlPXRoaXNbdF0pJiYobj1lW3I9ZS5hY3RpdmVdKSYmKG4udGltZXIuYz1udWxsLG4udGltZXIudD1OYU4sLS1lLmNvdW50P2RlbGV0ZSBlW3JdOmRlbGV0ZSB0aGlzW3RdLGUuYWN0aXZlKz0uNSxuLmV2ZW50JiZuLmV2ZW50LmludGVycnVwdC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxuLmluZGV4KSl9fWZ1bmN0aW9uIFFvKHQsZSxyKXtyZXR1cm4gRWEodCxHbCksdC5uYW1lc3BhY2U9ZSx0LmlkPXIsdH1mdW5jdGlvbiBKbyh0LGUscixuKXt2YXIgaT10LmlkLG89dC5uYW1lc3BhY2U7cmV0dXJuIEcodCwiZnVuY3Rpb24iPT10eXBlb2Ygcj9mdW5jdGlvbih0LGEscyl7dFtvXVtpXS50d2Vlbi5zZXQoZSxuKHIuY2FsbCh0LHQuX19kYXRhX18sYSxzKSkpfToocj1uKHIpLGZ1bmN0aW9uKHQpe3Rbb11baV0udHdlZW4uc2V0KGUscil9KSl9ZnVuY3Rpb24gdGEodCl7cmV0dXJuIG51bGw9PXQmJih0PSIiKSxmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gZWEodCl7cmV0dXJuIG51bGw9PXQ/Il9fdHJhbnNpdGlvbl9fIjoiX190cmFuc2l0aW9uXyIrdCsiX18ifWZ1bmN0aW9uIHJhKHQsZSxyLG4saSl7ZnVuY3Rpb24gbyh0KXt2YXIgZT1nLmRlbGF5O3JldHVybiBjLnQ9ZStsLHQ+PWU/YSh0LWUpOnZvaWQoYy5jPWEpfWZ1bmN0aW9uIGEocil7dmFyIGk9cC5hY3RpdmUsbz1wW2ldO28mJihvLnRpbWVyLmM9bnVsbCxvLnRpbWVyLnQ9TmFOLC0tcC5jb3VudCxkZWxldGUgcFtpXSxvLmV2ZW50JiZvLmV2ZW50LmludGVycnVwdC5jYWxsKHQsdC5fX2RhdGFfXyxvLmluZGV4KSk7Zm9yKHZhciBhIGluIHApaWYobj4rYSl7dmFyIGg9cFthXTtoLnRpbWVyLmM9bnVsbCxoLnRpbWVyLnQ9TmFOLC0tcC5jb3VudCxkZWxldGUgcFthXX1jLmM9cyxSdChmdW5jdGlvbigpe3JldHVybiBjLmMmJnMocnx8MSkmJihjLmM9bnVsbCxjLnQ9TmFOKSwxfSwwLGwpLHAuYWN0aXZlPW4sZy5ldmVudCYmZy5ldmVudC5zdGFydC5jYWxsKHQsdC5fX2RhdGFfXyxlKSxkPVtdLGcudHdlZW4uZm9yRWFjaChmdW5jdGlvbihyLG4peyhuPW4uY2FsbCh0LHQuX19kYXRhX18sZSkpJiZkLnB1c2gobil9KSxmPWcuZWFzZSx1PWcuZHVyYXRpb259ZnVuY3Rpb24gcyhpKXtmb3IodmFyIG89aS91LGE9ZihvKSxzPWQubGVuZ3RoO3M+MDspZFstLXNdLmNhbGwodCxhKTtyZXR1cm4gbz49MT8oZy5ldmVudCYmZy5ldmVudC5lbmQuY2FsbCh0LHQuX19kYXRhX18sZSksLS1wLmNvdW50P2RlbGV0ZSBwW25dOmRlbGV0ZSB0W3JdLDEpOnZvaWQgMH12YXIgbCxjLHUsZixkLHA9dFtyXXx8KHRbcl09e2FjdGl2ZTowLGNvdW50OjB9KSxnPXBbbl07Z3x8KGw9aS50aW1lLGM9UnQobywwLGwpLGc9cFtuXT17dHdlZW46bmV3IGgsdGltZTpsLHRpbWVyOmMsZGVsYXk6aS5kZWxheSxkdXJhdGlvbjppLmR1cmF0aW9uLGVhc2U6aS5lYXNlLGluZGV4OmV9LGk9bnVsbCwrK3AuY291bnQpfWZ1bmN0aW9uIG5hKHQsZSxyKXt0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7dmFyIG49ZSh0KTtyZXR1cm4idHJhbnNsYXRlKCIrKGlzRmluaXRlKG4pP246cih0KSkrIiwwKSJ9KX1mdW5jdGlvbiBpYSh0LGUscil7dC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3ZhciBuPWUodCk7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKGlzRmluaXRlKG4pP246cih0KSkrIikifSl9ZnVuY3Rpb24gb2EodCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX1mdW5jdGlvbiBhYSh0LGUscil7ZnVuY3Rpb24gbihlKXtyZXR1cm4gdChlKX1mdW5jdGlvbiBpKHQscil7dmFyIG49dFsxXS10WzBdLGk9bi9yLG89dWEuYmlzZWN0KHRjLGkpO3JldHVybiBvPT10Yy5sZW5ndGg/W2UueWVhcix0byh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC8zMTUzNmU2fSkscilbMl1dOm8/ZVtpL3RjW28tMV08dGNbb10vaT9vLTE6b106W25jLHRvKHQscilbMl1dfXJldHVybiBuLmludmVydD1mdW5jdGlvbihlKXtyZXR1cm4gc2EodC5pbnZlcnQoZSkpfSxuLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC5kb21haW4oZSksbik6dC5kb21haW4oKS5tYXAoc2EpfSxuLm5pY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHIpe3JldHVybiFpc05hTihyKSYmIXQucmFuZ2UocixzYSgrcisxKSxlKS5sZW5ndGh9dmFyIG89bi5kb21haW4oKSxhPUdpKG8pLHM9bnVsbD09dD9pKGEsMTApOiJudW1iZXIiPT10eXBlb2YgdCYmaShhLHQpO3JldHVybiBzJiYodD1zWzBdLGU9c1sxXSksbi5kb21haW4oV2kobyxlPjE/e2Zsb29yOmZ1bmN0aW9uKGUpe2Zvcig7cihlPXQuZmxvb3IoZSkpOyllPXNhKGUtMSk7cmV0dXJuIGV9LGNlaWw6ZnVuY3Rpb24oZSl7Zm9yKDtyKGU9dC5jZWlsKGUpKTspZT1zYSgrZSsxKTtyZXR1cm4gZX19OnQpKX0sbi50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciByPUdpKG4uZG9tYWluKCkpLG89bnVsbD09dD9pKHIsMTApOiJudW1iZXIiPT10eXBlb2YgdD9pKHIsdCk6IXQucmFuZ2UmJlt7cmFuZ2U6dH0sZV07cmV0dXJuIG8mJih0PW9bMF0sZT1vWzFdKSx0LnJhbmdlKHJbMF0sc2EoK3JbMV0rMSksMT5lPzE6ZSl9LG4udGlja0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiByfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gYWEodC5jb3B5KCksZSxyKX0sUWkobix0KX1mdW5jdGlvbiBzYSh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gbGEodCl7cmV0dXJuIEpTT04ucGFyc2UodC5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIGNhKHQpe3ZhciBlPWRhLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIGUuc2VsZWN0Tm9kZShkYS5ib2R5KSxlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0LnJlc3BvbnNlVGV4dCl9dmFyIHVhPXt2ZXJzaW9uOiIzLjUuMTYifSxoYT1bXS5zbGljZSxmYT1mdW5jdGlvbih0KXtyZXR1cm4gaGEuY2FsbCh0KX0sZGE9dGhpcy5kb2N1bWVudDtpZihkYSl0cnl7ZmEoZGEuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpWzBdLm5vZGVUeXBlfWNhdGNoKHBhKXtmYT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSk7ZS0tOylyW2VdPXRbZV07cmV0dXJuIHJ9fWlmKERhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9KSxkYSl0cnl7ZGEuY3JlYXRlRWxlbWVudCgiRElWIikuc3R5bGUuc2V0UHJvcGVydHkoIm9wYWNpdHkiLDAsIiIpfWNhdGNoKGdhKXt2YXIgdmE9dGhpcy5FbGVtZW50LnByb3RvdHlwZSxtYT12YS5zZXRBdHRyaWJ1dGUseWE9dmEuc2V0QXR0cmlidXRlTlMsYmE9dGhpcy5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSx4YT1iYS5zZXRQcm9wZXJ0eTt2YS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXttYS5jYWxsKHRoaXMsdCxlKyIiKX0sdmEuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLHIpe3lhLmNhbGwodGhpcyx0LGUscisiIil9LGJhLnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxyKXt4YS5jYWxsKHRoaXMsdCxlKyIiLHIpfX11YS5hc2NlbmRpbmc9aSx1YS5kZXNjZW5kaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+ZT8tMTplPnQ/MTplPj10PzA6TmFOfSx1YS5taW49ZnVuY3Rpb24odCxlKXt2YXIgcixuLGk9LTEsbz10Lmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2k8bzspaWYobnVsbCE9KG49dFtpXSkmJm4+PW4pe3I9bjticmVha31mb3IoOysraTxvOyludWxsIT0obj10W2ldKSYmcj5uJiYocj1uKX1lbHNle2Zvcig7KytpPG87KWlmKG51bGwhPShuPWUuY2FsbCh0LHRbaV0saSkpJiZuPj1uKXtyPW47YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KG49ZS5jYWxsKHQsdFtpXSxpKSkmJnI+biYmKHI9bil9cmV0dXJuIHJ9LHVhLm1heD1mdW5jdGlvbih0LGUpe3ZhciByLG4saT0tMSxvPXQubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysraTxvOylpZihudWxsIT0obj10W2ldKSYmbj49bil7cj1uO2JyZWFrfWZvcig7KytpPG87KW51bGwhPShuPXRbaV0pJiZuPnImJihyPW4pfWVsc2V7Zm9yKDsrK2k8bzspaWYobnVsbCE9KG49ZS5jYWxsKHQsdFtpXSxpKSkmJm4+PW4pe3I9bjticmVha31mb3IoOysraTxvOyludWxsIT0obj1lLmNhbGwodCx0W2ldLGkpKSYmbj5yJiYocj1uKX1yZXR1cm4gcn0sdWEuZXh0ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLG89LTEsYT10Lmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK288YTspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pewpyPWk9bjticmVha31mb3IoOysrbzxhOyludWxsIT0obj10W29dKSYmKHI+biYmKHI9biksbj5pJiYoaT1uKSl9ZWxzZXtmb3IoOysrbzxhOylpZihudWxsIT0obj1lLmNhbGwodCx0W29dLG8pKSYmbj49bil7cj1pPW47YnJlYWt9Zm9yKDsrK288YTspbnVsbCE9KG49ZS5jYWxsKHQsdFtvXSxvKSkmJihyPm4mJihyPW4pLG4+aSYmKGk9bikpfXJldHVybltyLGldfSx1YS5zdW09ZnVuY3Rpb24odCxlKXt2YXIgcixuPTAsaT10Lmxlbmd0aCxvPS0xO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytvPGk7KWEocj0rdFtvXSkmJihuKz1yKTtlbHNlIGZvcig7KytvPGk7KWEocj0rZS5jYWxsKHQsdFtvXSxvKSkmJihuKz1yKTtyZXR1cm4gbn0sdWEubWVhbj1mdW5jdGlvbih0LGUpe3ZhciByLG49MCxpPXQubGVuZ3RoLHM9LTEsbD1pO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytzPGk7KWEocj1vKHRbc10pKT9uKz1yOi0tbDtlbHNlIGZvcig7KytzPGk7KWEocj1vKGUuY2FsbCh0LHRbc10scykpKT9uKz1yOi0tbDtyZXR1cm4gbD9uL2w6dm9pZCAwfSx1YS5xdWFudGlsZT1mdW5jdGlvbih0LGUpe3ZhciByPSh0Lmxlbmd0aC0xKSplKzEsbj1NYXRoLmZsb29yKHIpLGk9K3Rbbi0xXSxvPXItbjtyZXR1cm4gbz9pK28qKHRbbl0taSk6aX0sdWEubWVkaWFuPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1bXSxzPXQubGVuZ3RoLGw9LTE7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2w8czspYShyPW8odFtsXSkpJiZuLnB1c2gocik7ZWxzZSBmb3IoOysrbDxzOylhKHI9byhlLmNhbGwodCx0W2xdLGwpKSkmJm4ucHVzaChyKTtyZXR1cm4gbi5sZW5ndGg/dWEucXVhbnRpbGUobi5zb3J0KGkpLC41KTp2b2lkIDB9LHVhLnZhcmlhbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpPXQubGVuZ3RoLHM9MCxsPTAsYz0tMSx1PTA7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2M8aTspYShyPW8odFtjXSkpJiYobj1yLXMscys9bi8rK3UsbCs9biooci1zKSk7ZWxzZSBmb3IoOysrYzxpOylhKHI9byhlLmNhbGwodCx0W2NdLGMpKSkmJihuPXItcyxzKz1uLysrdSxsKz1uKihyLXMpKTtyZXR1cm4gdT4xP2wvKHUtMSk6dm9pZCAwfSx1YS5kZXZpYXRpb249ZnVuY3Rpb24oKXt2YXIgdD11YS52YXJpYW5jZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHQ/TWF0aC5zcXJ0KHQpOnR9O3ZhciBfYT1zKGkpO3VhLmJpc2VjdExlZnQ9X2EubGVmdCx1YS5iaXNlY3Q9dWEuYmlzZWN0UmlnaHQ9X2EucmlnaHQsdWEuYmlzZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHMoMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJuIGkodChlKSxyKX06dCl9LHVhLnNodWZmbGU9ZnVuY3Rpb24odCxlLHIpeyhvPWFyZ3VtZW50cy5sZW5ndGgpPDMmJihyPXQubGVuZ3RoLDI+byYmKGU9MCkpO2Zvcih2YXIgbixpLG89ci1lO287KWk9TWF0aC5yYW5kb20oKSpvLS18MCxuPXRbbytlXSx0W28rZV09dFtpK2VdLHRbaStlXT1uO3JldHVybiB0fSx1YS5wZXJtdXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUubGVuZ3RoLG49bmV3IEFycmF5KHIpO3ItLTspbltyXT10W2Vbcl1dO3JldHVybiBufSx1YS5wYWlycz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj0wLG49dC5sZW5ndGgtMSxpPXRbMF0sbz1uZXcgQXJyYXkoMD5uPzA6bik7bj5yOylvW3JdPVtlPWksaT10Wysrcl1dO3JldHVybiBvfSx1YS50cmFuc3Bvc2U9ZnVuY3Rpb24odCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIGU9LTEscj11YS5taW4odCxsKSxuPW5ldyBBcnJheShyKTsrK2U8cjspZm9yKHZhciBpLG89LTEsYT1uW2VdPW5ldyBBcnJheShpKTsrK288aTspYVtvXT10W29dW2VdO3JldHVybiBufSx1YS56aXA9ZnVuY3Rpb24oKXtyZXR1cm4gdWEudHJhbnNwb3NlKGFyZ3VtZW50cyl9LHVhLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHIpO3JldHVybiBlfSx1YS52YWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHRbcl0pO3JldHVybiBlfSx1YS5lbnRyaWVzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaCh7a2V5OnIsdmFsdWU6dFtyXX0pO3JldHVybiBlfSx1YS5tZXJnZT1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGk9dC5sZW5ndGgsbz0tMSxhPTA7KytvPGk7KWErPXRbb10ubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShhKTstLWk+PTA7KWZvcihuPXRbaV0sZT1uLmxlbmd0aDstLWU+PTA7KXJbLS1hXT1uW2VdO3JldHVybiByfTt2YXIgd2E9TWF0aC5hYnM7dWEucmFuZ2U9ZnVuY3Rpb24odCxlLHIpe2lmKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9MSxhcmd1bWVudHMubGVuZ3RoPDImJihlPXQsdD0wKSksKGUtdCkvcj09PTEvMCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIHJhbmdlIik7dmFyIG4saT1bXSxvPWMod2EocikpLGE9LTE7aWYodCo9byxlKj1vLHIqPW8sMD5yKWZvcig7KG49dCtyKisrYSk+ZTspaS5wdXNoKG4vbyk7ZWxzZSBmb3IoOyhuPXQrciorK2EpPGU7KWkucHVzaChuL28pO3JldHVybiBpfSx1YS5tYXA9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgaDtpZih0IGluc3RhbmNlb2YgaCl0LmZvckVhY2goZnVuY3Rpb24odCxlKXtyLnNldCh0LGUpfSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbixpPS0xLG89dC5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2k8bzspci5zZXQoaSx0W2ldKTtlbHNlIGZvcig7KytpPG87KXIuc2V0KGUuY2FsbCh0LG49dFtpXSxpKSxuKX1lbHNlIGZvcih2YXIgYSBpbiB0KXIuc2V0KGEsdFthXSk7cmV0dXJuIHJ9O3ZhciBBYT0iX19wcm90b19fIixrYT0iXHgwMCI7dShoLHtoYXM6cCxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX1tmKHQpXX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX1tmKHQpXT1lfSxyZW1vdmU6ZyxrZXlzOnYsdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuXyl0LnB1c2godGhpcy5fW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl8pdC5wdXNoKHtrZXk6ZChlKSx2YWx1ZTp0aGlzLl9bZV19KTtyZXR1cm4gdH0sc2l6ZTptLGVtcHR5OnksZm9yRWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5fKXQuY2FsbCh0aGlzLGQoZSksdGhpcy5fW2VdKX19KSx1YS5uZXN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGEscyl7aWYocz49by5sZW5ndGgpcmV0dXJuIG4/bi5jYWxsKGksYSk6cj9hLnNvcnQocik6YTtmb3IodmFyIGwsYyx1LGYsZD0tMSxwPWEubGVuZ3RoLGc9b1tzKytdLHY9bmV3IGg7KytkPHA7KShmPXYuZ2V0KGw9ZyhjPWFbZF0pKSk/Zi5wdXNoKGMpOnYuc2V0KGwsW2NdKTtyZXR1cm4gZT8oYz1lKCksdT1mdW5jdGlvbihyLG4pe2Muc2V0KHIsdChlLG4scykpfSk6KGM9e30sdT1mdW5jdGlvbihyLG4pe2Nbcl09dChlLG4scyl9KSx2LmZvckVhY2godSksY31mdW5jdGlvbiBlKHQscil7aWYocj49by5sZW5ndGgpcmV0dXJuIHQ7dmFyIG49W10saT1hW3IrK107cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LGkpe24ucHVzaCh7a2V5OnQsdmFsdWVzOmUoaSxyKX0pfSksaT9uLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gaSh0LmtleSxlLmtleSl9KTpufXZhciByLG4saT17fSxvPVtdLGE9W107cmV0dXJuIGkubWFwPWZ1bmN0aW9uKGUscil7cmV0dXJuIHQocixlLDApfSxpLmVudHJpZXM9ZnVuY3Rpb24ocil7cmV0dXJuIGUodCh1YS5tYXAsciwwKSwwKX0saS5rZXk9ZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaCh0KSxpfSxpLnNvcnRLZXlzPWZ1bmN0aW9uKHQpe3JldHVybiBhW28ubGVuZ3RoLTFdPXQsaX0saS5zb3J0VmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiByPXQsaX0saS5yb2xsdXA9ZnVuY3Rpb24odCl7cmV0dXJuIG49dCxpfSxpfSx1YS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGI7aWYodClmb3IodmFyIHI9MCxuPXQubGVuZ3RoO24+cjsrK3IpZS5hZGQodFtyXSk7cmV0dXJuIGV9LHUoYix7aGFzOnAsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9bZih0Kz0iIildPSEwLHR9LHJlbW92ZTpnLHZhbHVlczp2LHNpemU6bSxlbXB0eTp5LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuXyl0LmNhbGwodGhpcyxkKGUpKX19KSx1YS5iZWhhdmlvcj17fSx1YS5yZWJpbmQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbj0xLGk9YXJndW1lbnRzLmxlbmd0aDsrK248aTspdFtyPWFyZ3VtZW50c1tuXV09Xyh0LGUsZVtyXSk7cmV0dXJuIHR9O3ZhciBNYT1bIndlYmtpdCIsIm1zIiwibW96IiwiTW96IiwibyIsIk8iXTt1YS5kaXNwYXRjaD1mdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgayxlPS0xLHI9YXJndW1lbnRzLmxlbmd0aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPU0odCk7cmV0dXJuIHR9LGsucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5pbmRleE9mKCIuIiksbj0iIjtpZihyPj0wJiYobj10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj90aGlzW3RdLm9uKG4pOnRoaXNbdF0ub24obixlKTtpZigyPT09YXJndW1lbnRzLmxlbmd0aCl7aWYobnVsbD09ZSlmb3IodCBpbiB0aGlzKXRoaXMuaGFzT3duUHJvcGVydHkodCkmJnRoaXNbdF0ub24obixudWxsKTtyZXR1cm4gdGhpc319LHVhLmV2ZW50PW51bGwsdWEucmVxdW90ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKFRhLCJcXCQmIil9O3ZhciBUYT0vW1xcXF5cJFwqXCtcP1x8XFtcXVwoXClcLlx7XH1dL2csRWE9e30uX19wcm90b19fP2Z1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX06ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl19LExhPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUucXVlcnlTZWxlY3Rvcih0KX0sU2E9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yQWxsKHQpfSxDYT1mdW5jdGlvbih0LGUpe3ZhciByPXQubWF0Y2hlc3x8dFt3KHQsIm1hdGNoZXNTZWxlY3RvciIpXTtyZXR1cm4oQ2E9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5jYWxsKHQsZSl9KSh0LGUpfTsiZnVuY3Rpb24iPT10eXBlb2YgU2l6emxlJiYoTGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gU2l6emxlKHQsZSlbMF18fG51bGx9LFNhPVNpenpsZSxDYT1TaXp6bGUubWF0Y2hlc1NlbGVjdG9yKSx1YS5zZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdWEuc2VsZWN0KGRhLmRvY3VtZW50RWxlbWVudCl9O3ZhciBQYT11YS5zZWxlY3Rpb24ucHJvdG90eXBlPVtdO1BhLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxvPVtdO3Q9Qyh0KTtmb3IodmFyIGE9LTEscz10aGlzLmxlbmd0aDsrK2E8czspe28ucHVzaChlPVtdKSxlLnBhcmVudE5vZGU9KG49dGhpc1thXSkucGFyZW50Tm9kZTtmb3IodmFyIGw9LTEsYz1uLmxlbmd0aDsrK2w8YzspKGk9bltsXSk/KGUucHVzaChyPXQuY2FsbChpLGkuX19kYXRhX18sbCxhKSksciYmIl9fZGF0YV9fImluIGkmJihyLl9fZGF0YV9fPWkuX19kYXRhX18pKTplLnB1c2gobnVsbCl9cmV0dXJuIFMobyl9LFBhLnNlbGVjdEFsbD1mdW5jdGlvbih0KXt2YXIgZSxyLG49W107dD1QKHQpO2Zvcih2YXIgaT0tMSxvPXRoaXMubGVuZ3RoOysraTxvOylmb3IodmFyIGE9dGhpc1tpXSxzPS0xLGw9YS5sZW5ndGg7KytzPGw7KShyPWFbc10pJiYobi5wdXNoKGU9ZmEodC5jYWxsKHIsci5fX2RhdGFfXyxzLGkpKSksZS5wYXJlbnROb2RlPXIpO3JldHVybiBTKG4pfTt2YXIgemE9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLFJhPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDp6YSx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O3VhLm5zPXtwcmVmaXg6UmEscXVhbGlmeTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIjoiKSxyPXQ7cmV0dXJuIGU+PTAmJiJ4bWxucyIhPT0ocj10LnNsaWNlKDAsZSkpJiYodD10LnNsaWNlKGUrMSkpLFJhLmhhc093blByb3BlcnR5KHIpP3tzcGFjZTpSYVtyXSxsb2NhbDp0fTp0fX0sUGEuYXR0cj1mdW5jdGlvbih0LGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgcj10aGlzLm5vZGUoKTtyZXR1cm4gdD11YS5ucy5xdWFsaWZ5KHQpLHQubG9jYWw/ci5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnIuZ2V0QXR0cmlidXRlKHQpfWZvcihlIGluIHQpdGhpcy5lYWNoKHooZSx0W2VdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaCh6KHQsZSkpfSxQYS5jbGFzc2VkPWZ1bmN0aW9uKHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciByPXRoaXMubm9kZSgpLG49KHQ9SSh0KSkubGVuZ3RoLGk9LTE7aWYoZT1yLmNsYXNzTGlzdCl7Zm9yKDsrK2k8bjspaWYoIWUuY29udGFpbnModFtpXSkpcmV0dXJuITF9ZWxzZSBmb3IoZT1yLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsrK2k8bjspaWYoIU8odFtpXSkudGVzdChlKSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IoZSBpbiB0KXRoaXMuZWFjaChOKGUsdFtlXSkpO3JldHVybiB0aGlzfXJldHVybiB0aGlzLmVhY2goTih0LGUpKX0sUGEuc3R5bGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5pKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpezI+aSYmKGU9IiIpO2ZvcihyIGluIHQpdGhpcy5lYWNoKEYocix0W3JdLGUpKTtyZXR1cm4gdGhpc31pZigyPmkpe3ZhciBvPXRoaXMubm9kZSgpO3JldHVybiBuKG8pLmdldENvbXB1dGVkU3R5bGUobyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfXI9IiJ9cmV0dXJuIHRoaXMuZWFjaChGKHQsZSxyKSl9LFBhLnByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMubm9kZSgpW3RdO2ZvcihlIGluIHQpdGhpcy5lYWNoKEQoZSx0W2VdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChEKHQsZSkpfSxQYS50ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfTpudWxsPT10P2Z1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD0iIn06ZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9KTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0sUGEuaHRtbD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9Om51bGw9PXQ/ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD0iIn06ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxQYS5hcHBlbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9Qih0KSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxQYS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1CKHQpLGU9QyhlKSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZSh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX0sUGEucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChVKX0sUGEuZGF0YT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIodCxyKXt2YXIgbixpLG8sYT10Lmxlbmd0aCx1PXIubGVuZ3RoLGY9TWF0aC5taW4oYSx1KSxkPW5ldyBBcnJheSh1KSxwPW5ldyBBcnJheSh1KSxnPW5ldyBBcnJheShhKTtpZihlKXt2YXIgdixtPW5ldyBoLHk9bmV3IEFycmF5KGEpO2ZvcihuPS0xOysrbjxhOykoaT10W25dKSYmKG0uaGFzKHY9ZS5jYWxsKGksaS5fX2RhdGFfXyxuKSk/Z1tuXT1pOm0uc2V0KHYsaSkseVtuXT12KTtmb3Iobj0tMTsrK248dTspKGk9bS5nZXQodj1lLmNhbGwocixvPXJbbl0sbikpKT9pIT09ITAmJihkW25dPWksaS5fX2RhdGFfXz1vKTpwW25dPVYobyksbS5zZXQodiwhMCk7Zm9yKG49LTE7KytuPGE7KW4gaW4geSYmbS5nZXQoeVtuXSkhPT0hMCYmKGdbbl09dFtuXSl9ZWxzZXtmb3Iobj0tMTsrK248ZjspaT10W25dLG89cltuXSxpPyhpLl9fZGF0YV9fPW8sZFtuXT1pKTpwW25dPVYobyk7Zm9yKDt1Pm47KytuKXBbbl09VihyW25dKTtmb3IoO2E+bjsrK24pZ1tuXT10W25dfXAudXBkYXRlPWQscC5wYXJlbnROb2RlPWQucGFyZW50Tm9kZT1nLnBhcmVudE5vZGU9dC5wYXJlbnROb2RlLHMucHVzaChwKSxsLnB1c2goZCksYy5wdXNoKGcpfXZhciBuLGksbz0tMSxhPXRoaXMubGVuZ3RoO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtmb3IodD1uZXcgQXJyYXkoYT0obj10aGlzWzBdKS5sZW5ndGgpOysrbzxhOykoaT1uW29dKSYmKHRbb109aS5fX2RhdGFfXyk7cmV0dXJuIHR9dmFyIHM9WShbXSksbD1TKFtdKSxjPVMoW10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KWZvcig7KytvPGE7KXIobj10aGlzW29dLHQuY2FsbChuLG4ucGFyZW50Tm9kZS5fX2RhdGFfXyxvKSk7ZWxzZSBmb3IoOysrbzxhOylyKG49dGhpc1tvXSx0KTtyZXR1cm4gbC5lbnRlcj1mdW5jdGlvbigpe3JldHVybiBzfSxsLmV4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gY30sbH0sUGEuZGF0dW09ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMucHJvcGVydHkoIl9fZGF0YV9fIil9LFBhLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgZSxyLG4saT1bXTsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cSh0KSk7Zm9yKHZhciBvPTAsYT10aGlzLmxlbmd0aDthPm87bysrKXtpLnB1c2goZT1bXSksZS5wYXJlbnROb2RlPShyPXRoaXNbb10pLnBhcmVudE5vZGU7Zm9yKHZhciBzPTAsbD1yLmxlbmd0aDtsPnM7cysrKShuPXJbc10pJiZ0LmNhbGwobixuLl9fZGF0YV9fLHMsbykmJmUucHVzaChuKX1yZXR1cm4gUyhpKX0sUGEub3JkZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTEsZT10aGlzLmxlbmd0aDsrK3Q8ZTspZm9yKHZhciByLG49dGhpc1t0XSxpPW4ubGVuZ3RoLTEsbz1uW2ldOy0taT49MDspKHI9bltpXSkmJihvJiZvIT09ci5uZXh0U2libGluZyYmby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLG8pLG89cik7cmV0dXJuIHRoaXN9LFBhLnNvcnQ9ZnVuY3Rpb24odCl7dD1ILmFwcGx5KHRoaXMsYXJndW1lbnRzKTtmb3IodmFyIGU9LTEscj10aGlzLmxlbmd0aDsrK2U8cjspdGhpc1tlXS5zb3J0KHQpO3JldHVybiB0aGlzLm9yZGVyKCl9LFBhLmVhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIEcodGhpcyxmdW5jdGlvbihlLHIsbil7dC5jYWxsKGUsZS5fX2RhdGFfXyxyLG4pfSl9LFBhLmNhbGw9ZnVuY3Rpb24odCl7dmFyIGU9ZmEoYXJndW1lbnRzKTtyZXR1cm4gdC5hcHBseShlWzBdPXRoaXMsZSksdGhpc30sUGEuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub2RlKCl9LFBhLm5vZGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPXRoaXMubGVuZ3RoO2U+dDt0KyspZm9yKHZhciByPXRoaXNbdF0sbj0wLGk9ci5sZW5ndGg7aT5uO24rKyl7dmFyIG89cltuXTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfSxQYS5zaXplPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gRyh0aGlzLGZ1bmN0aW9uKCl7Kyt0fSksdH07dmFyIE9hPVtdO3VhLnNlbGVjdGlvbi5lbnRlcj1ZLHVhLnNlbGVjdGlvbi5lbnRlci5wcm90b3R5cGU9T2EsT2EuYXBwZW5kPVBhLmFwcGVuZCxPYS5lbXB0eT1QYS5lbXB0eSxPYS5ub2RlPVBhLm5vZGUsT2EuY2FsbD1QYS5jYWxsLE9hLnNpemU9UGEuc2l6ZSxPYS5zZWxlY3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixpLG8sYT1bXSxzPS0xLGw9dGhpcy5sZW5ndGg7KytzPGw7KXtuPShpPXRoaXNbc10pLnVwZGF0ZSxhLnB1c2goZT1bXSksZS5wYXJlbnROb2RlPWkucGFyZW50Tm9kZTtmb3IodmFyIGM9LTEsdT1pLmxlbmd0aDsrK2M8dTspKG89aVtjXSk/KGUucHVzaChuW2NdPXI9dC5jYWxsKGkucGFyZW50Tm9kZSxvLl9fZGF0YV9fLGMscykpLHIuX19kYXRhX189by5fX2RhdGFfXyk6ZS5wdXNoKG51bGwpfXJldHVybiBTKGEpfSxPYS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYoZT1YKHRoaXMpKSxQYS5pbnNlcnQuY2FsbCh0aGlzLHQsZSl9LHVhLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgcjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/KHI9W0xhKHQsZGEpXSxyLnBhcmVudE5vZGU9ZGEuZG9jdW1lbnRFbGVtZW50KToocj1bdF0sci5wYXJlbnROb2RlPWUodCkpLFMoW3JdKX0sdWEuc2VsZWN0QWxsPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8oZT1mYShTYSh0LGRhKSksZS5wYXJlbnROb2RlPWRhLmRvY3VtZW50RWxlbWVudCk6KGU9ZmEodCksZS5wYXJlbnROb2RlPW51bGwpLFMoW2VdKX0sUGEub249ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5uKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpezI+biYmKGU9ITEpO2ZvcihyIGluIHQpdGhpcy5lYWNoKFcocix0W3JdLGUpKTtyZXR1cm4gdGhpc31pZigyPm4pcmV0dXJuKG49dGhpcy5ub2RlKClbIl9fb24iK3RdKSYmbi5fO3I9ITF9cmV0dXJuIHRoaXMuZWFjaChXKHQsZSxyKSl9O3ZhciBJYT11YS5tYXAoe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSk7ZGEmJklhLmZvckVhY2goZnVuY3Rpb24odCl7Im9uIit0IGluIGRhJiZJYS5yZW1vdmUodCl9KTt2YXIgTmEsamE9MDt1YS5tb3VzZT1mdW5jdGlvbih0KXtyZXR1cm4gUSh0LEUoKSl9O3ZhciBGYT10aGlzLm5hdmlnYXRvciYmL1dlYktpdC8udGVzdCh0aGlzLm5hdmlnYXRvci51c2VyQWdlbnQpPy0xOjA7dWEudG91Y2g9ZnVuY3Rpb24odCxlLHIpe2lmKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9ZSxlPUUoKS5jaGFuZ2VkVG91Y2hlcyksZSlmb3IodmFyIG4saT0wLG89ZS5sZW5ndGg7bz5pOysraSlpZigobj1lW2ldKS5pZGVudGlmaWVyPT09cilyZXR1cm4gUSh0LG4pfSx1YS5iZWhhdmlvci5kcmFnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMub24oIm1vdXNlZG93bi5kcmFnIixvKS5vbigidG91Y2hzdGFydC5kcmFnIixhKX1mdW5jdGlvbiBlKHQsZSxuLG8sYSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcygpe3ZhciB0LHIsbj1lKGYsZyk7biYmKHQ9blswXS1iWzBdLHI9blsxXS1iWzFdLHB8PXR8cixiPW4sZCh7dHlwZToiZHJhZyIseDpuWzBdK2NbMF0seTpuWzFdK2NbMV0sZHg6dCxkeTpyfSkpfWZ1bmN0aW9uIGwoKXtlKGYsZykmJihtLm9uKG8rdixudWxsKS5vbihhK3YsbnVsbCkseShwKSxkKHt0eXBlOiJkcmFnZW5kIn0pKX12YXIgYyx1PXRoaXMsaD11YS5ldmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnR8fHVhLmV2ZW50LnRhcmdldCxmPXUucGFyZW50Tm9kZSxkPXIub2YodSxhcmd1bWVudHMpLHA9MCxnPXQoKSx2PSIuZHJhZyIrKG51bGw9PWc/IiI6Ii0iK2cpLG09dWEuc2VsZWN0KG4oaCkpLm9uKG8rdixzKS5vbihhK3YsbCkseT1LKGgpLGI9ZShmLGcpO2k/KGM9aS5hcHBseSh1LGFyZ3VtZW50cyksYz1bYy54LWJbMF0sYy55LWJbMV1dKTpjPVswLDBdLGQoe3R5cGU6ImRyYWdzdGFydCJ9KX19dmFyIHI9TCh0LCJkcmFnIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIpLGk9bnVsbCxvPWUoQSx1YS5tb3VzZSxuLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiksYT1lKEosdWEudG91Y2gseCwidG91Y2htb3ZlIiwidG91Y2hlbmQiKTtyZXR1cm4gdC5vcmlnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZSx0KTppfSx1YS5yZWJpbmQodCxyLCJvbiIpfSx1YS50b3VjaGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKGU9RSgpLnRvdWNoZXMpLGU/ZmEoZSkubWFwKGZ1bmN0aW9uKGUpe3ZhciByPVEodCxlKTtyZXR1cm4gci5pZGVudGlmaWVyPWUuaWRlbnRpZmllcixyfSk6W119O3ZhciBEYT0xZS02LEJhPURhKkRhLFVhPU1hdGguUEksVmE9MipVYSxxYT1WYS1EYSxIYT1VYS8yLEdhPVVhLzE4MCxZYT0xODAvVWEsWGE9TWF0aC5TUVJUMixXYT0yLFphPTQ7dWEuaW50ZXJwb2xhdGVab29tPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpPXRbMF0sbz10WzFdLGE9dFsyXSxzPWVbMF0sbD1lWzFdLGM9ZVsyXSx1PXMtaSxoPWwtbyxmPXUqdStoKmg7aWYoQmE+ZiluPU1hdGgubG9nKGMvYSkvWGEscj1mdW5jdGlvbih0KXtyZXR1cm5baSt0KnUsbyt0KmgsYSpNYXRoLmV4cChYYSp0Km4pXX07ZWxzZXt2YXIgZD1NYXRoLnNxcnQoZikscD0oYypjLWEqYStaYSpmKS8oMiphKldhKmQpLGc9KGMqYy1hKmEtWmEqZikvKDIqYypXYSpkKSx2PU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCksbT1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEpLWcpO249KG0tdikvWGEscj1mdW5jdGlvbih0KXt2YXIgZT10Km4scj1vdCh2KSxzPWEvKFdhKmQpKihyKmF0KFhhKmUrdiktaXQodikpO3JldHVybltpK3MqdSxvK3MqaCxhKnIvb3QoWGEqZSt2KV19fXJldHVybiByLmR1cmF0aW9uPTFlMypuLHJ9LHVhLmJlaGF2aW9yLnpvb209ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Qub24oUCxoKS5vbihLYSsiLnpvb20iLGQpLm9uKCJkYmxjbGljay56b29tIixwKS5vbihPLGYpfWZ1bmN0aW9uIGUodCl7cmV0dXJuWyh0WzBdLWsueCkvay5rLCh0WzFdLWsueSkvay5rXX1mdW5jdGlvbiByKHQpe3JldHVyblt0WzBdKmsuaytrLngsdFsxXSprLmsray55XX1mdW5jdGlvbiBpKHQpe2suaz1NYXRoLm1heChFWzBdLE1hdGgubWluKEVbMV0sdCkpfWZ1bmN0aW9uIG8odCxlKXtlPXIoZSksay54Kz10WzBdLWVbMF0say55Kz10WzFdLWVbMV19ZnVuY3Rpb24gYShlLHIsbixhKXtlLl9fY2hhcnRfXz17eDprLngseTprLnksazprLmt9LGkoTWF0aC5wb3coMixhKSksbyh2PXIsbiksZT11YS5zZWxlY3QoZSksUz4wJiYoZT1lLnRyYW5zaXRpb24oKS5kdXJhdGlvbihTKSksZS5jYWxsKHQuZXZlbnQpfWZ1bmN0aW9uIHMoKXtfJiZfLmRvbWFpbih4LnJhbmdlKCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybih0LWsueCkvay5rfSkubWFwKHguaW52ZXJ0KSksQSYmQS5kb21haW4ody5yYW5nZSgpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4odC1rLnkpL2sua30pLm1hcCh3LmludmVydCkpfWZ1bmN0aW9uIGwodCl7QysrfHx0KHt0eXBlOiJ6b29tc3RhcnQifSl9ZnVuY3Rpb24gYyh0KXtzKCksdCh7dHlwZToiem9vbSIsc2NhbGU6ay5rLHRyYW5zbGF0ZTpbay54LGsueV19KX1mdW5jdGlvbiB1KHQpey0tQ3x8KHQoe3R5cGU6Inpvb21lbmQifSksdj1udWxsKX1mdW5jdGlvbiBoKCl7ZnVuY3Rpb24gdCgpe3M9MSxvKHVhLm1vdXNlKGkpLGYpLGMoYSl9ZnVuY3Rpb24gcigpe2gub24oeixudWxsKS5vbihSLG51bGwpLGQocyksdShhKX12YXIgaT10aGlzLGE9SS5vZihpLGFyZ3VtZW50cykscz0wLGg9dWEuc2VsZWN0KG4oaSkpLm9uKHosdCkub24oUixyKSxmPWUodWEubW91c2UoaSkpLGQ9SyhpKTtIbC5jYWxsKGkpLGwoYSl9ZnVuY3Rpb24gZigpe2Z1bmN0aW9uIHQoKXt2YXIgdD11YS50b3VjaGVzKHApO3JldHVybiBkPWsuayx0LmZvckVhY2goZnVuY3Rpb24odCl7dC5pZGVudGlmaWVyIGluIHYmJih2W3QuaWRlbnRpZmllcl09ZSh0KSl9KSx0fWZ1bmN0aW9uIHIoKXt2YXIgZT11YS5ldmVudC50YXJnZXQ7dWEuc2VsZWN0KGUpLm9uKHgsbikub24oXyxzKSx3LnB1c2goZSk7Zm9yKHZhciByPXVhLmV2ZW50LmNoYW5nZWRUb3VjaGVzLGk9MCxvPXIubGVuZ3RoO28+aTsrK2kpdltyW2ldLmlkZW50aWZpZXJdPW51bGw7dmFyIGw9dCgpLGM9RGF0ZS5ub3coKTtpZigxPT09bC5sZW5ndGgpe2lmKDUwMD5jLWIpe3ZhciB1PWxbMF07YShwLHUsdlt1LmlkZW50aWZpZXJdLE1hdGguZmxvb3IoTWF0aC5sb2coay5rKS9NYXRoLkxOMikrMSksVCgpfWI9Y31lbHNlIGlmKGwubGVuZ3RoPjEpe3ZhciB1PWxbMF0saD1sWzFdLGY9dVswXS1oWzBdLGQ9dVsxXS1oWzFdO209ZipmK2QqZH19ZnVuY3Rpb24gbigpe3ZhciB0LGUscixuLGE9dWEudG91Y2hlcyhwKTtIbC5jYWxsKHApO2Zvcih2YXIgcz0wLGw9YS5sZW5ndGg7bD5zOysrcyxuPW51bGwpaWYocj1hW3NdLG49dltyLmlkZW50aWZpZXJdKXtpZihlKWJyZWFrO3Q9cixlPW59aWYobil7dmFyIHU9KHU9clswXS10WzBdKSp1Kyh1PXJbMV0tdFsxXSkqdSxoPW0mJk1hdGguc3FydCh1L20pO3Q9Wyh0WzBdK3JbMF0pLzIsKHRbMV0rclsxXSkvMl0sZT1bKGVbMF0rblswXSkvMiwoZVsxXStuWzFdKS8yXSxpKGgqZCl9Yj1udWxsLG8odCxlKSxjKGcpfWZ1bmN0aW9uIHMoKXtpZih1YS5ldmVudC50b3VjaGVzLmxlbmd0aCl7Zm9yKHZhciBlPXVhLmV2ZW50LmNoYW5nZWRUb3VjaGVzLHI9MCxuPWUubGVuZ3RoO24+cjsrK3IpZGVsZXRlIHZbZVtyXS5pZGVudGlmaWVyXTtmb3IodmFyIGkgaW4gdilyZXR1cm4gdm9pZCB0KCl9dWEuc2VsZWN0QWxsKHcpLm9uKHksbnVsbCksQS5vbihQLGgpLm9uKE8sZiksTSgpLHUoZyl9dmFyIGQscD10aGlzLGc9SS5vZihwLGFyZ3VtZW50cyksdj17fSxtPTAseT0iLnpvb20tIit1YS5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyLHg9InRvdWNobW92ZSIreSxfPSJ0b3VjaGVuZCIreSx3PVtdLEE9dWEuc2VsZWN0KHApLE09SyhwKTtyKCksbChnKSxBLm9uKFAsbnVsbCkub24oTyxyKX1mdW5jdGlvbiBkKCl7dmFyIHQ9SS5vZih0aGlzLGFyZ3VtZW50cyk7eT9jbGVhclRpbWVvdXQoeSk6KEhsLmNhbGwodGhpcyksZz1lKHY9bXx8dWEubW91c2UodGhpcykpLGwodCkpLHk9c2V0VGltZW91dChmdW5jdGlvbigpe3k9bnVsbCx1KHQpfSw1MCksVCgpLGkoTWF0aC5wb3coMiwuMDAyKiRhKCkpKmsuayksbyh2LGcpLGModCl9ZnVuY3Rpb24gcCgpe3ZhciB0PXVhLm1vdXNlKHRoaXMpLHI9TWF0aC5sb2coay5rKS9NYXRoLkxOMjthKHRoaXMsdCxlKHQpLHVhLmV2ZW50LnNoaWZ0S2V5P01hdGguY2VpbChyKS0xOk1hdGguZmxvb3IocikrMSl9dmFyIGcsdixtLHksYix4LF8sdyxBLGs9e3g6MCx5OjAsazoxfSxNPVs5NjAsNTAwXSxFPVFhLFM9MjUwLEM9MCxQPSJtb3VzZWRvd24uem9vbSIsej0ibW91c2Vtb3ZlLnpvb20iLFI9Im1vdXNldXAuem9vbSIsTz0idG91Y2hzdGFydC56b29tIixJPUwodCwiem9vbXN0YXJ0Iiwiem9vbSIsInpvb21lbmQiKTtyZXR1cm4gS2F8fChLYT0ib253aGVlbCJpbiBkYT8oJGE9ZnVuY3Rpb24oKXtyZXR1cm4tdWEuZXZlbnQuZGVsdGFZKih1YS5ldmVudC5kZWx0YU1vZGU/MTIwOjEpfSwid2hlZWwiKToib25tb3VzZXdoZWVsImluIGRhPygkYT1mdW5jdGlvbigpe3JldHVybiB1YS5ldmVudC53aGVlbERlbHRhfSwibW91c2V3aGVlbCIpOigkYT1mdW5jdGlvbigpe3JldHVybi11YS5ldmVudC5kZXRhaWx9LCJNb3pNb3VzZVBpeGVsU2Nyb2xsIikpLHQuZXZlbnQ9ZnVuY3Rpb24odCl7dC5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9SS5vZih0aGlzLGFyZ3VtZW50cyksZT1rO1ZsP3VhLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuem9vbSIsZnVuY3Rpb24oKXtrPXRoaXMuX19jaGFydF9ffHx7eDowLHk6MCxrOjF9LGwodCl9KS50d2Vlbigiem9vbTp6b29tIixmdW5jdGlvbigpe3ZhciByPU1bMF0sbj1NWzFdLGk9dj92WzBdOnIvMixvPXY/dlsxXTpuLzIsYT11YS5pbnRlcnBvbGF0ZVpvb20oWyhpLWsueCkvay5rLChvLWsueSkvay5rLHIvay5rXSxbKGktZS54KS9lLmssKG8tZS55KS9lLmssci9lLmtdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49YShlKSxzPXIvblsyXTt0aGlzLl9fY2hhcnRfXz1rPXt4OmktblswXSpzLHk6by1uWzFdKnMsazpzfSxjKHQpfX0pLmVhY2goImludGVycnVwdC56b29tIixmdW5jdGlvbigpe3UodCl9KS5lYWNoKCJlbmQuem9vbSIsZnVuY3Rpb24oKXt1KHQpfSk6KHRoaXMuX19jaGFydF9fPWssbCh0KSxjKHQpLHUodCkpfSl9LHQudHJhbnNsYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPXt4OitlWzBdLHk6K2VbMV0sazprLmt9LHMoKSx0KTpbay54LGsueV19LHQuc2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9e3g6ay54LHk6ay55LGs6bnVsbH0saSgrZSkscygpLHQpOmsua30sdC5zY2FsZUV4dGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1udWxsPT1lP1FhOlsrZVswXSwrZVsxXV0sdCk6RX0sdC5jZW50ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09ZSYmWytlWzBdLCtlWzFdXSx0KTptfSx0LnNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE09ZSYmWytlWzBdLCtlWzFdXSx0KTpNfSx0LmR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPStlLHQpOlN9LHQueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz1lLHg9ZS5jb3B5KCksaz17eDowLHk6MCxrOjF9LHQpOl99LHQueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT1lLHc9ZS5jb3B5KCksaz17eDowLHk6MCxrOjF9LHQpOkF9LHVhLnJlYmluZCh0LEksIm9uIil9O3ZhciAkYSxLYSxRYT1bMCwxLzBdO3VhLmNvbG9yPWx0LGx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifSx1YS5oc2w9Y3Q7dmFyIEphPWN0LnByb3RvdHlwZT1uZXcgbHQ7SmEuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD90OjEpLG5ldyBjdCh0aGlzLmgsdGhpcy5zLHRoaXMubC90KX0sSmEuZGFya2VyPWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/dDoxKSxuZXcgY3QodGhpcy5oLHRoaXMucyx0KnRoaXMubCl9LEphLnJnYj1mdW5jdGlvbigpe3JldHVybiB1dCh0aGlzLmgsdGhpcy5zLHRoaXMubCl9LHVhLmhjbD1odDt2YXIgdHM9aHQucHJvdG90eXBlPW5ldyBsdDt0cy5icmlnaHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGh0KHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtlcyooYXJndW1lbnRzLmxlbmd0aD90OjEpKSl9LHRzLmRhcmtlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGh0KHRoaXMuaCx0aGlzLmMsTWF0aC5tYXgoMCx0aGlzLmwtZXMqKGFyZ3VtZW50cy5sZW5ndGg/dDoxKSkpfSx0cy5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gZnQodGhpcy5oLHRoaXMuYyx0aGlzLmwpLnJnYigpfSx1YS5sYWI9ZHQ7dmFyIGVzPTE4LHJzPS45NTA0Nyxucz0xLGlzPTEuMDg4ODMsb3M9ZHQucHJvdG90eXBlPW5ldyBsdDtvcy5icmlnaHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGR0KE1hdGgubWluKDEwMCx0aGlzLmwrZXMqKGFyZ3VtZW50cy5sZW5ndGg/dDoxKSksdGhpcy5hLHRoaXMuYil9LG9zLmRhcmtlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGR0KE1hdGgubWF4KDAsdGhpcy5sLWVzKihhcmd1bWVudHMubGVuZ3RoP3Q6MSkpLHRoaXMuYSx0aGlzLmIpfSxvcy5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gcHQodGhpcy5sLHRoaXMuYSx0aGlzLmIpfSx1YS5yZ2I9YnQ7dmFyIGFzPWJ0LnByb3RvdHlwZT1uZXcgbHQ7YXMuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7dD1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP3Q6MSk7dmFyIGU9dGhpcy5yLHI9dGhpcy5nLG49dGhpcy5iLGk9MzA7cmV0dXJuIGV8fHJ8fG4/KGUmJmk+ZSYmKGU9aSksciYmaT5yJiYocj1pKSxuJiZpPm4mJihuPWkpLG5ldyBidChNYXRoLm1pbigyNTUsZS90KSxNYXRoLm1pbigyNTUsci90KSxNYXRoLm1pbigyNTUsbi90KSkpOm5ldyBidChpLGksaSl9LGFzLmRhcmtlcj1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP3Q6MSksbmV3IGJ0KHQqdGhpcy5yLHQqdGhpcy5nLHQqdGhpcy5iKX0sYXMuaHNsPWZ1bmN0aW9uKCl7cmV0dXJuIGt0KHRoaXMucix0aGlzLmcsdGhpcy5iKX0sYXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iIyIrd3QodGhpcy5yKSt3dCh0aGlzLmcpK3d0KHRoaXMuYil9O3ZhciBzcz11YS5tYXAoe2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH0pO3NzLmZvckVhY2goZnVuY3Rpb24odCxlKXtzcy5zZXQodCx4dChlKSl9KSx1YS5mdW5jdG9yPUx0LHVhLnhocj1TdCh4KSx1YS5kc3Y9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQscixvKXthcmd1bWVudHMubGVuZ3RoPDMmJihvPXIscj1udWxsKTt2YXIgYT1DdCh0LGUsbnVsbD09cj9uOmkociksbyk7cmV0dXJuIGEucm93PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2EucmVzcG9uc2UobnVsbD09KHI9dCk/bjppKHQpKTpyfSxhfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHIucGFyc2UodC5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByLnBhcnNlKGUucmVzcG9uc2VUZXh0LHQpfX1mdW5jdGlvbiBvKGUpe3JldHVybiBlLm1hcChhKS5qb2luKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHMudGVzdCh0KT8nIicrdC5yZXBsYWNlKC9cIi9nLCciIicpKyciJzp0fXZhciBzPW5ldyBSZWdFeHAoJ1siJyt0KyJcbl0iKSxsPXQuY2hhckNvZGVBdCgwKTtyZXR1cm4gci5wYXJzZT1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiByLnBhcnNlUm93cyh0LGZ1bmN0aW9uKHQscil7aWYobilyZXR1cm4gbih0LHItMSk7dmFyIGk9bmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK3QubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIitlKyJdIn0pLmpvaW4oIiwiKSsifSIpO249ZT9mdW5jdGlvbih0LHIpe3JldHVybiBlKGkodCkscil9Oml9KX0sci5wYXJzZVJvd3M9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKCl7aWYodT49YylyZXR1cm4gYTtpZihpKXJldHVybiBpPSExLG87dmFyIGU9dTtpZigzND09PXQuY2hhckNvZGVBdChlKSl7Zm9yKHZhciByPWU7cisrPGM7KWlmKDM0PT09dC5jaGFyQ29kZUF0KHIpKXtpZigzNCE9PXQuY2hhckNvZGVBdChyKzEpKWJyZWFrOysrcn11PXIrMjt2YXIgbj10LmNoYXJDb2RlQXQocisxKTtyZXR1cm4gMTM9PT1uPyhpPSEwLDEwPT09dC5jaGFyQ29kZUF0KHIrMikmJisrdSk6MTA9PT1uJiYoaT0hMCksdC5zbGljZShlKzEscikucmVwbGFjZSgvIiIvZywnIicpfWZvcig7Yz51Oyl7dmFyIG49dC5jaGFyQ29kZUF0KHUrKykscz0xO2lmKDEwPT09bilpPSEwO2Vsc2UgaWYoMTM9PT1uKWk9ITAsMTA9PT10LmNoYXJDb2RlQXQodSkmJigrK3UsKytzKTtlbHNlIGlmKG4hPT1sKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGUsdS1zKX1yZXR1cm4gdC5zbGljZShlKX1mb3IodmFyIG4saSxvPXt9LGE9e30scz1bXSxjPXQubGVuZ3RoLHU9MCxoPTA7KG49cigpKSE9PWE7KXtmb3IodmFyIGY9W107biE9PW8mJm4hPT1hOylmLnB1c2gobiksbj1yKCk7ZSYmbnVsbD09KGY9ZShmLGgrKykpfHxzLnB1c2goZil9cmV0dXJuIHN9LHIuZm9ybWF0PWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZVswXSkpcmV0dXJuIHIuZm9ybWF0Um93cyhlKTt2YXIgbj1uZXcgYixpPVtdO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHQpbi5oYXMoZSl8fGkucHVzaChuLmFkZChlKSl9KSxbaS5tYXAoYSkuam9pbih0KV0uY29uY2F0KGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYShlW3RdKX0pLmpvaW4odCl9KSkuam9pbigiXG4iKX0sci5mb3JtYXRSb3dzPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChvKS5qb2luKCJcbiIpfSxyfSx1YS5jc3Y9dWEuZHN2KCIsIiwidGV4dC9jc3YiKSx1YS50c3Y9dWEuZHN2KCIJIiwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpO3ZhciBscyxjcyx1cyxocyxmcz10aGlzW3codGhpcywicmVxdWVzdEFuaW1hdGlvbkZyYW1lIildfHxmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTt1YS50aW1lcj1mdW5jdGlvbigpe1J0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdWEudGltZXIuZmx1c2g9ZnVuY3Rpb24oKXtJdCgpLE50KCl9LHVhLnJvdW5kPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/TWF0aC5yb3VuZCh0KihlPU1hdGgucG93KDEwLGUpKSkvZTpNYXRoLnJvdW5kKHQpfTt2YXIgZHM9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceGI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl0ubWFwKEZ0KTt1YS5mb3JtYXRQcmVmaXg9ZnVuY3Rpb24odCxlKXt2YXIgcj0wO3JldHVybih0PSt0KSYmKDA+dCYmKHQqPS0xKSxlJiYodD11YS5yb3VuZCh0LGp0KHQsZSkpKSxyPTErTWF0aC5mbG9vcigxZS0xMitNYXRoLmxvZyh0KS9NYXRoLkxOMTApLHI9TWF0aC5tYXgoLTI0LE1hdGgubWluKDI0LDMqTWF0aC5mbG9vcigoci0xKS8zKSkpKSxkc1s4K3IvM119O3ZhciBwcz0vKD86KFtee10pPyhbPD49Xl0pKT8oWytcLSBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC4tP1xkKyk/KFthLXolXSk/L2ksZ3M9dWEubWFwKHtiOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKDgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKDE2KX0sWDpmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0sZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LHI6ZnVuY3Rpb24odCxlKXtyZXR1cm4odD11YS5yb3VuZCh0LGp0KHQsZSkpKS50b0ZpeGVkKE1hdGgubWF4KDAsTWF0aC5taW4oMjAsanQodCooMSsxZS0xNSksZSkpKSl9fSksdnM9dWEudGltZT17fSxtcz1EYXRlO1V0LnByb3RvdHlwZT17Z2V0RGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRGF0ZSgpfSxnZXREYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0RheSgpfSxnZXRGdWxsWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRnVsbFllYXIoKX0sZ2V0SG91cnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0hvdXJzKCl9LGdldE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWlsbGlzZWNvbmRzKCl9LGdldE1pbnV0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01pbnV0ZXMoKX0sZ2V0TW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01vbnRoKCl9LGdldFNlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ1NlY29uZHMoKX0sZ2V0VGltZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VGltZSgpfSxnZXRUaW1lem9uZU9mZnNldDpmdW5jdGlvbigpe3JldHVybiAwfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy52YWx1ZU9mKCl9LHNldERhdGU6ZnVuY3Rpb24oKXt5cy5zZXRVVENEYXRlLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXREYXk6ZnVuY3Rpb24oKXt5cy5zZXRVVENEYXkuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7eXMuc2V0VVRDRnVsbFllYXIuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldEhvdXJzOmZ1bmN0aW9uKCl7eXMuc2V0VVRDSG91cnMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3lzLnNldFVUQ01pbGxpc2Vjb25kcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWludXRlczpmdW5jdGlvbigpe3lzLnNldFVUQ01pbnV0ZXMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1vbnRoOmZ1bmN0aW9uKCl7eXMuc2V0VVRDTW9udGguYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldFNlY29uZHM6ZnVuY3Rpb24oKXt5cy5zZXRVVENTZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRUaW1lOmZ1bmN0aW9uKCl7eXMuc2V0VGltZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX19O3ZhciB5cz1EYXRlLnByb3RvdHlwZTt2cy55ZWFyPVZ0KGZ1bmN0aW9uKHQpe3JldHVybiB0PXZzLmRheSh0KSx0LnNldE1vbnRoKDAsMSksdH0sZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pLHZzLnllYXJzPXZzLnllYXIucmFuZ2UsdnMueWVhcnMudXRjPXZzLnllYXIudXRjLnJhbmdlLHZzLmRheT1WdChmdW5jdGlvbih0KXt2YXIgZT1uZXcgbXMoMmUzLDApO3JldHVybiBlLnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkpLGV9LGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pLHZzLmRheXM9dnMuZGF5LnJhbmdlLHZzLmRheXMudXRjPXZzLmRheS51dGMucmFuZ2UsdnMuZGF5T2ZZZWFyPWZ1bmN0aW9uKHQpe3ZhciBlPXZzLnllYXIodCk7cmV0dXJuIE1hdGguZmxvb3IoKHQtZS02ZTQqKHQuZ2V0VGltZXpvbmVPZmZzZXQoKS1lLmdldFRpbWV6b25lT2Zmc2V0KCkpKS84NjRlNSl9LFsic3VuZGF5IiwibW9uZGF5IiwidHVlc2RheSIsIndlZG5lc2RheSIsInRodXJzZGF5IiwiZnJpZGF5Iiwic2F0dXJkYXkiXS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7ZT03LWU7dmFyIHI9dnNbdF09VnQoZnVuY3Rpb24odCl7cmV0dXJuKHQ9dnMuZGF5KHQpKS5zZXREYXRlKHQuZ2V0RGF0ZSgpLSh0LmdldERheSgpK2UpJTcpLHR9LGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqTWF0aC5mbG9vcihlKSl9LGZ1bmN0aW9uKHQpe3ZhciByPXZzLnllYXIodCkuZ2V0RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKHZzLmRheU9mWWVhcih0KSsocitlKSU3KS83KS0ociE9PWUpfSk7dnNbdCsicyJdPXIucmFuZ2UsdnNbdCsicyJdLnV0Yz1yLnV0Yy5yYW5nZSx2c1t0KyJPZlllYXIiXT1mdW5jdGlvbih0KXt2YXIgcj12cy55ZWFyKHQpLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKCh2cy5kYXlPZlllYXIodCkrKHIrZSklNykvNyl9fSksdnMud2Vlaz12cy5zdW5kYXksdnMud2Vla3M9dnMuc3VuZGF5LnJhbmdlLHZzLndlZWtzLnV0Yz12cy5zdW5kYXkudXRjLnJhbmdlLHZzLndlZWtPZlllYXI9dnMuc3VuZGF5T2ZZZWFyO3ZhciBicz17Ii0iOiIiLF86IiAiLDA6IjAifSx4cz0vXlxzKlxkKy8sX3M9L14lLzt1YS5sb2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJue251bWJlckZvcm1hdDpEdCh0KSx0aW1lRm9ybWF0Okh0KHQpfX07dmFyIHdzPXVhLmxvY2FsZSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sZGF0ZVRpbWU6IiVhICViICVlICVYICVZIixkYXRlOiIlbS8lZC8lWSIsdGltZToiJUg6JU06JVMiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7dWEuZm9ybWF0PXdzLm51bWJlckZvcm1hdCx1YS5nZW89e30saGUucHJvdG90eXBlPXtzOjAsdDowLGFkZDpmdW5jdGlvbih0KXtmZSh0LHRoaXMudCxBcyksZmUoQXMucyx0aGlzLnMsdGhpcyksdGhpcy5zP3RoaXMudCs9QXMudDp0aGlzLnM9QXMudH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFyIEFzPW5ldyBoZTt1YS5nZW8uc3RyZWFtPWZ1bmN0aW9uKHQsZSl7dCYma3MuaGFzT3duUHJvcGVydHkodC50eXBlKT9rc1t0LnR5cGVdKHQsZSk6ZGUodCxlKX07dmFyIGtzPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7ZGUodC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5mZWF0dXJlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWRlKHJbbl0uZ2VvbWV0cnksZSl9fSxNcz17U3BoZXJlOmZ1bmN0aW9uKHQsZSl7ZS5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24odCxlKXt0PXQuY29vcmRpbmF0ZXMsZS5wb2ludCh0WzBdLHRbMV0sdFsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KXQ9cltuXSxlLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe3BlKHQuY29vcmRpbmF0ZXMsZSwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylwZShyW25dLGUsMCl9LFBvbHlnb246ZnVuY3Rpb24odCxlKXtnZSh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWdlKHJbbl0sZSl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmdlb21ldHJpZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylkZShyW25dLGUpfX07dWEuZ2VvLmFyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIFRzPTAsdWEuZ2VvLnN0cmVhbSh0LExzKSxUc307dmFyIFRzLEVzPW5ldyBoZSxMcz17c3BoZXJlOmZ1bmN0aW9uKCl7VHMrPTQqVWF9LHBvaW50OkEsbGluZVN0YXJ0OkEsbGluZUVuZDpBLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0VzLnJlc2V0KCksTHMubGluZVN0YXJ0PXZlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9MipFcztUcys9MD50PzQqVWErdDp0LExzLmxpbmVTdGFydD1Mcy5saW5lRW5kPUxzLnBvaW50PUF9fTt1YS5nZW8uYm91bmRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2IucHVzaCh4PVt1PXQsZj10XSksaD5lJiYoaD1lKSxlPmQmJihkPWUpfWZ1bmN0aW9uIGUoZSxyKXt2YXIgbj1tZShbZSpHYSxyKkdhXSk7aWYobSl7dmFyIGk9YmUobSxuKSxvPVtpWzFdLC1pWzBdLDBdLGE9YmUobyxpKTt3ZShhKSxhPUFlKGEpO3ZhciBsPWUtcCxjPWw+MD8xOi0xLGc9YVswXSpZYSpjLHY9d2EobCk+MTgwO2lmKHZeKGc+YypwJiZjKmU+Zykpe3ZhciB5PWFbMV0qWWE7eT5kJiYoZD15KX1lbHNlIGlmKGc9KGcrMzYwKSUzNjAtMTgwLHZeKGc+YypwJiZjKmU+Zykpe3ZhciB5PS1hWzFdKllhO2g+eSYmKGg9eSl9ZWxzZSBoPnImJihoPXIpLHI+ZCYmKGQ9cik7dj9wPmU/cyh1LGUpPnModSxmKSYmKGY9ZSk6cyhlLGYpPnModSxmKSYmKHU9ZSk6Zj49dT8odT5lJiYodT1lKSxlPmYmJihmPWUpKTplPnA/cyh1LGUpPnModSxmKSYmKGY9ZSk6cyhlLGYpPnModSxmKSYmKHU9ZSl9ZWxzZSB0KGUscik7bT1uLHA9ZX1mdW5jdGlvbiByKCl7Xy5wb2ludD1lfWZ1bmN0aW9uIG4oKXt4WzBdPXUseFsxXT1mLF8ucG9pbnQ9dCxtPW51bGx9ZnVuY3Rpb24gaSh0LHIpe2lmKG0pe3ZhciBuPXQtcDt5Kz13YShuKT4xODA/bisobj4wPzM2MDotMzYwKTpufWVsc2UgZz10LHY9cjtMcy5wb2ludCh0LHIpLGUodCxyKX1mdW5jdGlvbiBvKCl7THMubGluZVN0YXJ0KCl9ZnVuY3Rpb24gYSgpe2koZyx2KSxMcy5saW5lRW5kKCksd2EoeSk+RGEmJih1PS0oZj0xODApKSx4WzBdPXUseFsxXT1mLG09bnVsbH1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuKGUtPXQpPDA/ZSszNjA6ZX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGVbMF08PWVbMV0/ZVswXTw9dCYmdDw9ZVsxXTp0PGVbMF18fGVbMV08dH12YXIgdSxoLGYsZCxwLGcsdixtLHksYix4LF89e3BvaW50OnQsbGluZVN0YXJ0OnIsbGluZUVuZDpuLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe18ucG9pbnQ9aSxfLmxpbmVTdGFydD1vLF8ubGluZUVuZD1hLHk9MCxMcy5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0xzLnBvbHlnb25FbmQoKSxfLnBvaW50PXQsXy5saW5lU3RhcnQ9cixfLmxpbmVFbmQ9biwwPkVzPyh1PS0oZj0xODApLGg9LShkPTkwKSk6eT5EYT9kPTkwOi1EYT55JiYoaD0tOTApLHhbMF09dSx4WzFdPWZ9fTtyZXR1cm4gZnVuY3Rpb24odCl7ZD1mPS0odT1oPTEvMCksYj1bXSx1YS5nZW8uc3RyZWFtKHQsXyk7dmFyIGU9Yi5sZW5ndGg7aWYoZSl7Yi5zb3J0KGwpO2Zvcih2YXIgcixuPTEsaT1iWzBdLG89W2ldO2U+bjsrK24pcj1iW25dLGMoclswXSxpKXx8YyhyWzFdLGkpPyhzKGlbMF0sclsxXSk+cyhpWzBdLGlbMV0pJiYoaVsxXT1yWzFdKSxzKHJbMF0saVsxXSk+cyhpWzBdLGlbMV0pJiYoaVswXT1yWzBdKSk6by5wdXNoKGk9cik7Zm9yKHZhciBhLHIscD0tKDEvMCksZT1vLmxlbmd0aC0xLG49MCxpPW9bZV07ZT49bjtpPXIsKytuKXI9b1tuXSwoYT1zKGlbMV0sclswXSkpPnAmJihwPWEsdT1yWzBdLGY9aVsxXSl9cmV0dXJuIGI9eD1udWxsLHU9PT0xLzB8fGg9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbdSxoXSxbZixkXV19fSgpLHVhLmdlby5jZW50cm9pZD1mdW5jdGlvbih0KXtTcz1Dcz1Qcz16cz1Scz1Pcz1Jcz1Ocz1qcz1Gcz1Ecz0wLHVhLmdlby5zdHJlYW0odCxCcyk7dmFyIGU9anMscj1GcyxuPURzLGk9ZSplK3IqcituKm47cmV0dXJuIEJhPmkmJihlPU9zLHI9SXMsbj1OcyxEYT5DcyYmKGU9UHMscj16cyxuPVJzKSxpPWUqZStyKnIrbipuLEJhPmkpP1tOYU4sTmFOXTpbTWF0aC5hdGFuMihyLGUpKllhLG50KG4vTWF0aC5zcXJ0KGkpKSpZYV19O3ZhciBTcyxDcyxQcyx6cyxScyxPcyxJcyxOcyxqcyxGcyxEcyxCcz17c3BoZXJlOkEscG9pbnQ6TWUsbGluZVN0YXJ0OkVlLGxpbmVFbmQ6TGUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7QnMubGluZVN0YXJ0PVNlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7QnMubGluZVN0YXJ0PUVlfX0sVXM9SWUoUGUsRGUsVWUsWy1VYSwtVWEvMl0pLFZzPTFlOTt1YS5nZW8uY2xpcEV4dGVudD1mdW5jdGlvbigpe3ZhciB0LGUscixuLGksbyxhPXtzdHJlYW06ZnVuY3Rpb24odCl7cmV0dXJuIGkmJihpLnZhbGlkPSExKSxpPW8odCksaS52YWxpZD0hMCxpfSxleHRlbnQ6ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89R2UodD0rc1swXVswXSxlPStzWzBdWzFdLHI9K3NbMV1bMF0sbj0rc1sxXVsxXSksaSYmKGkudmFsaWQ9ITEsaT1udWxsKSxhKTpbW3QsZV0sW3Isbl1dfX07cmV0dXJuIGEuZXh0ZW50KFtbMCwwXSxbOTYwLDUwMF1dKX0sKHVhLmdlby5jb25pY0VxdWFsQXJlYT1mdW5jdGlvbigpe3JldHVybiBZZShYZSl9KS5yYXc9WGUsdWEuZ2VvLmFsYmVycz1mdW5jdGlvbigpe3JldHVybiB1YS5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKX0sdWEuZ2VvLmFsYmVyc1VzYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIG89dFswXSxhPXRbMV07cmV0dXJuIGU9bnVsbCxyKG8sYSksZXx8KG4obyxhKSxlKXx8aShvLGEpLGV9dmFyIGUscixuLGksbz11YS5nZW8uYWxiZXJzKCksYT11YS5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLHM9dWEuZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGw9e3BvaW50OmZ1bmN0aW9uKHQscil7ZT1bdCxyXX19O3JldHVybiB0LmludmVydD1mdW5jdGlvbih0KXt2YXIgZT1vLnNjYWxlKCkscj1vLnRyYW5zbGF0ZSgpLG49KHRbMF0tclswXSkvZSxpPSh0WzFdLXJbMV0pL2U7cmV0dXJuKGk+PS4xMiYmLjIzND5pJiZuPj0tLjQyNSYmLS4yMTQ+bj9hOmk+PS4xNjYmJi4yMzQ+aSYmbj49LS4yMTQmJi0uMTE1Pm4/czpvKS5pbnZlcnQodCl9LHQuc3RyZWFtPWZ1bmN0aW9uKHQpe3ZhciBlPW8uc3RyZWFtKHQpLHI9YS5zdHJlYW0odCksbj1zLnN0cmVhbSh0KTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24odCxpKXtlLnBvaW50KHQsaSksci5wb2ludCh0LGkpLG4ucG9pbnQodCxpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7ZS5zcGhlcmUoKSxyLnNwaGVyZSgpLG4uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UubGluZVN0YXJ0KCksci5saW5lU3RhcnQoKSxuLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7ZS5saW5lRW5kKCksci5saW5lRW5kKCksbi5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksci5wb2x5Z29uU3RhcnQoKSxuLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ZS5wb2x5Z29uRW5kKCksci5wb2x5Z29uRW5kKCksbi5wb2x5Z29uRW5kKCl9fX0sdC5wcmVjaXNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8ucHJlY2lzaW9uKGUpLGEucHJlY2lzaW9uKGUpLHMucHJlY2lzaW9uKGUpLHQpOm8ucHJlY2lzaW9uKCl9LHQuc2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8uc2NhbGUoZSksYS5zY2FsZSguMzUqZSkscy5zY2FsZShlKSx0LnRyYW5zbGF0ZShvLnRyYW5zbGF0ZSgpKSk6by5zY2FsZSgpfSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gby50cmFuc2xhdGUoKTt2YXIgYz1vLnNjYWxlKCksdT0rZVswXSxoPStlWzFdO3JldHVybiByPW8udHJhbnNsYXRlKGUpLmNsaXBFeHRlbnQoW1t1LS40NTUqYyxoLS4yMzgqY10sW3UrLjQ1NSpjLGgrLjIzOCpjXV0pLnN0cmVhbShsKS5wb2ludCwKbj1hLnRyYW5zbGF0ZShbdS0uMzA3KmMsaCsuMjAxKmNdKS5jbGlwRXh0ZW50KFtbdS0uNDI1KmMrRGEsaCsuMTIqYytEYV0sW3UtLjIxNCpjLURhLGgrLjIzNCpjLURhXV0pLnN0cmVhbShsKS5wb2ludCxpPXMudHJhbnNsYXRlKFt1LS4yMDUqYyxoKy4yMTIqY10pLmNsaXBFeHRlbnQoW1t1LS4yMTQqYytEYSxoKy4xNjYqYytEYV0sW3UtLjExNSpjLURhLGgrLjIzNCpjLURhXV0pLnN0cmVhbShsKS5wb2ludCx0fSx0LnNjYWxlKDEwNzApfTt2YXIgcXMsSHMsR3MsWXMsWHMsV3MsWnM9e3BvaW50OkEsbGluZVN0YXJ0OkEsbGluZUVuZDpBLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0hzPTAsWnMubGluZVN0YXJ0PVdlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7WnMubGluZVN0YXJ0PVpzLmxpbmVFbmQ9WnMucG9pbnQ9QSxxcys9d2EoSHMvMil9fSwkcz17cG9pbnQ6WmUsbGluZVN0YXJ0OkEsbGluZUVuZDpBLHBvbHlnb25TdGFydDpBLHBvbHlnb25FbmQ6QX0sS3M9e3BvaW50OlFlLGxpbmVTdGFydDpKZSxsaW5lRW5kOnRyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0tzLmxpbmVTdGFydD1lcn0scG9seWdvbkVuZDpmdW5jdGlvbigpe0tzLnBvaW50PVFlLEtzLmxpbmVTdGFydD1KZSxLcy5saW5lRW5kPXRyfX07dWEuZ2VvLnBhdGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0JiYoImZ1bmN0aW9uIj09dHlwZW9mIHMmJm8ucG9pbnRSYWRpdXMoK3MuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxhJiZhLnZhbGlkfHwoYT1pKG8pKSx1YS5nZW8uc3RyZWFtKHQsYSkpLG8ucmVzdWx0KCl9ZnVuY3Rpb24gZSgpe3JldHVybiBhPW51bGwsdH12YXIgcixuLGksbyxhLHM9NC41O3JldHVybiB0LmFyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIHFzPTAsdWEuZ2VvLnN0cmVhbSh0LGkoWnMpKSxxc30sdC5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gUHM9enM9UnM9T3M9SXM9TnM9anM9RnM9RHM9MCx1YS5nZW8uc3RyZWFtKHQsaShLcykpLERzP1tqcy9EcyxGcy9Ec106TnM/W09zL05zLElzL05zXTpScz9bUHMvUnMsenMvUnNdOltOYU4sTmFOXX0sdC5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIFhzPVdzPS0oR3M9WXM9MS8wKSx1YS5nZW8uc3RyZWFtKHQsaSgkcykpLFtbR3MsWXNdLFtYcyxXc11dfSx0LnByb2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9KHI9dCk/dC5zdHJlYW18fGlyKHQpOngsZSgpKTpyfSx0LmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09KG49dCk/bmV3ICRlOm5ldyBycih0KSwiZnVuY3Rpb24iIT10eXBlb2YgcyYmby5wb2ludFJhZGl1cyhzKSxlKCkpOm59LHQucG9pbnRSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTooby5wb2ludFJhZGl1cygrZSksK2UpLHQpOnN9LHQucHJvamVjdGlvbih1YS5nZW8uYWxiZXJzVXNhKCkpLmNvbnRleHQobnVsbCl9LHVhLmdlby50cmFuc2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJue3N0cmVhbTpmdW5jdGlvbihlKXt2YXIgcj1uZXcgb3IoZSk7Zm9yKHZhciBuIGluIHQpcltuXT10W25dO3JldHVybiByfX19LG9yLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX0sdWEuZ2VvLnByb2plY3Rpb249c3IsdWEuZ2VvLnByb2plY3Rpb25NdXRhdG9yPWxyLCh1YS5nZW8uZXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHVyKX0pLnJhdz11ci5pbnZlcnQ9dXIsdWEuZ2VvLnJvdGF0aW9uPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU9dChlWzBdKkdhLGVbMV0qR2EpLGVbMF0qPVlhLGVbMV0qPVlhLGV9cmV0dXJuIHQ9ZnIodFswXSUzNjAqR2EsdFsxXSpHYSx0Lmxlbmd0aD4yP3RbMl0qR2E6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dC5pbnZlcnQoZVswXSpHYSxlWzFdKkdhKSxlWzBdKj1ZYSxlWzFdKj1ZYSxlfSxlfSxoci5pbnZlcnQ9dXIsdWEuZ2VvLmNpcmNsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGU9ZnIoLXRbMF0qR2EsLXRbMV0qR2EsMCkuaW52ZXJ0LGk9W107cmV0dXJuIHIobnVsbCxudWxsLDEse3BvaW50OmZ1bmN0aW9uKHQscil7aS5wdXNoKHQ9ZSh0LHIpKSx0WzBdKj1ZYSx0WzFdKj1ZYX19KSx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2ldfX12YXIgZSxyLG49WzAsMF0saT02O3JldHVybiB0Lm9yaWdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLHQpOm59LHQuYW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dnIoKGU9K24pKkdhLGkqR2EpLHQpOmV9LHQucHJlY2lzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXZyKGUqR2EsKGk9K24pKkdhKSx0KTppfSx0LmFuZ2xlKDkwKX0sdWEuZ2VvLmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj0oZVswXS10WzBdKSpHYSxpPXRbMV0qR2Esbz1lWzFdKkdhLGE9TWF0aC5zaW4obikscz1NYXRoLmNvcyhuKSxsPU1hdGguc2luKGkpLGM9TWF0aC5jb3MoaSksdT1NYXRoLnNpbihvKSxoPU1hdGguY29zKG8pO3JldHVybiBNYXRoLmF0YW4yKE1hdGguc3FydCgocj1oKmEpKnIrKHI9Yyp1LWwqaCpzKSpyKSxsKnUrYypoKnMpfSx1YS5nZW8uZ3JhdGljdWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOmUoKX19ZnVuY3Rpb24gZSgpe3JldHVybiB1YS5yYW5nZShNYXRoLmNlaWwoby92KSp2LGksdikubWFwKGYpLmNvbmNhdCh1YS5yYW5nZShNYXRoLmNlaWwoYy9tKSptLGwsbSkubWFwKGQpKS5jb25jYXQodWEucmFuZ2UoTWF0aC5jZWlsKG4vcCkqcCxyLHApLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gd2EodCV2KT5EYX0pLm1hcCh1KSkuY29uY2F0KHVhLnJhbmdlKE1hdGguY2VpbChzL2cpKmcsYSxnKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHdhKHQlbSk+RGF9KS5tYXAoaCkpfXZhciByLG4saSxvLGEscyxsLGMsdSxoLGYsZCxwPTEwLGc9cCx2PTkwLG09MzYwLHk9Mi41O3JldHVybiB0LmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSl9LHQub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbZihvKS5jb25jYXQoZChsKS5zbGljZSgxKSxmKGkpLnJldmVyc2UoKS5zbGljZSgxKSxkKGMpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sdC5leHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5tYWpvckV4dGVudChlKS5taW5vckV4dGVudChlKTp0Lm1pbm9yRXh0ZW50KCl9LHQubWFqb3JFeHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K2VbMF1bMF0saT0rZVsxXVswXSxjPStlWzBdWzFdLGw9K2VbMV1bMV0sbz5pJiYoZT1vLG89aSxpPWUpLGM+bCYmKGU9YyxjPWwsbD1lKSx0LnByZWNpc2lvbih5KSk6W1tvLGNdLFtpLGxdXX0sdC5taW5vckV4dGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rZVswXVswXSxyPStlWzFdWzBdLHM9K2VbMF1bMV0sYT0rZVsxXVsxXSxuPnImJihlPW4sbj1yLHI9ZSkscz5hJiYoZT1zLHM9YSxhPWUpLHQucHJlY2lzaW9uKHkpKTpbW24sc10sW3IsYV1dfSx0LnN0ZXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5tYWpvclN0ZXAoZSkubWlub3JTdGVwKGUpOnQubWlub3JTdGVwKCl9LHQubWFqb3JTdGVwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PStlWzBdLG09K2VbMV0sdCk6W3YsbV19LHQubWlub3JTdGVwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPStlWzBdLGc9K2VbMV0sdCk6W3AsZ119LHQucHJlY2lzaW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PStlLHU9eXIocyxhLDkwKSxoPWJyKG4scix5KSxmPXlyKGMsbCw5MCksZD1icihvLGkseSksdCk6eX0sdC5tYWpvckV4dGVudChbWy0xODAsLTkwK0RhXSxbMTgwLDkwLURhXV0pLm1pbm9yRXh0ZW50KFtbLTE4MCwtODAtRGFdLFsxODAsODArRGFdXSl9LHVhLmdlby5ncmVhdEFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6W2V8fG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHJ8fGkuYXBwbHkodGhpcyxhcmd1bWVudHMpXX19dmFyIGUscixuPXhyLGk9X3I7cmV0dXJuIHQuZGlzdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdWEuZ2VvLmRpc3RhbmNlKGV8fG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHJ8fGkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sdC5zb3VyY2U9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49cixlPSJmdW5jdGlvbiI9PXR5cGVvZiByP251bGw6cix0KTpufSx0LnRhcmdldD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1lLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/bnVsbDplLHQpOml9LHQucHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dDowfSx0fSx1YS5nZW8uaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gd3IodFswXSpHYSx0WzFdKkdhLGVbMF0qR2EsZVsxXSpHYSl9LHVhLmdlby5sZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIFFzPTAsdWEuZ2VvLnN0cmVhbSh0LEpzKSxRc307dmFyIFFzLEpzPXtzcGhlcmU6QSxwb2ludDpBLGxpbmVTdGFydDpBcixsaW5lRW5kOkEscG9seWdvblN0YXJ0OkEscG9seWdvbkVuZDpBfSx0bD1rcihmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KDIvKDErdCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gMipNYXRoLmFzaW4odC8yKX0pOyh1YS5nZW8uYXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRsKX0pLnJhdz10bDt2YXIgZWw9a3IoZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5hY29zKHQpO3JldHVybiBlJiZlL01hdGguc2luKGUpfSx4KTsodWEuZ2VvLmF6aW11dGhhbEVxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIHNyKGVsKX0pLnJhdz1lbCwodWEuZ2VvLmNvbmljQ29uZm9ybWFsPWZ1bmN0aW9uKCl7cmV0dXJuIFllKE1yKX0pLnJhdz1NciwodWEuZ2VvLmNvbmljRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWWUoVHIpfSkucmF3PVRyO3ZhciBybD1rcihmdW5jdGlvbih0KXtyZXR1cm4gMS90fSxNYXRoLmF0YW4pOyh1YS5nZW8uZ25vbW9uaWM9ZnVuY3Rpb24oKXtyZXR1cm4gc3IocmwpfSkucmF3PXJsLEVyLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0LDIqTWF0aC5hdGFuKE1hdGguZXhwKGUpKS1IYV19LCh1YS5nZW8ubWVyY2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gTHIoRXIpfSkucmF3PUVyO3ZhciBubD1rcihmdW5jdGlvbigpe3JldHVybiAxfSxNYXRoLmFzaW4pOyh1YS5nZW8ub3J0aG9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKG5sKX0pLnJhdz1ubDt2YXIgaWw9a3IoZnVuY3Rpb24odCl7cmV0dXJuIDEvKDErdCl9LGZ1bmN0aW9uKHQpe3JldHVybiAyKk1hdGguYXRhbih0KX0pOyh1YS5nZW8uc3RlcmVvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBzcihpbCl9KS5yYXc9aWwsU3IuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqTWF0aC5hdGFuKE1hdGguZXhwKHQpKS1IYV19LCh1YS5nZW8udHJhbnN2ZXJzZU1lcmNhdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9THIoU3IpLGU9dC5jZW50ZXIscj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/ZShbLXRbMV0sdFswXV0pOih0PWUoKSxbdFsxXSwtdFswXV0pfSx0LnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD9yKFt0WzBdLHRbMV0sdC5sZW5ndGg+Mj90WzJdKzkwOjkwXSk6KHQ9cigpLFt0WzBdLHRbMV0sdFsyXS05MF0pfSxyKFswLDAsOTBdKX0pLnJhdz1Tcix1YS5nZW9tPXt9LHVhLmdlb20uaHVsbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2lmKHQubGVuZ3RoPDMpcmV0dXJuW107dmFyIGUsaT1MdChyKSxvPUx0KG4pLGE9dC5sZW5ndGgscz1bXSxsPVtdO2ZvcihlPTA7YT5lO2UrKylzLnB1c2goWytpLmNhbGwodGhpcyx0W2VdLGUpLCtvLmNhbGwodGhpcyx0W2VdLGUpLGVdKTtmb3Iocy5zb3J0KFJyKSxlPTA7YT5lO2UrKylsLnB1c2goW3NbZV1bMF0sLXNbZV1bMV1dKTt2YXIgYz16cihzKSx1PXpyKGwpLGg9dVswXT09PWNbMF0sZj11W3UubGVuZ3RoLTFdPT09Y1tjLmxlbmd0aC0xXSxkPVtdO2ZvcihlPWMubGVuZ3RoLTE7ZT49MDstLWUpZC5wdXNoKHRbc1tjW2VdXVsyXV0pO2ZvcihlPStoO2U8dS5sZW5ndGgtZjsrK2UpZC5wdXNoKHRbc1t1W2VdXVsyXV0pO3JldHVybiBkfXZhciByPUNyLG49UHI7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZSh0KTooZS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsZSk6cn0sZS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZSl9LHVhLmdlb20ucG9seWdvbj1mdW5jdGlvbih0KXtyZXR1cm4gRWEodCxvbCksdH07dmFyIG9sPXVhLmdlb20ucG9seWdvbi5wcm90b3R5cGU9W107b2wuYXJlYT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPS0xLHI9dGhpcy5sZW5ndGgsbj10aGlzW3ItMV0saT0wOysrZTxyOyl0PW4sbj10aGlzW2VdLGkrPXRbMV0qblswXS10WzBdKm5bMV07cmV0dXJuLjUqaX0sb2wuY2VudHJvaWQ9ZnVuY3Rpb24odCl7dmFyIGUscixuPS0xLGk9dGhpcy5sZW5ndGgsbz0wLGE9MCxzPXRoaXNbaS0xXTtmb3IoYXJndW1lbnRzLmxlbmd0aHx8KHQ9LTEvKDYqdGhpcy5hcmVhKCkpKTsrK248aTspZT1zLHM9dGhpc1tuXSxyPWVbMF0qc1sxXS1zWzBdKmVbMV0sbys9KGVbMF0rc1swXSkqcixhKz0oZVsxXStzWzFdKSpyO3JldHVybltvKnQsYSp0XX0sb2wuY2xpcD1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGksbyxhLHM9TnIodCksbD0tMSxjPXRoaXMubGVuZ3RoLU5yKHRoaXMpLHU9dGhpc1tjLTFdOysrbDxjOyl7Zm9yKGU9dC5zbGljZSgpLHQubGVuZ3RoPTAsaT10aGlzW2xdLG89ZVsobj1lLmxlbmd0aC1zKS0xXSxyPS0xOysrcjxuOylhPWVbcl0sT3IoYSx1LGkpPyhPcihvLHUsaSl8fHQucHVzaChJcihvLGEsdSxpKSksdC5wdXNoKGEpKTpPcihvLHUsaSkmJnQucHVzaChJcihvLGEsdSxpKSksbz1hO3MmJnQucHVzaCh0WzBdKSx1PWl9cmV0dXJuIHR9O3ZhciBhbCxzbCxsbCxjbCx1bCxobD1bXSxmbD1bXTtIci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMuZWRnZXMscj1lLmxlbmd0aDtyLS07KXQ9ZVtyXS5lZGdlLHQuYiYmdC5hfHxlLnNwbGljZShyLDEpO3JldHVybiBlLnNvcnQoWXIpLGUubGVuZ3RofSxybi5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5hOnRoaXMuZWRnZS5ifSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9PT10aGlzLnNpdGU/dGhpcy5lZGdlLmI6dGhpcy5lZGdlLmF9fSxubi5wcm90b3R5cGU9e2luc2VydDpmdW5jdGlvbih0LGUpe3ZhciByLG4saTtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQuTi5QPWUpLHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0LlI9ZTtyPXR9ZWxzZSB0aGlzLl8/KHQ9bG4odGhpcy5fKSxlLlA9bnVsbCxlLk49dCx0LlA9dC5MPWUscj10KTooZS5QPWUuTj1udWxsLHRoaXMuXz1lLHI9bnVsbCk7Zm9yKGUuTD1lLlI9bnVsbCxlLlU9cixlLkM9ITAsdD1lO3ImJnIuQzspbj1yLlUscj09PW4uTD8oaT1uLlIsaSYmaS5DPyhyLkM9aS5DPSExLG4uQz0hMCx0PW4pOih0PT09ci5SJiYoYW4odGhpcyxyKSx0PXIscj10LlUpLHIuQz0hMSxuLkM9ITAsc24odGhpcyxuKSkpOihpPW4uTCxpJiZpLkM/KHIuQz1pLkM9ITEsbi5DPSEwLHQ9bik6KHQ9PT1yLkwmJihzbih0aGlzLHIpLHQ9cixyPXQuVSksci5DPSExLG4uQz0hMCxhbih0aGlzLG4pKSkscj10LlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbih0KXt0Lk4mJih0Lk4uUD10LlApLHQuUCYmKHQuUC5OPXQuTiksdC5OPXQuUD1udWxsO3ZhciBlLHIsbixpPXQuVSxvPXQuTCxhPXQuUjtpZihyPW8/YT9sbihhKTpvOmEsaT9pLkw9PT10P2kuTD1yOmkuUj1yOnRoaXMuXz1yLG8mJmE/KG49ci5DLHIuQz10LkMsci5MPW8sby5VPXIsciE9PWE/KGk9ci5VLHIuVT10LlUsdD1yLlIsaS5MPXQsci5SPWEsYS5VPXIpOihyLlU9aSxpPXIsdD1yLlIpKToobj10LkMsdD1yKSx0JiYodC5VPWkpLCFuKXtpZih0JiZ0LkMpcmV0dXJuIHZvaWQodC5DPSExKTtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1pLkwpe2lmKGU9aS5SLGUuQyYmKGUuQz0hMSxpLkM9ITAsYW4odGhpcyxpKSxlPWkuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5SJiZlLlIuQ3x8KGUuTC5DPSExLGUuQz0hMCxzbih0aGlzLGUpLGU9aS5SKSxlLkM9aS5DLGkuQz1lLlIuQz0hMSxhbih0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKGU9aS5MLGUuQyYmKGUuQz0hMSxpLkM9ITAsc24odGhpcyxpKSxlPWkuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5MJiZlLkwuQ3x8KGUuUi5DPSExLGUuQz0hMCxhbih0aGlzLGUpLGU9aS5MKSxlLkM9aS5DLGkuQz1lLkwuQz0hMSxzbih0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PWksaT1pLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX0sdWEuZ2VvbS52b3Jvbm9pPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxuPXNbMF1bMF0saT1zWzBdWzFdLG89c1sxXVswXSxhPXNbMV1bMV07cmV0dXJuIGNuKHIodCkscykuY2VsbHMuZm9yRWFjaChmdW5jdGlvbihyLHMpe3ZhciBsPXIuZWRnZXMsYz1yLnNpdGUsdT1lW3NdPWwubGVuZ3RoP2wubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhcnQoKTtyZXR1cm5bZS54LGUueV19KTpjLng+PW4mJmMueDw9byYmYy55Pj1pJiZjLnk8PWE/W1tuLGFdLFtvLGFdLFtvLGldLFtuLGldXTpbXTt1LnBvaW50PXRbc119KSxlfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6TWF0aC5yb3VuZChvKHQsZSkvRGEpKkRhLHk6TWF0aC5yb3VuZChhKHQsZSkvRGEpKkRhLGk6ZX19KX12YXIgbj1DcixpPVByLG89bixhPWkscz1kbDtyZXR1cm4gdD9lKHQpOihlLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBjbihyKHQpKS5lZGdlcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQubCYmdC5yfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntzb3VyY2U6dFtlLmwuaV0sdGFyZ2V0OnRbZS5yLmldfX0pfSxlLnRyaWFuZ2xlcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gY24ocih0KSkuY2VsbHMuZm9yRWFjaChmdW5jdGlvbihyLG4pe2Zvcih2YXIgaSxvLGE9ci5zaXRlLHM9ci5lZGdlcy5zb3J0KFlyKSxsPS0xLGM9cy5sZW5ndGgsdT1zW2MtMV0uZWRnZSxoPXUubD09PWE/dS5yOnUubDsrK2w8YzspaT11LG89aCx1PXNbbF0uZWRnZSxoPXUubD09PWE/dS5yOnUubCxuPG8uaSYmbjxoLmkmJmhuKGEsbyxoKTwwJiZlLnB1c2goW3Rbbl0sdFtvLmldLHRbaC5pXV0pfSksZX0sZS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPUx0KG49dCksZSk6bn0sZS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPUx0KGk9dCksZSk6aX0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW51bGw9PXQ/ZGw6dCxlKTpzPT09ZGw/bnVsbDpzfSxlLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZS5jbGlwRXh0ZW50KHQmJltbMCwwXSx0XSk6cz09PWRsP251bGw6cyYmc1sxXX0sZSl9O3ZhciBkbD1bWy0xZTYsLTFlNl0sWzFlNiwxZTZdXTt1YS5nZW9tLmRlbGF1bmF5PWZ1bmN0aW9uKHQpe3JldHVybiB1YS5nZW9tLnZvcm9ub2koKS50cmlhbmdsZXModCl9LHVhLmdlb20ucXVhZHRyZWU9ZnVuY3Rpb24odCxlLHIsbixpKXtmdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIG8odCxlLHIsbixpLG8sYSxzKXtpZighaXNOYU4ocikmJiFpc05hTihuKSlpZih0LmxlYWYpe3ZhciBsPXQueCx1PXQueTtpZihudWxsIT1sKWlmKHdhKGwtcikrd2EodS1uKTwuMDEpYyh0LGUscixuLGksbyxhLHMpO2Vsc2V7dmFyIGg9dC5wb2ludDt0Lng9dC55PXQucG9pbnQ9bnVsbCxjKHQsaCxsLHUsaSxvLGEscyksYyh0LGUscixuLGksbyxhLHMpfWVsc2UgdC54PXIsdC55PW4sdC5wb2ludD1lfWVsc2UgYyh0LGUscixuLGksbyxhLHMpfWZ1bmN0aW9uIGModCxlLHIsbixpLGEscyxsKXt2YXIgYz0uNSooaStzKSx1PS41KihhK2wpLGg9cj49YyxmPW4+PXUsZD1mPDwxfGg7dC5sZWFmPSExLHQ9dC5ub2Rlc1tkXXx8KHQubm9kZXNbZF09cG4oKSksaD9pPWM6cz1jLGY/YT11Omw9dSxvKHQsZSxyLG4saSxhLHMsbCl9dmFyIHUsaCxmLGQscCxnLHYsbSx5LGI9THQocykseD1MdChsKTtpZihudWxsIT1lKWc9ZSx2PXIsbT1uLHk9aTtlbHNlIGlmKG09eT0tKGc9dj0xLzApLGg9W10sZj1bXSxwPXQubGVuZ3RoLGEpZm9yKGQ9MDtwPmQ7KytkKXU9dFtkXSx1Lng8ZyYmKGc9dS54KSx1Lnk8diYmKHY9dS55KSx1Lng+bSYmKG09dS54KSx1Lnk+eSYmKHk9dS55KSxoLnB1c2godS54KSxmLnB1c2godS55KTtlbHNlIGZvcihkPTA7cD5kOysrZCl7dmFyIF89K2IodT10W2RdLGQpLHc9K3godSxkKTtnPl8mJihnPV8pLHY+dyYmKHY9dyksXz5tJiYobT1fKSx3PnkmJih5PXcpLGgucHVzaChfKSxmLnB1c2godyl9dmFyIEE9bS1nLGs9eS12O0E+az95PXYrQTptPWcrazt2YXIgTT1wbigpO2lmKE0uYWRkPWZ1bmN0aW9uKHQpe28oTSx0LCtiKHQsKytkKSwreCh0LGQpLGcsdixtLHkpfSxNLnZpc2l0PWZ1bmN0aW9uKHQpe2duKHQsTSxnLHYsbSx5KX0sTS5maW5kPWZ1bmN0aW9uKHQpe3JldHVybiB2bihNLHRbMF0sdFsxXSxnLHYsbSx5KX0sZD0tMSxudWxsPT1lKXtmb3IoOysrZDxwOylvKE0sdFtkXSxoW2RdLGZbZF0sZyx2LG0seSk7LS1kfWVsc2UgdC5mb3JFYWNoKE0uYWRkKTtyZXR1cm4gaD1mPXQ9dT1udWxsLE19dmFyIGEscz1DcixsPVByO3JldHVybihhPWFyZ3VtZW50cy5sZW5ndGgpPyhzPWZuLGw9ZG4sMz09PWEmJihpPXIsbj1lLHI9ZT0wKSxvKHQpKTooby54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsbyk6c30sby55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsbyk6bH0sby5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/ZT1yPW49aT1udWxsOihlPSt0WzBdWzBdLHI9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSxvKTpudWxsPT1lP251bGw6W1tlLHJdLFtuLGldXX0sby5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2U9cj1uPWk9bnVsbDooZT1yPTAsbj0rdFswXSxpPSt0WzFdKSxvKTpudWxsPT1lP251bGw6W24tZSxpLXJdfSxvKX0sdWEuaW50ZXJwb2xhdGVSZ2I9bW4sdWEuaW50ZXJwb2xhdGVPYmplY3Q9eW4sdWEuaW50ZXJwb2xhdGVOdW1iZXI9Ym4sdWEuaW50ZXJwb2xhdGVTdHJpbmc9eG47dmFyIHBsPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxnbD1uZXcgUmVnRXhwKHBsLnNvdXJjZSwiZyIpO3VhLmludGVycG9sYXRlPV9uLHVhLmludGVycG9sYXRvcnM9W2Z1bmN0aW9uKHQsZSl7dmFyIHI9dHlwZW9mIGU7cmV0dXJuKCJzdHJpbmciPT09cj9zcy5oYXMoZS50b0xvd2VyQ2FzZSgpKXx8L14oI3xyZ2JcKHxoc2xcKCkvaS50ZXN0KGUpP21uOnhuOmUgaW5zdGFuY2VvZiBsdD9tbjpBcnJheS5pc0FycmF5KGUpP3duOiJvYmplY3QiPT09ciYmaXNOYU4oZSk/eW46Ym4pKHQsZSl9XSx1YS5pbnRlcnBvbGF0ZUFycmF5PXduO3ZhciB2bD1mdW5jdGlvbigpe3JldHVybiB4fSxtbD11YS5tYXAoe2xpbmVhcjp2bCxwb2x5OlNuLHF1YWQ6ZnVuY3Rpb24oKXtyZXR1cm4gVG59LGN1YmljOmZ1bmN0aW9uKCl7cmV0dXJuIEVufSxzaW46ZnVuY3Rpb24oKXtyZXR1cm4gQ259LGV4cDpmdW5jdGlvbigpe3JldHVybiBQbn0sY2lyY2xlOmZ1bmN0aW9uKCl7cmV0dXJuIHpufSxlbGFzdGljOlJuLGJhY2s6T24sYm91bmNlOmZ1bmN0aW9uKCl7cmV0dXJuIElufX0pLHlsPXVhLm1hcCh7ImluIjp4LG91dDprbiwiaW4tb3V0IjpNbiwib3V0LWluIjpmdW5jdGlvbih0KXtyZXR1cm4gTW4oa24odCkpfX0pO3VhLmVhc2U9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCItIikscj1lPj0wP3Quc2xpY2UoMCxlKTp0LG49ZT49MD90LnNsaWNlKGUrMSk6ImluIjtyZXR1cm4gcj1tbC5nZXQocil8fHZsLG49eWwuZ2V0KG4pfHx4LEFuKG4oci5hcHBseShudWxsLGhhLmNhbGwoYXJndW1lbnRzLDEpKSkpfSx1YS5pbnRlcnBvbGF0ZUhjbD1Obix1YS5pbnRlcnBvbGF0ZUhzbD1qbix1YS5pbnRlcnBvbGF0ZUxhYj1Gbix1YS5pbnRlcnBvbGF0ZVJvdW5kPURuLHVhLnRyYW5zZm9ybT1mdW5jdGlvbih0KXt2YXIgZT1kYS5jcmVhdGVFbGVtZW50TlModWEubnMucHJlZml4LnN2ZywiZyIpO3JldHVybih1YS50cmFuc2Zvcm09ZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7ZS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCk7dmFyIHI9ZS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpfXJldHVybiBuZXcgQm4ocj9yLm1hdHJpeDpibCl9KSh0KX0sQm4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMudHJhbnNsYXRlKyIpcm90YXRlKCIrdGhpcy5yb3RhdGUrIilza2V3WCgiK3RoaXMuc2tldysiKXNjYWxlKCIrdGhpcy5zY2FsZSsiKSJ9O3ZhciBibD17YToxLGI6MCxjOjAsZDoxLGU6MCxmOjB9O3VhLmludGVycG9sYXRlVHJhbnNmb3JtPVpuLHVhLmxheW91dD17fSx1YS5sYXlvdXQuYnVuZGxlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPS0xLG49dC5sZW5ndGg7KytyPG47KWUucHVzaChRbih0W3JdKSk7cmV0dXJuIGV9fSx1YS5sYXlvdXQuY2hvcmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQsYyxoLGYsZCxwPXt9LGc9W10sdj11YS5yYW5nZShvKSxtPVtdO2ZvcihyPVtdLG49W10sdD0wLGY9LTE7KytmPG87KXtmb3IoYz0wLGQ9LTE7KytkPG87KWMrPWlbZl1bZF07Zy5wdXNoKGMpLG0ucHVzaCh1YS5yYW5nZShvKSksdCs9Y31mb3IoYSYmdi5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoZ1t0XSxnW2VdKX0pLHMmJm0uZm9yRWFjaChmdW5jdGlvbih0LGUpe3Quc29ydChmdW5jdGlvbih0LHIpe3JldHVybiBzKGlbZV1bdF0saVtlXVtyXSl9KX0pLHQ9KFZhLXUqbykvdCxjPTAsZj0tMTsrK2Y8bzspe2ZvcihoPWMsZD0tMTsrK2Q8bzspe3ZhciB5PXZbZl0sYj1tW3ldW2RdLHg9aVt5XVtiXSxfPWMsdz1jKz14KnQ7cFt5KyItIitiXT17aW5kZXg6eSxzdWJpbmRleDpiLHN0YXJ0QW5nbGU6XyxlbmRBbmdsZTp3LHZhbHVlOnh9fW5beV09e2luZGV4Onksc3RhcnRBbmdsZTpoLGVuZEFuZ2xlOmMsdmFsdWU6Z1t5XX0sYys9dX1mb3IoZj0tMTsrK2Y8bzspZm9yKGQ9Zi0xOysrZDxvOyl7dmFyIEE9cFtmKyItIitkXSxrPXBbZCsiLSIrZl07KEEudmFsdWV8fGsudmFsdWUpJiZyLnB1c2goQS52YWx1ZTxrLnZhbHVlP3tzb3VyY2U6ayx0YXJnZXQ6QX06e3NvdXJjZTpBLHRhcmdldDprfSl9bCYmZSgpfWZ1bmN0aW9uIGUoKXtyLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gbCgodC5zb3VyY2UudmFsdWUrdC50YXJnZXQudmFsdWUpLzIsKGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlKS8yKX0pfXZhciByLG4saSxvLGEscyxsLGM9e30sdT0wO3JldHVybiBjLm1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0oaT10KSYmaS5sZW5ndGgscj1uPW51bGwsYyk6aX0sYy5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQscj1uPW51bGwsYyk6dX0sYy5zb3J0R3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQscj1uPW51bGwsYyk6YX0sYy5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQscj1udWxsLGMpOnN9LGMuc29ydENob3Jkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LHImJmUoKSxjKTpsfSxjLmNob3Jkcz1mdW5jdGlvbigpe3JldHVybiByfHx0KCkscn0sYy5ncm91cHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnx8dCgpLG59LGN9LHVhLmxheW91dC5mb3JjZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe2lmKGUucG9pbnQhPT10KXt2YXIgbz1lLmN4LXQueCxhPWUuY3ktdC55LHM9aS1yLGw9bypvK2EqYTtpZihsPnMqcy9tKXtpZihnPmwpe3ZhciBjPWUuY2hhcmdlL2w7dC5weC09bypjLHQucHktPWEqY31yZXR1cm4hMH1pZihlLnBvaW50JiZsJiZnPmwpe3ZhciBjPWUucG9pbnRDaGFyZ2UvbDt0LnB4LT1vKmMsdC5weS09YSpjfX1yZXR1cm4hZS5jaGFyZ2V9fWZ1bmN0aW9uIGUodCl7dC5weD11YS5ldmVudC54LHQucHk9dWEuZXZlbnQueSxsLnJlc3VtZSgpfXZhciByLG4saSxvLGEscyxsPXt9LGM9dWEuZGlzcGF0Y2goInN0YXJ0IiwidGljayIsImVuZCIpLHU9WzEsMV0saD0uOSxmPXhsLGQ9X2wscD0tMzAsZz13bCx2PS4xLG09LjY0LHk9W10sYj1bXTtyZXR1cm4gbC50aWNrPWZ1bmN0aW9uKCl7aWYoKGkqPS45OSk8LjAwNSlyZXR1cm4gcj1udWxsLGMuZW5kKHt0eXBlOiJlbmQiLGFscGhhOmk9MH0pLCEwO3ZhciBlLG4sbCxmLGQsZyxtLHgsXyx3PXkubGVuZ3RoLEE9Yi5sZW5ndGg7Zm9yKG49MDtBPm47KytuKWw9YltuXSxmPWwuc291cmNlLGQ9bC50YXJnZXQseD1kLngtZi54LF89ZC55LWYueSwoZz14KngrXypfKSYmKGc9aSphW25dKigoZz1NYXRoLnNxcnQoZykpLW9bbl0pL2cseCo9ZyxfKj1nLGQueC09eCoobT1mLndlaWdodCtkLndlaWdodD9mLndlaWdodC8oZi53ZWlnaHQrZC53ZWlnaHQpOi41KSxkLnktPV8qbSxmLngrPXgqKG09MS1tKSxmLnkrPV8qbSk7aWYoKG09aSp2KSYmKHg9dVswXS8yLF89dVsxXS8yLG49LTEsbSkpZm9yKDsrK248dzspbD15W25dLGwueCs9KHgtbC54KSptLGwueSs9KF8tbC55KSptO2lmKHApZm9yKG9pKGU9dWEuZ2VvbS5xdWFkdHJlZSh5KSxpLHMpLG49LTE7KytuPHc7KShsPXlbbl0pLmZpeGVkfHxlLnZpc2l0KHQobCkpO2ZvcihuPS0xOysrbjx3OylsPXlbbl0sbC5maXhlZD8obC54PWwucHgsbC55PWwucHkpOihsLngtPShsLnB4LShsLnB4PWwueCkpKmgsbC55LT0obC5weS0obC5weT1sLnkpKSpoKTtjLnRpY2soe3R5cGU6InRpY2siLGFscGhhOml9KX0sbC5ub2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT10LGwpOnl9LGwubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9dCxsKTpifSxsLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxsKTp1fSxsLmxpbmtEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Oit0LGwpOmZ9LGwuZGlzdGFuY2U9bC5saW5rRGlzdGFuY2UsbC5saW5rU3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDordCxsKTpkfSxsLmZyaWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LGwpOmh9LGwuY2hhcmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6K3QsbCk6cH0sbC5jaGFyZ2VEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10KnQsbCk6TWF0aC5zcXJ0KGcpfSxsLmdyYXZpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9K3QsbCk6dn0sbC50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT10KnQsbCk6TWF0aC5zcXJ0KG0pfSxsLmFscGhhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSt0LGk/dD4wP2k9dDooci5jPW51bGwsci50PU5hTixyPW51bGwsYy5lbmQoe3R5cGU6ImVuZCIsYWxwaGE6aT0wfSkpOnQ+MCYmKGMuc3RhcnQoe3R5cGU6InN0YXJ0IixhbHBoYTppPXR9KSxyPVJ0KGwudGljaykpLGwpOml9LGwuc3RhcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7aWYoIXIpe2ZvcihyPW5ldyBBcnJheShpKSxsPTA7aT5sOysrbClyW2xdPVtdO2ZvcihsPTA7Yz5sOysrbCl7dmFyIG89YltsXTtyW28uc291cmNlLmluZGV4XS5wdXNoKG8udGFyZ2V0KSxyW28udGFyZ2V0LmluZGV4XS5wdXNoKG8uc291cmNlKX19Zm9yKHZhciBhLHM9cltlXSxsPS0xLHU9cy5sZW5ndGg7KytsPHU7KWlmKCFpc05hTihhPXNbbF1bdF0pKXJldHVybiBhO3JldHVybiBNYXRoLnJhbmRvbSgpKm59dmFyIGUscixuLGk9eS5sZW5ndGgsYz1iLmxlbmd0aCxoPXVbMF0sZz11WzFdO2ZvcihlPTA7aT5lOysrZSkobj15W2VdKS5pbmRleD1lLG4ud2VpZ2h0PTA7Zm9yKGU9MDtjPmU7KytlKW49YltlXSwibnVtYmVyIj09dHlwZW9mIG4uc291cmNlJiYobi5zb3VyY2U9eVtuLnNvdXJjZV0pLCJudW1iZXIiPT10eXBlb2Ygbi50YXJnZXQmJihuLnRhcmdldD15W24udGFyZ2V0XSksKytuLnNvdXJjZS53ZWlnaHQsKytuLnRhcmdldC53ZWlnaHQ7Zm9yKGU9MDtpPmU7KytlKW49eVtlXSxpc05hTihuLngpJiYobi54PXQoIngiLGgpKSxpc05hTihuLnkpJiYobi55PXQoInkiLGcpKSxpc05hTihuLnB4KSYmKG4ucHg9bi54KSxpc05hTihuLnB5KSYmKG4ucHk9bi55KTtpZihvPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBmKWZvcihlPTA7Yz5lOysrZSlvW2VdPStmLmNhbGwodGhpcyxiW2VdLGUpO2Vsc2UgZm9yKGU9MDtjPmU7KytlKW9bZV09ZjtpZihhPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBkKWZvcihlPTA7Yz5lOysrZSlhW2VdPStkLmNhbGwodGhpcyxiW2VdLGUpO2Vsc2UgZm9yKGU9MDtjPmU7KytlKWFbZV09ZDtpZihzPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBwKWZvcihlPTA7aT5lOysrZSlzW2VdPStwLmNhbGwodGhpcyx5W2VdLGUpO2Vsc2UgZm9yKGU9MDtpPmU7KytlKXNbZV09cDtyZXR1cm4gbC5yZXN1bWUoKX0sbC5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gbC5hbHBoYSguMSl9LGwuc3RvcD1mdW5jdGlvbigpe3JldHVybiBsLmFscGhhKDApfSxsLmRyYWc9ZnVuY3Rpb24oKXtyZXR1cm4gbnx8KG49dWEuYmVoYXZpb3IuZHJhZygpLm9yaWdpbih4KS5vbigiZHJhZ3N0YXJ0LmZvcmNlIixlaSkub24oImRyYWcuZm9yY2UiLGUpLm9uKCJkcmFnZW5kLmZvcmNlIixyaSkpLGFyZ3VtZW50cy5sZW5ndGg/dm9pZCB0aGlzLm9uKCJtb3VzZW92ZXIuZm9yY2UiLG5pKS5vbigibW91c2VvdXQuZm9yY2UiLGlpKS5jYWxsKG4pOm59LHVhLnJlYmluZChsLGMsIm9uIil9O3ZhciB4bD0yMCxfbD0xLHdsPTEvMDt1YS5sYXlvdXQuaGllcmFyY2h5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChpKXt2YXIgbyxhPVtpXSxzPVtdO2ZvcihpLmRlcHRoPTA7bnVsbCE9KG89YS5wb3AoKSk7KWlmKHMucHVzaChvKSwoYz1yLmNhbGwodCxvLG8uZGVwdGgpKSYmKGw9Yy5sZW5ndGgpKXtmb3IodmFyIGwsYyx1Oy0tbD49MDspYS5wdXNoKHU9Y1tsXSksdS5wYXJlbnQ9byx1LmRlcHRoPW8uZGVwdGgrMTtuJiYoby52YWx1ZT0wKSxvLmNoaWxkcmVuPWN9ZWxzZSBuJiYoby52YWx1ZT0rbi5jYWxsKHQsbyxvLmRlcHRoKXx8MCksZGVsZXRlIG8uY2hpbGRyZW47cmV0dXJuIGxpKGksZnVuY3Rpb24odCl7dmFyIHIsaTtlJiYocj10LmNoaWxkcmVuKSYmci5zb3J0KGUpLG4mJihpPXQucGFyZW50KSYmKGkudmFsdWUrPXQudmFsdWUpfSksc312YXIgZT1oaSxyPWNpLG49dWk7cmV0dXJuIHQuc29ydD1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yLHQpOmV9LHQuY2hpbGRyZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0KTpyfSx0LnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsdCk6bn0sdC5yZXZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBuJiYoc2koZSxmdW5jdGlvbih0KXt0LmNoaWxkcmVuJiYodC52YWx1ZT0wKX0pLGxpKGUsZnVuY3Rpb24oZSl7dmFyIHI7ZS5jaGlsZHJlbnx8KGUudmFsdWU9K24uY2FsbCh0LGUsZS5kZXB0aCl8fDApLChyPWUucGFyZW50KSYmKHIudmFsdWUrPWUudmFsdWUpfSkpLGV9LHR9LHVhLmxheW91dC5wYXJ0aXRpb249ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixuLGkpe3ZhciBvPWUuY2hpbGRyZW47aWYoZS54PXIsZS55PWUuZGVwdGgqaSxlLmR4PW4sZS5keT1pLG8mJihhPW8ubGVuZ3RoKSl7dmFyIGEscyxsLGM9LTE7Zm9yKG49ZS52YWx1ZT9uL2UudmFsdWU6MDsrK2M8YTspdChzPW9bY10scixsPXMudmFsdWUqbixpKSxyKz1sfX1mdW5jdGlvbiBlKHQpe3ZhciByPXQuY2hpbGRyZW4sbj0wO2lmKHImJihpPXIubGVuZ3RoKSlmb3IodmFyIGksbz0tMTsrK288aTspbj1NYXRoLm1heChuLGUocltvXSkpO3JldHVybiAxK259ZnVuY3Rpb24gcihyLG8pe3ZhciBhPW4uY2FsbCh0aGlzLHIsbyk7cmV0dXJuIHQoYVswXSwwLGlbMF0saVsxXS9lKGFbMF0pKSxhfXZhciBuPXVhLmxheW91dC5oaWVyYXJjaHkoKSxpPVsxLDFdO3JldHVybiByLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxyKTppfSxhaShyLG4pfSx1YS5sYXlvdXQucGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChhKXt2YXIgcyxsPWEubGVuZ3RoLGM9YS5tYXAoZnVuY3Rpb24ocixuKXtyZXR1cm4rZS5jYWxsKHQscixuKX0pLHU9KygiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuKSxoPSgiZnVuY3Rpb24iPT10eXBlb2YgaT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppKS11LGY9TWF0aC5taW4oTWF0aC5hYnMoaCkvbCwrKCJmdW5jdGlvbiI9PXR5cGVvZiBvP28uYXBwbHkodGhpcyxhcmd1bWVudHMpOm8pKSxkPWYqKDA+aD8tMToxKSxwPXVhLnN1bShjKSxnPXA/KGgtbCpkKS9wOjAsdj11YS5yYW5nZShsKSxtPVtdO3JldHVybiBudWxsIT1yJiZ2LnNvcnQocj09PUFsP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGNbZV0tY1t0XX06ZnVuY3Rpb24odCxlKXtyZXR1cm4gcihhW3RdLGFbZV0pfSksdi5mb3JFYWNoKGZ1bmN0aW9uKHQpe21bdF09e2RhdGE6YVt0XSx2YWx1ZTpzPWNbdF0sc3RhcnRBbmdsZTp1LGVuZEFuZ2xlOnUrPXMqZytkLHBhZEFuZ2xlOmZ9fSksbX12YXIgZT1OdW1iZXIscj1BbCxuPTAsaT1WYSxvPTA7cmV0dXJuIHQudmFsdWU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cix0KTplfSx0LnNvcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0KTpyfSx0LnN0YXJ0QW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSx0KTpufSx0LmVuZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsdCk6aX0sdC5wYWRBbmdsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLHQpOm99LHR9O3ZhciBBbD17fTt1YS5sYXlvdXQuc3RhY2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHMsbCl7aWYoIShmPXMubGVuZ3RoKSlyZXR1cm4gczt2YXIgYz1zLm1hcChmdW5jdGlvbihyLG4pe3JldHVybiBlLmNhbGwodCxyLG4pfSksdT1jLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSxyKXtyZXR1cm5bby5jYWxsKHQsZSxyKSxhLmNhbGwodCxlLHIpXX0pfSksaD1yLmNhbGwodCx1LGwpO2M9dWEucGVybXV0ZShjLGgpLHU9dWEucGVybXV0ZSh1LGgpO3ZhciBmLGQscCxnLHY9bi5jYWxsKHQsdSxsKSxtPWNbMF0ubGVuZ3RoO2ZvcihwPTA7bT5wOysrcClmb3IoaS5jYWxsKHQsY1swXVtwXSxnPXZbcF0sdVswXVtwXVsxXSksZD0xO2Y+ZDsrK2QpaS5jYWxsKHQsY1tkXVtwXSxnKz11W2QtMV1bcF1bMV0sdVtkXVtwXVsxXSk7cmV0dXJuIHN9dmFyIGU9eCxyPXZpLG49bWksaT1naSxvPWRpLGE9cGk7cmV0dXJuIHQudmFsdWVzPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXIsdCk6ZX0sdC5vcmRlcj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmtsLmdldChlKXx8dmksdCk6cn0sdC5vZmZzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpNbC5nZXQoZSl8fG1pLHQpOm59LHQueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLHQpOm99LHQueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLHQpOmF9LHQub3V0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsdCk6aX0sdH07dmFyIGtsPXVhLm1hcCh7Imluc2lkZS1vdXQiOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbj10Lmxlbmd0aCxpPXQubWFwKHlpKSxvPXQubWFwKGJpKSxhPXVhLnJhbmdlKG4pLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gaVt0XS1pW2VdfSkscz0wLGw9MCxjPVtdLHU9W107Zm9yKGU9MDtuPmU7KytlKXI9YVtlXSxsPnM/KHMrPW9bcl0sYy5wdXNoKHIpKToobCs9b1tyXSx1LnB1c2gocikpO3JldHVybiB1LnJldmVyc2UoKS5jb25jYXQoYyl9LHJldmVyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHVhLnJhbmdlKHQubGVuZ3RoKS5yZXZlcnNlKCl9LCJkZWZhdWx0Ijp2aX0pLE1sPXVhLm1hcCh7c2lsaG91ZXR0ZTpmdW5jdGlvbih0KXt2YXIgZSxyLG4saT10Lmxlbmd0aCxvPXRbMF0ubGVuZ3RoLGE9W10scz0wLGw9W107Zm9yKHI9MDtvPnI7KytyKXtmb3IoZT0wLG49MDtpPmU7ZSsrKW4rPXRbZV1bcl1bMV07bj5zJiYocz1uKSxhLnB1c2gobil9Zm9yKHI9MDtvPnI7KytyKWxbcl09KHMtYVtyXSkvMjtyZXR1cm4gbH0sd2lnZ2xlOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG8sYSxzLGwsYyx1PXQubGVuZ3RoLGg9dFswXSxmPWgubGVuZ3RoLGQ9W107Zm9yKGRbMF09bD1jPTAscj0xO2Y+cjsrK3Ipe2ZvcihlPTAsaT0wO3U+ZTsrK2UpaSs9dFtlXVtyXVsxXTtmb3IoZT0wLG89MCxzPWhbcl1bMF0taFtyLTFdWzBdO3U+ZTsrK2Upe2ZvcihuPTAsYT0odFtlXVtyXVsxXS10W2VdW3ItMV1bMV0pLygyKnMpO2U+bjsrK24pYSs9KHRbbl1bcl1bMV0tdFtuXVtyLTFdWzFdKS9zO28rPWEqdFtlXVtyXVsxXX1kW3JdPWwtPWk/by9pKnM6MCxjPmwmJihjPWwpfWZvcihyPTA7Zj5yOysrcilkW3JdLT1jO3JldHVybiBkfSxleHBhbmQ6ZnVuY3Rpb24odCl7dmFyIGUscixuLGk9dC5sZW5ndGgsbz10WzBdLmxlbmd0aCxhPTEvaSxzPVtdO2ZvcihyPTA7bz5yOysrcil7Zm9yKGU9MCxuPTA7aT5lO2UrKyluKz10W2VdW3JdWzFdO2lmKG4pZm9yKGU9MDtpPmU7ZSsrKXRbZV1bcl1bMV0vPW47ZWxzZSBmb3IoZT0wO2k+ZTtlKyspdFtlXVtyXVsxXT1hfWZvcihyPTA7bz5yOysrcilzW3JdPTA7cmV0dXJuIHN9LHplcm86bWl9KTt1YS5sYXlvdXQuaGlzdG9ncmFtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG8pe2Zvcih2YXIgYSxzLGw9W10sYz10Lm1hcChyLHRoaXMpLHU9bi5jYWxsKHRoaXMsYyxvKSxoPWkuY2FsbCh0aGlzLHUsYyxvKSxvPS0xLGY9Yy5sZW5ndGgsZD1oLmxlbmd0aC0xLHA9ZT8xOjEvZjsrK288ZDspYT1sW29dPVtdLGEuZHg9aFtvKzFdLShhLng9aFtvXSksYS55PTA7aWYoZD4wKWZvcihvPS0xOysrbzxmOylzPWNbb10scz49dVswXSYmczw9dVsxXSYmKGE9bFt1YS5iaXNlY3QoaCxzLDEsZCktMV0sYS55Kz1wLGEucHVzaCh0W29dKSk7cmV0dXJuIGx9dmFyIGU9ITAscj1OdW1iZXIsbj1BaSxpPV9pO3JldHVybiB0LnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWUsdCk6cn0sdC5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1MdChlKSx0KTpufSx0LmJpbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9Im51bWJlciI9PXR5cGVvZiBlP2Z1bmN0aW9uKHQpe3JldHVybiB3aSh0LGUpfTpMdChlKSx0KTppfSx0LmZyZXF1ZW5jeT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXIsdCk6ZX0sdH0sdWEubGF5b3V0LnBhY2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbyl7dmFyIGE9ci5jYWxsKHRoaXMsdCxvKSxzPWFbMF0sbD1pWzBdLGM9aVsxXSx1PW51bGw9PWU/TWF0aC5zcXJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX07aWYocy54PXMueT0wLGxpKHMsZnVuY3Rpb24odCl7dC5yPSt1KHQudmFsdWUpfSksbGkocyxMaSksbil7dmFyIGg9biooZT8xOk1hdGgubWF4KDIqcy5yL2wsMipzLnIvYykpLzI7bGkocyxmdW5jdGlvbih0KXt0LnIrPWh9KSxsaShzLExpKSxsaShzLGZ1bmN0aW9uKHQpe3Quci09aH0pfXJldHVybiBQaShzLGwvMixjLzIsZT8xOjEvTWF0aC5tYXgoMipzLnIvbCwyKnMuci9jKSksYX12YXIgZSxyPXVhLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KGtpKSxuPTAsaT1bMSwxXTtyZXR1cm4gdC5zaXplPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsdCk6aX0sdC5yYWRpdXM9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09cnx8ImZ1bmN0aW9uIj09dHlwZW9mIHI/cjorcix0KTplfSx0LnBhZGRpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2UsdCk6bn0sYWkodCxyKX0sdWEubGF5b3V0LnRyZWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsaSl7dmFyIHU9YS5jYWxsKHRoaXMsdCxpKSxoPXVbMF0sZj1lKGgpO2lmKGxpKGYsciksZi5wYXJlbnQubT0tZi56LHNpKGYsbiksYylzaShoLG8pO2Vsc2V7dmFyIGQ9aCxwPWgsZz1oO3NpKGgsZnVuY3Rpb24odCl7dC54PGQueCYmKGQ9dCksdC54PnAueCYmKHA9dCksdC5kZXB0aD5nLmRlcHRoJiYoZz10KX0pO3ZhciB2PXMoZCxwKS8yLWQueCxtPWxbMF0vKHAueCtzKHAsZCkvMit2KSx5PWxbMV0vKGcuZGVwdGh8fDEpO3NpKGgsZnVuY3Rpb24odCl7dC54PSh0LngrdikqbSx0Lnk9dC5kZXB0aCp5fSl9cmV0dXJuIHV9ZnVuY3Rpb24gZSh0KXtmb3IodmFyIGUscj17QTpudWxsLGNoaWxkcmVuOlt0XX0sbj1bcl07bnVsbCE9KGU9bi5wb3AoKSk7KWZvcih2YXIgaSxvPWUuY2hpbGRyZW4sYT0wLHM9by5sZW5ndGg7cz5hOysrYSluLnB1c2goKG9bYV09aT17XzpvW2FdLHBhcmVudDplLGNoaWxkcmVuOihpPW9bYV0uY2hpbGRyZW4pJiZpLnNsaWNlKCl8fFtdLEE6bnVsbCxhOm51bGwsejowLG06MCxjOjAsczowLHQ6bnVsbCxpOmF9KS5hPWkpO3JldHVybiByLmNoaWxkcmVuWzBdfWZ1bmN0aW9uIHIodCl7dmFyIGU9dC5jaGlsZHJlbixyPXQucGFyZW50LmNoaWxkcmVuLG49dC5pP3JbdC5pLTFdOm51bGw7aWYoZS5sZW5ndGgpe2ppKHQpO3ZhciBvPShlWzBdLnorZVtlLmxlbmd0aC0xXS56KS8yO24/KHQuej1uLnorcyh0Ll8sbi5fKSx0Lm09dC56LW8pOnQuej1vfWVsc2UgbiYmKHQuej1uLnorcyh0Ll8sbi5fKSk7dC5wYXJlbnQuQT1pKHQsbix0LnBhcmVudC5BfHxyWzBdKX1mdW5jdGlvbiBuKHQpe3QuXy54PXQueit0LnBhcmVudC5tLHQubSs9dC5wYXJlbnQubX1mdW5jdGlvbiBpKHQsZSxyKXtpZihlKXtmb3IodmFyIG4saT10LG89dCxhPWUsbD1pLnBhcmVudC5jaGlsZHJlblswXSxjPWkubSx1PW8ubSxoPWEubSxmPWwubTthPUlpKGEpLGk9T2koaSksYSYmaTspbD1PaShsKSxvPUlpKG8pLG8uYT10LG49YS56K2gtaS56LWMrcyhhLl8saS5fKSxuPjAmJihOaShGaShhLHQsciksdCxuKSxjKz1uLHUrPW4pLGgrPWEubSxjKz1pLm0sZis9bC5tLHUrPW8ubTthJiYhSWkobykmJihvLnQ9YSxvLm0rPWgtdSksaSYmIU9pKGwpJiYobC50PWksbC5tKz1jLWYscj10KX1yZXR1cm4gcn1mdW5jdGlvbiBvKHQpe3QueCo9bFswXSx0Lnk9dC5kZXB0aCpsWzFdfXZhciBhPXVhLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVlKG51bGwpLHM9UmksbD1bMSwxXSxjPW51bGw7cmV0dXJuIHQuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLHQpOnN9LHQuc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1udWxsPT0obD1lKT9vOm51bGwsdCk6Yz9udWxsOmx9LHQubm9kZVNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9bnVsbD09KGw9ZSk/bnVsbDpvLHQpOmM/bDpudWxsfSxhaSh0LGEpfSx1YS5sYXlvdXQuY2x1c3Rlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxvKXt2YXIgYSxzPWUuY2FsbCh0aGlzLHQsbyksbD1zWzBdLGM9MDtsaShsLGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hpbGRyZW47ZSYmZS5sZW5ndGg/KHQueD1CaShlKSx0Lnk9RGkoZSkpOih0Lng9YT9jKz1yKHQsYSk6MCx0Lnk9MCxhPXQpfSk7dmFyIHU9VWkobCksaD1WaShsKSxmPXUueC1yKHUsaCkvMixkPWgueCtyKGgsdSkvMjtyZXR1cm4gbGkobCxpP2Z1bmN0aW9uKHQpe3QueD0odC54LWwueCkqblswXSx0Lnk9KGwueS10LnkpKm5bMV19OmZ1bmN0aW9uKHQpe3QueD0odC54LWYpLyhkLWYpKm5bMF0sdC55PSgxLShsLnk/dC55L2wueToxKSkqblsxXX0pLHN9dmFyIGU9dWEubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobnVsbCkudmFsdWUobnVsbCkscj1SaSxuPVsxLDFdLGk9ITE7cmV0dXJuIHQuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLHQpOnJ9LHQuc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT0obj1lKSx0KTppP251bGw6bn0sdC5ub2RlU2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsIT0obj1lKSx0KTppP246bnVsbH0sYWkodCxlKX0sdWEubGF5b3V0LnRyZWVtYXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByLG4saT0tMSxvPXQubGVuZ3RoOysraTxvOyluPShyPXRbaV0pLnZhbHVlKigwPmU/MDplKSxyLmFyZWE9aXNOYU4obil8fDA+PW4/MDpufWZ1bmN0aW9uIGUocil7dmFyIG89ci5jaGlsZHJlbjtpZihvJiZvLmxlbmd0aCl7dmFyIGEscyxsLGM9aChyKSx1PVtdLGY9by5zbGljZSgpLHA9MS8wLGc9InNsaWNlIj09PWQ/Yy5keDoiZGljZSI9PT1kP2MuZHk6InNsaWNlLWRpY2UiPT09ZD8xJnIuZGVwdGg/Yy5keTpjLmR4Ok1hdGgubWluKGMuZHgsYy5keSk7Zm9yKHQoZixjLmR4KmMuZHkvci52YWx1ZSksdS5hcmVhPTA7KGw9Zi5sZW5ndGgpPjA7KXUucHVzaChhPWZbbC0xXSksdS5hcmVhKz1hLmFyZWEsInNxdWFyaWZ5IiE9PWR8fChzPW4odSxnKSk8PXA/KGYucG9wKCkscD1zKToodS5hcmVhLT11LnBvcCgpLmFyZWEsaSh1LGcsYywhMSksZz1NYXRoLm1pbihjLmR4LGMuZHkpLHUubGVuZ3RoPXUuYXJlYT0wLHA9MS8wKTt1Lmxlbmd0aCYmKGkodSxnLGMsITApLHUubGVuZ3RoPXUuYXJlYT0wKSxvLmZvckVhY2goZSl9fWZ1bmN0aW9uIHIoZSl7dmFyIG49ZS5jaGlsZHJlbjtpZihuJiZuLmxlbmd0aCl7dmFyIG8sYT1oKGUpLHM9bi5zbGljZSgpLGw9W107Zm9yKHQocyxhLmR4KmEuZHkvZS52YWx1ZSksbC5hcmVhPTA7bz1zLnBvcCgpOylsLnB1c2gobyksbC5hcmVhKz1vLmFyZWEsbnVsbCE9by56JiYoaShsLG8uej9hLmR4OmEuZHksYSwhcy5sZW5ndGgpLGwubGVuZ3RoPWwuYXJlYT0wKTtuLmZvckVhY2gocil9fWZ1bmN0aW9uIG4odCxlKXtmb3IodmFyIHIsbj10LmFyZWEsaT0wLG89MS8wLGE9LTEscz10Lmxlbmd0aDsrK2E8czspKHI9dFthXS5hcmVhKSYmKG8+ciYmKG89cikscj5pJiYoaT1yKSk7cmV0dXJuIG4qPW4sZSo9ZSxuP01hdGgubWF4KGUqaSpwL24sbi8oZSpvKnApKToxLzB9ZnVuY3Rpb24gaSh0LGUscixuKXt2YXIgaSxvPS0xLGE9dC5sZW5ndGgscz1yLngsYz1yLnksdT1lP2wodC5hcmVhL2UpOjA7aWYoZT09ci5keCl7Zm9yKChufHx1PnIuZHkpJiYodT1yLmR5KTsrK288YTspaT10W29dLGkueD1zLGkueT1jLGkuZHk9dSxzKz1pLmR4PU1hdGgubWluKHIueCtyLmR4LXMsdT9sKGkuYXJlYS91KTowKTtpLno9ITAsaS5keCs9ci54K3IuZHgtcyxyLnkrPXUsci5keS09dX1lbHNle2Zvcigobnx8dT5yLmR4KSYmKHU9ci5keCk7KytvPGE7KWk9dFtvXSxpLng9cyxpLnk9YyxpLmR4PXUsYys9aS5keT1NYXRoLm1pbihyLnkrci5keS1jLHU/bChpLmFyZWEvdSk6MCk7aS56PSExLGkuZHkrPXIueStyLmR5LWMsci54Kz11LHIuZHgtPXV9fWZ1bmN0aW9uIG8obil7dmFyIGk9YXx8cyhuKSxvPWlbMF07cmV0dXJuIG8ueD1vLnk9MCxvLnZhbHVlPyhvLmR4PWNbMF0sby5keT1jWzFdKTpvLmR4PW8uZHk9MCxhJiZzLnJldmFsdWUobyksdChbb10sby5keCpvLmR5L28udmFsdWUpLChhP3I6ZSkobyksZiYmKGE9aSksaX12YXIgYSxzPXVhLmxheW91dC5oaWVyYXJjaHkoKSxsPU1hdGgucm91bmQsYz1bMSwxXSx1PW51bGwsaD1xaSxmPSExLGQ9InNxdWFyaWZ5IixwPS41KigxK01hdGguc3FydCg1KSk7cmV0dXJuIG8uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LG8pOmN9LG8ucGFkZGluZz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciByPXQuY2FsbChvLGUsZS5kZXB0aCk7cmV0dXJuIG51bGw9PXI/cWkoZSk6SGkoZSwibnVtYmVyIj09dHlwZW9mIHI/W3IscixyLHJdOnIpfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIEhpKGUsdCl9aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHU7dmFyIG47cmV0dXJuIGg9bnVsbD09KHU9dCk/cWk6ImZ1bmN0aW9uIj09KG49dHlwZW9mIHQpP2U6Im51bWJlciI9PT1uPyh0PVt0LHQsdCx0XSxyKTpyLG99LG8ucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dD9NYXRoLnJvdW5kOk51bWJlcixvKTpsIT1OdW1iZXJ9LG8uc3RpY2t5PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXQsYT1udWxsLG8pOmZ9LG8ucmF0aW89ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9dCxvKTpwfSxvLm1vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9dCsiIixvKTpkfSxhaShvLHMpfSx1YS5yYW5kb209e25vcm1hbDpmdW5jdGlvbih0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIDI+ciYmKGU9MSksMT5yJiYodD0wKSxmdW5jdGlvbigpe3ZhciByLG4saTtkbyByPTIqTWF0aC5yYW5kb20oKS0xLG49MipNYXRoLnJhbmRvbSgpLTEsaT1yKnIrbipuO3doaWxlKCFpfHxpPjEpO3JldHVybiB0K2UqcipNYXRoLnNxcnQoLTIqTWF0aC5sb2coaSkvaSl9fSxsb2dOb3JtYWw6ZnVuY3Rpb24oKXt2YXIgdD11YS5yYW5kb20ubm9ybWFsLmFwcGx5KHVhLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKHQoKSl9fSxiYXRlczpmdW5jdGlvbih0KXt2YXIgZT11YS5yYW5kb20uaXJ3aW5IYWxsKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKCkvdH19LGlyd2luSGFsbDpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxyPTA7dD5yO3IrKyllKz1NYXRoLnJhbmRvbSgpO3JldHVybiBlfX19LHVhLnNjYWxlPXt9O3ZhciBUbD17Zmxvb3I6eCxjZWlsOnh9O3VhLnNjYWxlLmxpbmVhcj1mdW5jdGlvbigpe3JldHVybiBLaShbMCwxXSxbMCwxXSxfbiwhMSl9O3ZhciBFbD17czoxLGc6MSxwOjEscjoxLGU6MX07dWEuc2NhbGUubG9nPWZ1bmN0aW9uKCl7cmV0dXJuIG9vKHVhLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCwxXSksMTAsITAsWzEsMTBdKX07dmFyIExsPXVhLmZvcm1hdCgiLjBlIiksU2w9e2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmNlaWwoLXQpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmZsb29yKC10KX19O3VhLnNjYWxlLnBvdz1mdW5jdGlvbigpe3JldHVybiBhbyh1YS5zY2FsZS5saW5lYXIoKSwxLFswLDFdKX0sdWEuc2NhbGUuc3FydD1mdW5jdGlvbigpe3JldHVybiB1YS5zY2FsZS5wb3coKS5leHBvbmVudCguNSl9LHVhLnNjYWxlLm9yZGluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gbG8oW10se3Q6InJhbmdlIixhOltbXV19KX0sdWEuc2NhbGUuY2F0ZWdvcnkxMD1mdW5jdGlvbigpe3JldHVybiB1YS5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoQ2wpfSx1YS5zY2FsZS5jYXRlZ29yeTIwPWZ1bmN0aW9uKCl7cmV0dXJuIHVhLnNjYWxlLm9yZGluYWwoKS5yYW5nZShQbCl9LHVhLnNjYWxlLmNhdGVnb3J5MjBiPWZ1bmN0aW9uKCl7cmV0dXJuIHVhLnNjYWxlLm9yZGluYWwoKS5yYW5nZSh6bCl9LHVhLnNjYWxlLmNhdGVnb3J5MjBjPWZ1bmN0aW9uKCl7cmV0dXJuIHVhLnNjYWxlLm9yZGluYWwoKS5yYW5nZShSbCl9O3ZhciBDbD1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0NTg4LDE0MDM0NzI4LDk3MjU4ODUsOTE5NzEzMSwxNDkwNzMzMCw4MzU1NzExLDEyMzY5MTg2LDE1NTYxNzVdLm1hcChfdCksUGw9WzIwNjIyNjAsMTE0NTQ0NDAsMTY3NDQyMDYsMTY3NTk2NzIsMjkyNDU4OCwxMDAxODY5OCwxNDAzNDcyOCwxNjc1MDc0Miw5NzI1ODg1LDEyOTU1ODYxLDkxOTcxMzEsMTI4ODUxNDAsMTQ5MDczMzAsMTYyMzQxOTQsODM1NTcxMSwxMzA5MjgwNywxMjM2OTE4NiwxNDQwODU4OSwxNTU2MTc1LDEwNDEwNzI1XS5tYXAoX3QpLHpsPVszNzUwNzc3LDUzOTU2MTksNzA0MDcxOSwxMDI2NDI4Niw2NTE5MDk3LDkyMTY1OTQsMTE5MTUxMTUsMTM1NTY2MzYsOTIwMjk5MywxMjQyNjgwOSwxNTE4NjUxNCwxNTE5MDkzMiw4NjY2MTY5LDExMzU2NDkwLDE0MDQ5NjQzLDE1MTc3MzcyLDgwNzc2ODMsMTA4MzQzMjQsMTM1Mjg1MDksMTQ1ODk2NTRdLm1hcChfdCksUmw9WzMyNDQ3MzMsNzA1NzExMCwxMDQwNjYyNSwxMzAzMjQzMSwxNTA5NTA1MywxNjYxNjc2NCwxNjYyNTI1OSwxNjYzNDAxOCwzMjUzMDc2LDc2NTI0NzAsMTA2MDcwMDMsMTMxMDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2OTM3MiwxNDM0Mjg5MSw2NTEzNTA3LDk4Njg5NTAsMTI0MzQ4NzcsMTQyNzcwODFdLm1hcChfdCk7dWEuc2NhbGUucXVhbnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gY28oW10sW10pfSx1YS5zY2FsZS5xdWFudGl6ZT1mdW5jdGlvbigpe3JldHVybiB1bygwLDEsWzAsMV0pfSx1YS5zY2FsZS50aHJlc2hvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gaG8oWy41XSxbMCwxXSl9LHVhLnNjYWxlLmlkZW50aXR5PWZ1bmN0aW9uKCl7cmV0dXJuIGZvKFswLDFdKX0sdWEuc3ZnPXt9LHVhLnN2Zy5hcmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQ9TWF0aC5tYXgoMCwrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGM9TWF0aC5tYXgoMCwrbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHU9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyktSGEsaD1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1IYSxmPU1hdGguYWJzKGgtdSksZD11Pmg/MDoxO2lmKHQ+YyYmKHA9YyxjPXQsdD1wKSxmPj1xYSlyZXR1cm4gZShjLGQpKyh0P2UodCwxLWQpOiIiKSsiWiI7dmFyIHAsZyx2LG0seSxiLHgsXyx3LEEsayxNLFQ9MCxFPTAsTD1bXTtpZigobT0oK2wuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwKS8yKSYmKHY9bz09PU9sP01hdGguc3FydCh0KnQrYypjKTorby5hcHBseSh0aGlzLGFyZ3VtZW50cyksZHx8KEUqPS0xKSxjJiYoRT1udCh2L2MqTWF0aC5zaW4obSkpKSx0JiYoVD1udCh2L3QqTWF0aC5zaW4obSkpKSksYyl7eT1jKk1hdGguY29zKHUrRSksYj1jKk1hdGguc2luKHUrRSkseD1jKk1hdGguY29zKGgtRSksXz1jKk1hdGguc2luKGgtRSk7dmFyIFM9TWF0aC5hYnMoaC11LTIqRSk8PVVhPzA6MTtpZihFJiZ4byh5LGIseCxfKT09PWReUyl7dmFyIEM9KHUraCkvMjt5PWMqTWF0aC5jb3MoQyksYj1jKk1hdGguc2luKEMpLHg9Xz1udWxsfX1lbHNlIHk9Yj0wO2lmKHQpe3c9dCpNYXRoLmNvcyhoLVQpLEE9dCpNYXRoLnNpbihoLVQpLGs9dCpNYXRoLmNvcyh1K1QpLE09dCpNYXRoLnNpbih1K1QpO3ZhciBQPU1hdGguYWJzKHUtaCsyKlQpPD1VYT8wOjE7aWYoVCYmeG8odyxBLGssTSk9PT0xLWReUCl7dmFyIHo9KHUraCkvMjt3PXQqTWF0aC5jb3MoeiksQT10Kk1hdGguc2luKHopLGs9TT1udWxsfX1lbHNlIHc9QT0wO2lmKGY+RGEmJihwPU1hdGgubWluKE1hdGguYWJzKGMtdCkvMiwraS5hcHBseSh0aGlzLGFyZ3VtZW50cykpKT4uMDAxKXtnPWM+dF5kPzA6MTt2YXIgUj1wLE89cDtpZihVYT5mKXt2YXIgST1udWxsPT1rP1t3LEFdOm51bGw9PXg/W3ksYl06SXIoW3ksYl0sW2ssTV0sW3gsX10sW3csQV0pLE49eS1JWzBdLGo9Yi1JWzFdLEY9eC1JWzBdLEQ9Xy1JWzFdLEI9MS9NYXRoLnNpbihNYXRoLmFjb3MoKE4qRitqKkQpLyhNYXRoLnNxcnQoTipOK2oqaikqTWF0aC5zcXJ0KEYqRitEKkQpKSkvMiksVT1NYXRoLnNxcnQoSVswXSpJWzBdK0lbMV0qSVsxXSk7Tz1NYXRoLm1pbihwLCh0LVUpLyhCLTEpKSxSPU1hdGgubWluKHAsKGMtVSkvKEIrMSkpfWlmKG51bGwhPXgpe3ZhciBWPV9vKG51bGw9PWs/W3csQV06W2ssTV0sW3ksYl0sYyxSLGQpLHE9X28oW3gsX10sW3csQV0sYyxSLGQpO3A9PT1SP0wucHVzaCgiTSIsVlswXSwiQSIsUiwiLCIsUiwiIDAgMCwiLGcsIiAiLFZbMV0sIkEiLGMsIiwiLGMsIiAwICIsMS1kXnhvKFZbMV1bMF0sVlsxXVsxXSxxWzFdWzBdLHFbMV1bMV0pLCIsIixkLCIgIixxWzFdLCJBIixSLCIsIixSLCIgMCAwLCIsZywiICIscVswXSk6TC5wdXNoKCJNIixWWzBdLCJBIixSLCIsIixSLCIgMCAxLCIsZywiICIscVswXSl9ZWxzZSBMLnB1c2goIk0iLHksIiwiLGIpO2lmKG51bGwhPWspe3ZhciBIPV9vKFt5LGJdLFtrLE1dLHQsLU8sZCksRz1fbyhbdyxBXSxudWxsPT14P1t5LGJdOlt4LF9dLHQsLU8sZCk7cD09PU8/TC5wdXNoKCJMIixHWzBdLCJBIixPLCIsIixPLCIgMCAwLCIsZywiICIsR1sxXSwiQSIsdCwiLCIsdCwiIDAgIixkXnhvKEdbMV1bMF0sR1sxXVsxXSxIWzFdWzBdLEhbMV1bMV0pLCIsIiwxLWQsIiAiLEhbMV0sIkEiLE8sIiwiLE8sIiAwIDAsIixnLCIgIixIWzBdKTpMLnB1c2goIkwiLEdbMF0sIkEiLE8sIiwiLE8sIiAwIDAsIixnLCIgIixIWzBdKX1lbHNlIEwucHVzaCgiTCIsdywiLCIsQSl9ZWxzZSBMLnB1c2goIk0iLHksIiwiLGIpLG51bGwhPXgmJkwucHVzaCgiQSIsYywiLCIsYywiIDAgIixTLCIsIixkLCIgIix4LCIsIixfKSxMLnB1c2goIkwiLHcsIiwiLEEpLG51bGwhPWsmJkwucHVzaCgiQSIsdCwiLCIsdCwiIDAgIixQLCIsIiwxLWQsIiAiLGssIiwiLE0pO3JldHVybiBMLnB1c2goIloiKSxMLmpvaW4oIiIpfWZ1bmN0aW9uIGUodCxlKXtyZXR1cm4iTTAsIit0KyJBIit0KyIsIit0KyIgMCAxLCIrZSsiIDAsIistdCsiQSIrdCsiLCIrdCsiIDAgMSwiK2UrIiAwLCIrdH12YXIgcj1nbyxuPXZvLGk9cG8sbz1PbCxhPW1vLHM9eW8sbD1ibzsKcmV0dXJuIHQuaW5uZXJSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9THQoZSksdCk6cn0sdC5vdXRlclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1MdChlKSx0KTpufSx0LmNvcm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1MdChlKSx0KTppfSx0LnBhZFJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lPT1PbD9PbDpMdChlKSx0KTpvfSx0LnN0YXJ0QW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9THQoZSksdCk6YX0sdC5lbmRBbmdsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1MdChlKSx0KTpzfSx0LnBhZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPUx0KGUpLHQpOmx9LHQuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgdD0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsZT0oK2EuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArcy5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItSGE7cmV0dXJuW01hdGguY29zKGUpKnQsTWF0aC5zaW4oZSkqdF19LHR9O3ZhciBPbD0iYXV0byI7dWEuc3ZnLmxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gd28oeCl9O3ZhciBJbD11YS5tYXAoe2xpbmVhcjpBbywibGluZWFyLWNsb3NlZCI6a28sc3RlcDpNbywic3RlcC1iZWZvcmUiOlRvLCJzdGVwLWFmdGVyIjpFbyxiYXNpczpSbywiYmFzaXMtb3BlbiI6T28sImJhc2lzLWNsb3NlZCI6SW8sYnVuZGxlOk5vLGNhcmRpbmFsOkNvLCJjYXJkaW5hbC1vcGVuIjpMbywiY2FyZGluYWwtY2xvc2VkIjpTbyxtb25vdG9uZTpWb30pO0lsLmZvckVhY2goZnVuY3Rpb24odCxlKXtlLmtleT10LGUuY2xvc2VkPS8tY2xvc2VkJC8udGVzdCh0KX0pO3ZhciBObD1bMCwyLzMsMS8zLDBdLGpsPVswLDEvMywyLzMsMF0sRmw9WzAsMS82LDIvMywxLzZdO3VhLnN2Zy5saW5lLnJhZGlhbD1mdW5jdGlvbigpe3ZhciB0PXdvKHFvKTtyZXR1cm4gdC5yYWRpdXM9dC54LGRlbGV0ZSB0LngsdC5hbmdsZT10LnksZGVsZXRlIHQueSx0fSxUby5yZXZlcnNlPUVvLEVvLnJldmVyc2U9VG8sdWEuc3ZnLmFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gSG8oeCl9LHVhLnN2Zy5hcmVhLnJhZGlhbD1mdW5jdGlvbigpe3ZhciB0PUhvKHFvKTtyZXR1cm4gdC5yYWRpdXM9dC54LGRlbGV0ZSB0LngsdC5pbm5lclJhZGl1cz10LngwLGRlbGV0ZSB0LngwLHQub3V0ZXJSYWRpdXM9dC54MSxkZWxldGUgdC54MSx0LmFuZ2xlPXQueSxkZWxldGUgdC55LHQuc3RhcnRBbmdsZT10LnkwLGRlbGV0ZSB0LnkwLHQuZW5kQW5nbGU9dC55MSxkZWxldGUgdC55MSx0fSx1YS5zdmcuY2hvcmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQscyl7dmFyIGw9ZSh0aGlzLG8sdCxzKSxjPWUodGhpcyxhLHQscyk7cmV0dXJuIk0iK2wucDArbihsLnIsbC5wMSxsLmExLWwuYTApKyhyKGwsYyk/aShsLnIsbC5wMSxsLnIsbC5wMCk6aShsLnIsbC5wMSxjLnIsYy5wMCkrbihjLnIsYy5wMSxjLmExLWMuYTApK2koYy5yLGMucDEsbC5yLGwucDApKSsiWiJ9ZnVuY3Rpb24gZSh0LGUscixuKXt2YXIgaT1lLmNhbGwodCxyLG4pLG89cy5jYWxsKHQsaSxuKSxhPWwuY2FsbCh0LGksbiktSGEsdT1jLmNhbGwodCxpLG4pLUhhO3JldHVybntyOm8sYTA6YSxhMTp1LHAwOltvKk1hdGguY29zKGEpLG8qTWF0aC5zaW4oYSldLHAxOltvKk1hdGguY29zKHUpLG8qTWF0aC5zaW4odSldfX1mdW5jdGlvbiByKHQsZSl7cmV0dXJuIHQuYTA9PWUuYTAmJnQuYTE9PWUuYTF9ZnVuY3Rpb24gbih0LGUscil7cmV0dXJuIkEiK3QrIiwiK3QrIiAwICIrICsocj5VYSkrIiwxICIrZX1mdW5jdGlvbiBpKHQsZSxyLG4pe3JldHVybiJRIDAsMCAiK259dmFyIG89eHIsYT1fcixzPUdvLGw9bW8sYz15bztyZXR1cm4gdC5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9THQoZSksdCk6c30sdC5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89THQoZSksdCk6b30sdC50YXJnZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9THQoZSksdCk6YX0sdC5zdGFydEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPUx0KGUpLHQpOmx9LHQuZW5kQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9THQoZSksdCk6Y30sdH0sdWEuc3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGkpe3ZhciBvPWUuY2FsbCh0aGlzLHQsaSksYT1yLmNhbGwodGhpcyx0LGkpLHM9KG8ueSthLnkpLzIsbD1bbyx7eDpvLngseTpzfSx7eDphLngseTpzfSxhXTtyZXR1cm4gbD1sLm1hcChuKSwiTSIrbFswXSsiQyIrbFsxXSsiICIrbFsyXSsiICIrbFszXX12YXIgZT14cixyPV9yLG49WW87cmV0dXJuIHQuc291cmNlPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUx0KHIpLHQpOmV9LHQudGFyZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPUx0KGUpLHQpOnJ9LHQucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLHQpOm59LHR9LHVhLnN2Zy5kaWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgdD11YS5zdmcuZGlhZ29uYWwoKSxlPVlvLHI9dC5wcm9qZWN0aW9uO3JldHVybiB0LnByb2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cihYbyhlPXQpKTplfSx0fSx1YS5zdmcuc3ltYm9sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybihEbC5nZXQoZS5jYWxsKHRoaXMsdCxuKSl8fCRvKShyLmNhbGwodGhpcyx0LG4pKX12YXIgZT1abyxyPVdvO3JldHVybiB0LnR5cGU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9THQociksdCk6ZX0sdC5zaXplPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPUx0KGUpLHQpOnJ9LHR9O3ZhciBEbD11YS5tYXAoe2NpcmNsZTokbyxjcm9zczpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodC81KS8yO3JldHVybiJNIistMyplKyIsIistZSsiSCIrLWUrIlYiKy0zKmUrIkgiK2UrIlYiKy1lKyJIIiszKmUrIlYiK2UrIkgiK2UrIlYiKzMqZSsiSCIrLWUrIlYiK2UrIkgiKy0zKmUrIloifSxkaWFtb25kOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0LygyKlVsKSkscj1lKlVsO3JldHVybiJNMCwiKy1lKyJMIityKyIsMCAwLCIrZSsiICIrLXIrIiwwWiJ9LHNxdWFyZTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodCkvMjtyZXR1cm4iTSIrLWUrIiwiKy1lKyJMIitlKyIsIistZSsiICIrZSsiLCIrZSsiICIrLWUrIiwiK2UrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5zcXJ0KHQvQmwpLHI9ZSpCbC8yO3JldHVybiJNMCwiK3IrIkwiK2UrIiwiKy1yKyIgIistZSsiLCIrLXIrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0L0JsKSxyPWUqQmwvMjtyZXR1cm4iTTAsIistcisiTCIrZSsiLCIrcisiICIrLWUrIiwiK3IrIloifX0pO3VhLnN2Zy5zeW1ib2xUeXBlcz1EbC5rZXlzKCk7dmFyIEJsPU1hdGguc3FydCgzKSxVbD1NYXRoLnRhbigzMCpHYSk7UGEudHJhbnNpdGlvbj1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuPVZsfHwrK1lsLGk9ZWEodCksbz1bXSxhPXFsfHx7dGltZTpEYXRlLm5vdygpLGVhc2U6TG4sZGVsYXk6MCxkdXJhdGlvbjoyNTB9LHM9LTEsbD10aGlzLmxlbmd0aDsrK3M8bDspe28ucHVzaChlPVtdKTtmb3IodmFyIGM9dGhpc1tzXSx1PS0xLGg9Yy5sZW5ndGg7Kyt1PGg7KShyPWNbdV0pJiZyYShyLHUsaSxuLGEpLGUucHVzaChyKX1yZXR1cm4gUW8obyxpLG4pfSxQYS5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChudWxsPT10P0hsOktvKGVhKHQpKSl9O3ZhciBWbCxxbCxIbD1LbyhlYSgpKSxHbD1bXSxZbD0wO0dsLmNhbGw9UGEuY2FsbCxHbC5lbXB0eT1QYS5lbXB0eSxHbC5ub2RlPVBhLm5vZGUsR2wuc2l6ZT1QYS5zaXplLHVhLnRyYW5zaXRpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmdC50cmFuc2l0aW9uP1ZsP3QudHJhbnNpdGlvbihlKTp0OnVhLnNlbGVjdGlvbigpLnRyYW5zaXRpb24odCl9LHVhLnRyYW5zaXRpb24ucHJvdG90eXBlPUdsLEdsLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4saT10aGlzLmlkLG89dGhpcy5uYW1lc3BhY2UsYT1bXTt0PUModCk7Zm9yKHZhciBzPS0xLGw9dGhpcy5sZW5ndGg7KytzPGw7KXthLnB1c2goZT1bXSk7Zm9yKHZhciBjPXRoaXNbc10sdT0tMSxoPWMubGVuZ3RoOysrdTxoOykobj1jW3VdKSYmKHI9dC5jYWxsKG4sbi5fX2RhdGFfXyx1LHMpKT8oIl9fZGF0YV9fImluIG4mJihyLl9fZGF0YV9fPW4uX19kYXRhX18pLHJhKHIsdSxvLGksbltvXVtpXSksZS5wdXNoKHIpKTplLnB1c2gobnVsbCl9cmV0dXJuIFFvKGEsbyxpKX0sR2wuc2VsZWN0QWxsPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG8sYT10aGlzLmlkLHM9dGhpcy5uYW1lc3BhY2UsbD1bXTt0PVAodCk7Zm9yKHZhciBjPS0xLHU9dGhpcy5sZW5ndGg7KytjPHU7KWZvcih2YXIgaD10aGlzW2NdLGY9LTEsZD1oLmxlbmd0aDsrK2Y8ZDspaWYobj1oW2ZdKXtvPW5bc11bYV0scj10LmNhbGwobixuLl9fZGF0YV9fLGYsYyksbC5wdXNoKGU9W10pO2Zvcih2YXIgcD0tMSxnPXIubGVuZ3RoOysrcDxnOykoaT1yW3BdKSYmcmEoaSxwLHMsYSxvKSxlLnB1c2goaSl9cmV0dXJuIFFvKGwscyxhKX0sR2wuZmlsdGVyPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpPVtdOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1xKHQpKTtmb3IodmFyIG89MCxhPXRoaXMubGVuZ3RoO2E+bztvKyspe2kucHVzaChlPVtdKTtmb3IodmFyIHI9dGhpc1tvXSxzPTAsbD1yLmxlbmd0aDtsPnM7cysrKShuPXJbc10pJiZ0LmNhbGwobixuLl9fZGF0YV9fLHMsbykmJmUucHVzaChuKX1yZXR1cm4gUW8oaSx0aGlzLm5hbWVzcGFjZSx0aGlzLmlkKX0sR2wudHdlZW49ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmlkLG49dGhpcy5uYW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj90aGlzLm5vZGUoKVtuXVtyXS50d2Vlbi5nZXQodCk6Ryh0aGlzLG51bGw9PWU/ZnVuY3Rpb24oZSl7ZVtuXVtyXS50d2Vlbi5yZW1vdmUodCl9OmZ1bmN0aW9uKGkpe2lbbl1bcl0udHdlZW4uc2V0KHQsZSl9KX0sR2wuYXR0cj1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShzKX1mdW5jdGlvbiBuKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhzLnNwYWNlLHMubG9jYWwpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIG51bGw9PXQ/cjoodCs9IiIsZnVuY3Rpb24oKXt2YXIgZSxyPXRoaXMuZ2V0QXR0cmlidXRlKHMpO3JldHVybiByIT09dCYmKGU9YShyLHQpLGZ1bmN0aW9uKHQpe3RoaXMuc2V0QXR0cmlidXRlKHMsZSh0KSl9KX0pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/bjoodCs9IiIsZnVuY3Rpb24oKXt2YXIgZSxyPXRoaXMuZ2V0QXR0cmlidXRlTlMocy5zcGFjZSxzLmxvY2FsKTtyZXR1cm4gciE9PXQmJihlPWEocix0KSxmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZU5TKHMuc3BhY2Uscy5sb2NhbCxlKHQpKX0pfSl9aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IoZSBpbiB0KXRoaXMuYXR0cihlLHRbZV0pO3JldHVybiB0aGlzfXZhciBhPSJ0cmFuc2Zvcm0iPT10P1puOl9uLHM9dWEubnMucXVhbGlmeSh0KTtyZXR1cm4gSm8odGhpcywiYXR0ci4iK3QsZSxzLmxvY2FsP286aSl9LEdsLmF0dHJUd2Vlbj1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIodCxyKXt2YXIgbj1lLmNhbGwodGhpcyx0LHIsdGhpcy5nZXRBdHRyaWJ1dGUoaSkpO3JldHVybiBuJiZmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZShpLG4odCkpfX1mdW5jdGlvbiBuKHQscil7dmFyIG49ZS5jYWxsKHRoaXMsdCxyLHRoaXMuZ2V0QXR0cmlidXRlTlMoaS5zcGFjZSxpLmxvY2FsKSk7cmV0dXJuIG4mJmZ1bmN0aW9uKHQpe3RoaXMuc2V0QXR0cmlidXRlTlMoaS5zcGFjZSxpLmxvY2FsLG4odCkpfX12YXIgaT11YS5ucy5xdWFsaWZ5KHQpO3JldHVybiB0aGlzLnR3ZWVuKCJhdHRyLiIrdCxpLmxvY2FsP246cil9LEdsLnN0eWxlPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBpKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX1mdW5jdGlvbiBvKGUpe3JldHVybiBudWxsPT1lP2k6KGUrPSIiLGZ1bmN0aW9uKCl7dmFyIGksbz1uKHRoaXMpLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpO3JldHVybiBvIT09ZSYmKGk9X24obyxlKSxmdW5jdGlvbihlKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaShlKSxyKX0pfSl9dmFyIGE9YXJndW1lbnRzLmxlbmd0aDtpZigzPmEpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7Mj5hJiYoZT0iIik7Zm9yKHIgaW4gdCl0aGlzLnN0eWxlKHIsdFtyXSxlKTtyZXR1cm4gdGhpc31yPSIifXJldHVybiBKbyh0aGlzLCJzdHlsZS4iK3QsZSxvKX0sR2wuc3R5bGVUd2Vlbj1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gaShpLG8pe3ZhciBhPWUuY2FsbCh0aGlzLGksbyxuKHRoaXMpLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpKTtyZXR1cm4gYSYmZnVuY3Rpb24oZSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGEoZSkscil9fXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDMmJihyPSIiKSx0aGlzLnR3ZWVuKCJzdHlsZS4iK3QsaSl9LEdsLnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIEpvKHRoaXMsInRleHQiLHQsdGEpfSxHbC5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm5hbWVzcGFjZTtyZXR1cm4gdGhpcy5lYWNoKCJlbmQudHJhbnNpdGlvbiIsZnVuY3Rpb24oKXt2YXIgZTt0aGlzW3RdLmNvdW50PDImJihlPXRoaXMucGFyZW50Tm9kZSkmJmUucmVtb3ZlQ2hpbGQodGhpcyl9KX0sR2wuZWFzZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5uYW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKVtyXVtlXS5lYXNlOigiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9dWEuZWFzZS5hcHBseSh1YSxhcmd1bWVudHMpKSxHKHRoaXMsZnVuY3Rpb24obil7bltyXVtlXS5lYXNlPXR9KSl9LEdsLmRlbGF5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaWQscj10aGlzLm5hbWVzcGFjZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW3JdW2VdLmRlbGF5OkcodGhpcywiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihuLGksbyl7bltyXVtlXS5kZWxheT0rdC5jYWxsKG4sbi5fX2RhdGFfXyxpLG8pfToodD0rdCxmdW5jdGlvbihuKXtuW3JdW2VdLmRlbGF5PXR9KSl9LEdsLmR1cmF0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaWQscj10aGlzLm5hbWVzcGFjZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW3JdW2VdLmR1cmF0aW9uOkcodGhpcywiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihuLGksbyl7bltyXVtlXS5kdXJhdGlvbj1NYXRoLm1heCgxLHQuY2FsbChuLG4uX19kYXRhX18saSxvKSl9Oih0PU1hdGgubWF4KDEsdCksZnVuY3Rpb24obil7bltyXVtlXS5kdXJhdGlvbj10fSkpfSxHbC5lYWNoPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5pZCxuPXRoaXMubmFtZXNwYWNlO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9cWwsbz1WbDt0cnl7Vmw9cixHKHRoaXMsZnVuY3Rpb24oZSxpLG8pe3FsPWVbbl1bcl0sdC5jYWxsKGUsZS5fX2RhdGFfXyxpLG8pfSl9ZmluYWxseXtxbD1pLFZsPW99fWVsc2UgRyh0aGlzLGZ1bmN0aW9uKGkpe3ZhciBvPWlbbl1bcl07KG8uZXZlbnR8fChvLmV2ZW50PXVhLmRpc3BhdGNoKCJzdGFydCIsImVuZCIsImludGVycnVwdCIpKSkub24odCxlKX0pO3JldHVybiB0aGlzfSxHbC50cmFuc2l0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUscixuLGk9dGhpcy5pZCxvPSsrWWwsYT10aGlzLm5hbWVzcGFjZSxzPVtdLGw9MCxjPXRoaXMubGVuZ3RoO2M+bDtsKyspe3MucHVzaCh0PVtdKTtmb3IodmFyIGU9dGhpc1tsXSx1PTAsaD1lLmxlbmd0aDtoPnU7dSsrKShyPWVbdV0pJiYobj1yW2FdW2ldLHJhKHIsdSxhLG8se3RpbWU6bi50aW1lLGVhc2U6bi5lYXNlLGRlbGF5Om4uZGVsYXkrbi5kdXJhdGlvbixkdXJhdGlvbjpuLmR1cmF0aW9ufSkpLHQucHVzaChyKX1yZXR1cm4gUW8ocyxhLG8pfSx1YS5zdmcuYXhpcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dC5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQsYz11YS5zZWxlY3QodGhpcyksdT10aGlzLl9fY2hhcnRfX3x8cixoPXRoaXMuX19jaGFydF9fPXIuY29weSgpLGY9bnVsbD09bD9oLnRpY2tzP2gudGlja3MuYXBwbHkoaCxzKTpoLmRvbWFpbigpOmwsZD1udWxsPT1lP2gudGlja0Zvcm1hdD9oLnRpY2tGb3JtYXQuYXBwbHkoaCxzKTp4OmUscD1jLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGYsaCksZz1wLmVudGVyKCkuaW5zZXJ0KCJnIiwiLmRvbWFpbiIpLmF0dHIoImNsYXNzIiwidGljayIpLnN0eWxlKCJvcGFjaXR5IixEYSksdj11YS50cmFuc2l0aW9uKHAuZXhpdCgpKS5zdHlsZSgib3BhY2l0eSIsRGEpLnJlbW92ZSgpLG09dWEudHJhbnNpdGlvbihwLm9yZGVyKCkpLnN0eWxlKCJvcGFjaXR5IiwxKSx5PU1hdGgubWF4KGksMCkrYSxiPVlpKGgpLF89Yy5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFswXSksdz0oXy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZG9tYWluIiksdWEudHJhbnNpdGlvbihfKSk7Zy5hcHBlbmQoImxpbmUiKSxnLmFwcGVuZCgidGV4dCIpO3ZhciBBLGssTSxULEU9Zy5zZWxlY3QoImxpbmUiKSxMPW0uc2VsZWN0KCJsaW5lIiksUz1wLnNlbGVjdCgidGV4dCIpLnRleHQoZCksQz1nLnNlbGVjdCgidGV4dCIpLFA9bS5zZWxlY3QoInRleHQiKSx6PSJ0b3AiPT09bnx8ImxlZnQiPT09bj8tMToxO2lmKCJib3R0b20iPT09bnx8InRvcCI9PT1uPyh0PW5hLEE9IngiLE09InkiLGs9IngyIixUPSJ5MiIsUy5hdHRyKCJkeSIsMD56PyIwZW0iOiIuNzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLHcuYXR0cigiZCIsIk0iK2JbMF0rIiwiK3oqbysiVjBIIitiWzFdKyJWIit6Km8pKToodD1pYSxBPSJ5IixNPSJ4IixrPSJ5MiIsVD0ieDIiLFMuYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsMD56PyJlbmQiOiJzdGFydCIpLHcuYXR0cigiZCIsIk0iK3oqbysiLCIrYlswXSsiSDBWIitiWzFdKyJIIit6Km8pKSxFLmF0dHIoVCx6KmkpLEMuYXR0cihNLHoqeSksTC5hdHRyKGssMCkuYXR0cihULHoqaSksUC5hdHRyKEEsMCkuYXR0cihNLHoqeSksaC5yYW5nZUJhbmQpe3ZhciBSPWgsTz1SLnJhbmdlQmFuZCgpLzI7dT1oPWZ1bmN0aW9uKHQpe3JldHVybiBSKHQpK099fWVsc2UgdS5yYW5nZUJhbmQ/dT1oOnYuY2FsbCh0LGgsdSk7Zy5jYWxsKHQsdSxoKSxtLmNhbGwodCxoLGgpfSl9dmFyIGUscj11YS5zY2FsZS5saW5lYXIoKSxuPVhsLGk9NixvPTYsYT0zLHM9WzEwXSxsPW51bGw7cmV0dXJuIHQuc2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0KTpyfSx0Lm9yaWVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lIGluIFdsP2UrIiI6WGwsdCk6bn0sdC50aWNrcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWZhKGFyZ3VtZW50cyksdCk6c30sdC50aWNrVmFsdWVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsdCk6bH0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXIsdCk6ZX0sdC50aWNrU2l6ZT1mdW5jdGlvbihlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByPyhpPStlLG89K2FyZ3VtZW50c1tyLTFdLHQpOml9LHQuaW5uZXJUaWNrU2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rZSx0KTppfSx0Lm91dGVyVGlja1NpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K2UsdCk6b30sdC50aWNrUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rZSx0KTphfSx0LnRpY2tTdWJkaXZpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCYmdH0sdH07dmFyIFhsPSJib3R0b20iLFdsPXt0b3A6MSxyaWdodDoxLGJvdHRvbToxLGxlZnQ6MX07dWEuc3ZnLmJydXNoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChuKXtuLmVhY2goZnVuY3Rpb24oKXt2YXIgbj11YS5zZWxlY3QodGhpcykuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIixvKS5vbigidG91Y2hzdGFydC5icnVzaCIsbyksYT1uLnNlbGVjdEFsbCgiLmJhY2tncm91bmQiKS5kYXRhKFswXSk7YS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmFja2dyb3VuZCIpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikuc3R5bGUoImN1cnNvciIsImNyb3NzaGFpciIpLG4uc2VsZWN0QWxsKCIuZXh0ZW50IikuZGF0YShbMF0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJleHRlbnQiKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpO3ZhciBzPW4uc2VsZWN0QWxsKCIucmVzaXplIikuZGF0YShnLHgpO3MuZXhpdCgpLnJlbW92ZSgpLHMuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuInJlc2l6ZSAiK3R9KS5zdHlsZSgiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4gWmxbdF19KS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4vW2V3XSQvLnRlc3QodCk/LTM6bnVsbH0pLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybi9eW25zXS8udGVzdCh0KT8tMzpudWxsfSkuYXR0cigid2lkdGgiLDYpLmF0dHIoImhlaWdodCIsNikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxzLnN0eWxlKCJkaXNwbGF5Iix0LmVtcHR5KCk/Im5vbmUiOm51bGwpO3ZhciBsLGg9dWEudHJhbnNpdGlvbihuKSxmPXVhLnRyYW5zaXRpb24oYSk7YyYmKGw9WWkoYyksZi5hdHRyKCJ4IixsWzBdKS5hdHRyKCJ3aWR0aCIsbFsxXS1sWzBdKSxyKGgpKSx1JiYobD1ZaSh1KSxmLmF0dHIoInkiLGxbMF0pLmF0dHIoImhlaWdodCIsbFsxXS1sWzBdKSxpKGgpKSxlKGgpfSl9ZnVuY3Rpb24gZSh0KXt0LnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK2hbKy9lJC8udGVzdCh0KV0rIiwiK2ZbKy9ecy8udGVzdCh0KV0rIikifSl9ZnVuY3Rpb24gcih0KXt0LnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoIngiLGhbMF0pLHQuc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3QsLnM+cmVjdCIpLmF0dHIoIndpZHRoIixoWzFdLWhbMF0pfWZ1bmN0aW9uIGkodCl7dC5zZWxlY3QoIi5leHRlbnQiKS5hdHRyKCJ5IixmWzBdKSx0LnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53PnJlY3QiKS5hdHRyKCJoZWlnaHQiLGZbMV0tZlswXSl9ZnVuY3Rpb24gbygpe2Z1bmN0aW9uIG8oKXszMj09dWEuZXZlbnQua2V5Q29kZSYmKFN8fChiPW51bGwsUFswXS09aFsxXSxQWzFdLT1mWzFdLFM9MiksVCgpKX1mdW5jdGlvbiBnKCl7MzI9PXVhLmV2ZW50LmtleUNvZGUmJjI9PVMmJihQWzBdKz1oWzFdLFBbMV0rPWZbMV0sUz0wLFQoKSl9ZnVuY3Rpb24gdigpe3ZhciB0PXVhLm1vdXNlKF8pLG49ITE7eCYmKHRbMF0rPXhbMF0sdFsxXSs9eFsxXSksU3x8KHVhLmV2ZW50LmFsdEtleT8oYnx8KGI9WyhoWzBdK2hbMV0pLzIsKGZbMF0rZlsxXSkvMl0pLFBbMF09aFsrKHRbMF08YlswXSldLFBbMV09ZlsrKHRbMV08YlsxXSldKTpiPW51bGwpLEUmJm0odCxjLDApJiYocihrKSxuPSEwKSxMJiZtKHQsdSwxKSYmKGkoayksbj0hMCksbiYmKGUoayksQSh7dHlwZToiYnJ1c2giLG1vZGU6Uz8ibW92ZSI6InJlc2l6ZSJ9KSl9ZnVuY3Rpb24gbSh0LGUscil7dmFyIG4saSxvPVlpKGUpLGw9b1swXSxjPW9bMV0sdT1QW3JdLGc9cj9mOmgsdj1nWzFdLWdbMF07cmV0dXJuIFMmJihsLT11LGMtPXYrdSksbj0ocj9wOmQpP01hdGgubWF4KGwsTWF0aC5taW4oYyx0W3JdKSk6dFtyXSxTP2k9KG4rPXUpK3Y6KGImJih1PU1hdGgubWF4KGwsTWF0aC5taW4oYywyKmJbcl0tbikpKSxuPnU/KGk9bixuPXUpOmk9dSksZ1swXSE9bnx8Z1sxXSE9aT8ocj9zPW51bGw6YT1udWxsLGdbMF09bixnWzFdPWksITApOnZvaWQgMH1mdW5jdGlvbiB5KCl7digpLGsuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLHQuZW1wdHkoKT8ibm9uZSI6bnVsbCksdWEuc2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsbnVsbCksei5vbigibW91c2Vtb3ZlLmJydXNoIixudWxsKS5vbigibW91c2V1cC5icnVzaCIsbnVsbCkub24oInRvdWNobW92ZS5icnVzaCIsbnVsbCkub24oInRvdWNoZW5kLmJydXNoIixudWxsKS5vbigia2V5ZG93bi5icnVzaCIsbnVsbCkub24oImtleXVwLmJydXNoIixudWxsKSxDKCksQSh7dHlwZToiYnJ1c2hlbmQifSl9dmFyIGIseCxfPXRoaXMsdz11YS5zZWxlY3QodWEuZXZlbnQudGFyZ2V0KSxBPWwub2YoXyxhcmd1bWVudHMpLGs9dWEuc2VsZWN0KF8pLE09dy5kYXR1bSgpLEU9IS9eKG58cykkLy50ZXN0KE0pJiZjLEw9IS9eKGV8dykkLy50ZXN0KE0pJiZ1LFM9dy5jbGFzc2VkKCJleHRlbnQiKSxDPUsoXyksUD11YS5tb3VzZShfKSx6PXVhLnNlbGVjdChuKF8pKS5vbigia2V5ZG93bi5icnVzaCIsbykub24oImtleXVwLmJydXNoIixnKTtpZih1YS5ldmVudC5jaGFuZ2VkVG91Y2hlcz96Lm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHYpLm9uKCJ0b3VjaGVuZC5icnVzaCIseSk6ei5vbigibW91c2Vtb3ZlLmJydXNoIix2KS5vbigibW91c2V1cC5icnVzaCIseSksay5pbnRlcnJ1cHQoKS5zZWxlY3RBbGwoIioiKS5pbnRlcnJ1cHQoKSxTKVBbMF09aFswXS1QWzBdLFBbMV09ZlswXS1QWzFdO2Vsc2UgaWYoTSl7dmFyIFI9Ky93JC8udGVzdChNKSxPPSsvXm4vLnRlc3QoTSk7eD1baFsxLVJdLVBbMF0sZlsxLU9dLVBbMV1dLFBbMF09aFtSXSxQWzFdPWZbT119ZWxzZSB1YS5ldmVudC5hbHRLZXkmJihiPVAuc2xpY2UoKSk7ay5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLHVhLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLHcuc3R5bGUoImN1cnNvciIpKSxBKHt0eXBlOiJicnVzaHN0YXJ0In0pLHYoKX12YXIgYSxzLGw9TCh0LCJicnVzaHN0YXJ0IiwiYnJ1c2giLCJicnVzaGVuZCIpLGM9bnVsbCx1PW51bGwsaD1bMCwwXSxmPVswLDBdLGQ9ITAscD0hMCxnPSRsWzBdO3JldHVybiB0LmV2ZW50PWZ1bmN0aW9uKHQpe3QuZWFjaChmdW5jdGlvbigpe3ZhciB0PWwub2YodGhpcyxhcmd1bWVudHMpLGU9e3g6aCx5OmYsaTphLGo6c30scj10aGlzLl9fY2hhcnRfX3x8ZTt0aGlzLl9fY2hhcnRfXz1lLFZsP3VhLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7YT1yLmkscz1yLmosaD1yLngsZj1yLnksdCh7dHlwZToiYnJ1c2hzdGFydCJ9KX0pLnR3ZWVuKCJicnVzaDpicnVzaCIsZnVuY3Rpb24oKXt2YXIgcj13bihoLGUueCksbj13bihmLGUueSk7cmV0dXJuIGE9cz1udWxsLGZ1bmN0aW9uKGkpe2g9ZS54PXIoaSksZj1lLnk9bihpKSx0KHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pfX0pLmVhY2goImVuZC5icnVzaCIsZnVuY3Rpb24oKXthPWUuaSxzPWUuaix0KHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pLHQoe3R5cGU6ImJydXNoZW5kIn0pfSk6KHQoe3R5cGU6ImJydXNoc3RhcnQifSksdCh7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSx0KHt0eXBlOiJicnVzaGVuZCJ9KSl9KX0sdC54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWUsZz0kbFshYzw8MXwhdV0sdCk6Y30sdC55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsZz0kbFshYzw8MXwhdV0sdCk6dX0sdC5jbGFtcD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYyYmdT8oZD0hIWVbMF0scD0hIWVbMV0pOmM/ZD0hIWU6dSYmKHA9ISFlKSx0KTpjJiZ1P1tkLHBdOmM/ZDp1P3A6bnVsbH0sdC5leHRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHIsbixpLG8sbDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYyYmKHI9ZVswXSxuPWVbMV0sdSYmKHI9clswXSxuPW5bMF0pLGE9W3Isbl0sYy5pbnZlcnQmJihyPWMociksbj1jKG4pKSxyPm4mJihsPXIscj1uLG49bCkscj09aFswXSYmbj09aFsxXXx8KGg9W3Isbl0pKSx1JiYoaT1lWzBdLG89ZVsxXSxjJiYoaT1pWzFdLG89b1sxXSkscz1baSxvXSx1LmludmVydCYmKGk9dShpKSxvPXUobykpLGk+byYmKGw9aSxpPW8sbz1sKSxpPT1mWzBdJiZvPT1mWzFdfHwoZj1baSxvXSkpLHQpOihjJiYoYT8ocj1hWzBdLG49YVsxXSk6KHI9aFswXSxuPWhbMV0sYy5pbnZlcnQmJihyPWMuaW52ZXJ0KHIpLG49Yy5pbnZlcnQobikpLHI+biYmKGw9cixyPW4sbj1sKSkpLHUmJihzPyhpPXNbMF0sbz1zWzFdKTooaT1mWzBdLG89ZlsxXSx1LmludmVydCYmKGk9dS5pbnZlcnQoaSksbz11LmludmVydChvKSksaT5vJiYobD1pLGk9byxvPWwpKSksYyYmdT9bW3IsaV0sW24sb11dOmM/W3Isbl06dSYmW2ksb10pfSx0LmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZW1wdHkoKXx8KGg9WzAsMF0sZj1bMCwwXSxhPXM9bnVsbCksdH0sdC5lbXB0eT1mdW5jdGlvbigpe3JldHVybiEhYyYmaFswXT09aFsxXXx8ISF1JiZmWzBdPT1mWzFdfSx1YS5yZWJpbmQodCxsLCJvbiIpfTt2YXIgWmw9e246Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sJGw9W1sibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0sWyJlIiwidyJdLFsibiIsInMiXSxbXV0sS2w9dnMuZm9ybWF0PXdzLnRpbWVGb3JtYXQsUWw9S2wudXRjLEpsPVFsKCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKTtLbC5pc289RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJituZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/b2E6Smwsb2EucGFyc2U9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IERhdGUodCk7cmV0dXJuIGlzTmFOKGUpP251bGw6ZX0sb2EudG9TdHJpbmc9SmwudG9TdHJpbmcsdnMuc2Vjb25kPVZ0KGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbXMoMWUzKk1hdGguZmxvb3IodC8xZTMpKX0sZnVuY3Rpb24odCxlKXt0LnNldFRpbWUodC5nZXRUaW1lKCkrMWUzKk1hdGguZmxvb3IoZSkpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRTZWNvbmRzKCl9KSx2cy5zZWNvbmRzPXZzLnNlY29uZC5yYW5nZSx2cy5zZWNvbmRzLnV0Yz12cy5zZWNvbmQudXRjLnJhbmdlLHZzLm1pbnV0ZT1WdChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG1zKDZlNCpNYXRoLmZsb29yKHQvNmU0KSl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKHQuZ2V0VGltZSgpKzZlNCpNYXRoLmZsb29yKGUpKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSksdnMubWludXRlcz12cy5taW51dGUucmFuZ2UsdnMubWludXRlcy51dGM9dnMubWludXRlLnV0Yy5yYW5nZSx2cy5ob3VyPVZ0KGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKS82MDtyZXR1cm4gbmV3IG1zKDM2ZTUqKE1hdGguZmxvb3IodC8zNmU1LWUpK2UpKX0sZnVuY3Rpb24odCxlKXt0LnNldFRpbWUodC5nZXRUaW1lKCkrMzZlNSpNYXRoLmZsb29yKGUpKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pLHZzLmhvdXJzPXZzLmhvdXIucmFuZ2UsdnMuaG91cnMudXRjPXZzLmhvdXIudXRjLnJhbmdlLHZzLm1vbnRoPVZ0KGZ1bmN0aW9uKHQpe3JldHVybiB0PXZzLmRheSh0KSx0LnNldERhdGUoMSksdH0sZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pLHZzLm1vbnRocz12cy5tb250aC5yYW5nZSx2cy5tb250aHMudXRjPXZzLm1vbnRoLnV0Yy5yYW5nZTt2YXIgdGM9WzFlMyw1ZTMsMTVlMywzZTQsNmU0LDNlNSw5ZTUsMThlNSwzNmU1LDEwOGU1LDIxNmU1LDQzMmU1LDg2NGU1LDE3MjhlNSw2MDQ4ZTUsMjU5MmU2LDc3NzZlNiwzMTUzNmU2XSxlYz1bW3ZzLnNlY29uZCwxXSxbdnMuc2Vjb25kLDVdLFt2cy5zZWNvbmQsMTVdLFt2cy5zZWNvbmQsMzBdLFt2cy5taW51dGUsMV0sW3ZzLm1pbnV0ZSw1XSxbdnMubWludXRlLDE1XSxbdnMubWludXRlLDMwXSxbdnMuaG91ciwxXSxbdnMuaG91ciwzXSxbdnMuaG91ciw2XSxbdnMuaG91ciwxMl0sW3ZzLmRheSwxXSxbdnMuZGF5LDJdLFt2cy53ZWVrLDFdLFt2cy5tb250aCwxXSxbdnMubW9udGgsM10sW3ZzLnllYXIsMV1dLHJjPUtsLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0U2Vjb25kcygpfV0sWyIlSTolTSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfV0sWyIlSSAlcCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX1dLFsiJWEgJWQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERheSgpJiYxIT10LmdldERhdGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKHQpe3JldHVybiAxIT10LmdldERhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9XSxbIiVZIixQZV1dKSxuYz17cmFuZ2U6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB1YS5yYW5nZShNYXRoLmNlaWwodC9yKSpyLCtlLHIpLm1hcChzYSl9LGZsb29yOngsY2VpbDp4fTtlYy55ZWFyPXZzLnllYXIsdnMuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYWEodWEuc2NhbGUubGluZWFyKCksZWMscmMpfTt2YXIgaWM9ZWMubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0WzBdLnV0Yyx0WzFdXX0pLG9jPVFsLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfV0sWyIlSTolTSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfV0sWyIlSSAlcCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX1dLFsiJWEgJWQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RheSgpJiYxIT10LmdldFVUQ0RhdGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKHQpe3JldHVybiAxIT10LmdldFVUQ0RhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9XSxbIiVZIixQZV1dKTtpYy55ZWFyPXZzLnllYXIudXRjLHZzLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBhYSh1YS5zY2FsZS5saW5lYXIoKSxpYyxvYyl9LHVhLnRleHQ9U3QoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzcG9uc2VUZXh0fSksdWEuanNvbj1mdW5jdGlvbih0LGUpe3JldHVybiBDdCh0LCJhcHBsaWNhdGlvbi9qc29uIixsYSxlKX0sdWEuaHRtbD1mdW5jdGlvbih0LGUpe3JldHVybiBDdCh0LCJ0ZXh0L2h0bWwiLGNhLGUpfSx1YS54bWw9U3QoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzcG9uc2VYTUx9KSwiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5hbWQ/KHRoaXMuZDM9dWEsdCh1YSkpOiJvYmplY3QiPT10eXBlb2YgciYmci5leHBvcnRzP3IuZXhwb3J0cz11YTp0aGlzLmQzPXVhfSgpfSx7fV0sNzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3RoaXMucG9pbnQ9dCx0aGlzLmluZGV4PWV9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj10LnBvaW50LG49ZS5wb2ludCxpPXIubGVuZ3RoLG89MDtpPm87KytvKXt2YXIgYT1uW29dLXJbb107aWYoYSlyZXR1cm4gYX1yZXR1cm4gMH1mdW5jdGlvbiBvKHQsZSxyKXtpZigxPT09dClyZXR1cm4gcj9bWy0xLDBdXTpbXTt2YXIgbj1lLm1hcChmdW5jdGlvbih0LGUpe3JldHVyblt0WzBdLGVdfSk7bi5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0tZVswXX0pO2Zvcih2YXIgaT1uZXcgQXJyYXkodC0xKSxvPTE7dD5vOysrbyl7dmFyIGE9bltvLTFdLHM9bltvXTtpW28tMV09W2FbMV0sc1sxXV19cmV0dXJuIHImJmkucHVzaChbLTEsaVswXVsxXV0sW2lbdC0xXVsxXSwtMV0pLGl9ZnVuY3Rpb24gYSh0LGUpe3ZhciByPXQubGVuZ3RoO2lmKDA9PT1yKXJldHVybltdO3ZhciBhPXRbMF0ubGVuZ3RoO2lmKDE+YSlyZXR1cm5bXTtpZigxPT09YSlyZXR1cm4gbyhyLHQsZSk7Zm9yKHZhciBjPW5ldyBBcnJheShyKSx1PTEsaD0wO3I+aDsrK2gpe2Zvcih2YXIgZj10W2hdLGQ9bmV3IEFycmF5KGErMSkscD0wLGc9MDthPmc7KytnKXt2YXIgdj1mW2ddO2RbZ109dixwKz12KnZ9ZFthXT1wLGNbaF09bmV3IG4oZCxoKSx1PU1hdGgubWF4KHAsdSl9bChjLGkpLHI9Yy5sZW5ndGg7Zm9yKHZhciBtPW5ldyBBcnJheShyK2ErMSkseT1uZXcgQXJyYXkocithKzEpLGI9KGErMSkqKGErMSkqdSx4PW5ldyBBcnJheShhKzEpLGg9MDthPj1oOysraCl4W2hdPTA7eFthXT1iLG1bMF09eC5zbGljZSgpLHlbMF09LTE7Zm9yKHZhciBoPTA7YT49aDsrK2gpe3ZhciBkPXguc2xpY2UoKTtkW2hdPTEsbVtoKzFdPWQseVtoKzFdPS0xfWZvcih2YXIgaD0wO3I+aDsrK2gpe3ZhciBfPWNbaF07bVtoK2ErMV09Xy5wb2ludCx5W2grYSsxXT1fLmluZGV4fXZhciB3PXMobSwhMSk7aWYodz1lP3cuZmlsdGVyKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MDthPj1yOysrcil7dmFyIG49eVt0W3JdXTtpZigwPm4mJisrZT49MilyZXR1cm4hMTt0W3JdPW59cmV0dXJuITB9KTp3LmZpbHRlcihmdW5jdGlvbih0KXtmb3IodmFyIGU9MDthPj1lOysrZSl7dmFyIHI9eVt0W2VdXTtpZigwPnIpcmV0dXJuITE7dFtlXT1yfXJldHVybiEwfSksMSZhKWZvcih2YXIgaD0wO2g8dy5sZW5ndGg7KytoKXt2YXIgXz13W2hdLGQ9X1swXTtfWzBdPV9bMV0sX1sxXT1kfXJldHVybiB3fXZhciBzPXQoImluY3JlbWVudGFsLWNvbnZleC1odWxsIiksbD10KCJ1bmlxIik7ZS5leHBvcnRzPWF9LHsiaW5jcmVtZW50YWwtY29udmV4LWh1bGwiOjE5Myx1bmlxOjIzNn1dLDcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBpPTB8dFtyXTtpZigwPj1pKXJldHVybltdO3ZhciBvLGE9bmV3IEFycmF5KGkpO2lmKHI9PT10Lmxlbmd0aC0xKWZvcihvPTA7aT5vOysrbylhW29dPWU7ZWxzZSBmb3Iobz0wO2k+bzsrK28pYVtvXT1uKHQsZSxyKzEpO3JldHVybiBhfWZ1bmN0aW9uIGkodCxlKXt2YXIgcixuO2ZvcihyPW5ldyBBcnJheSh0KSxuPTA7dD5uOysrbilyW25dPWU7cmV0dXJuIHJ9ZnVuY3Rpb24gbyh0LGUpe3N3aXRjaCgidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPTApLHR5cGVvZiB0KXtjYXNlIm51bWJlciI6aWYodD4wKXJldHVybiBpKDB8dCxlKTticmVhaztjYXNlIm9iamVjdCI6aWYoIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aClyZXR1cm4gbih0LGUsMCl9cmV0dXJuW119ZS5leHBvcnRzPW99LHt9XSw3MzpbZnVuY3Rpb24oZSxyLG4peyhmdW5jdGlvbihuLGkpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10fWZ1bmN0aW9uIGEodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gcyh0KXtZPXR9ZnVuY3Rpb24gbCh0KXskPXR9ZnVuY3Rpb24gYygpe3JldHVybiBmdW5jdGlvbigpe24ubmV4dFRpY2socCl9fWZ1bmN0aW9uIHUoKXtyZXR1cm4gZnVuY3Rpb24oKXtHKHApfX1mdW5jdGlvbiBoKCl7dmFyIHQ9MCxlPW5ldyBKKHApLHI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO3JldHVybiBlLm9ic2VydmUocix7Y2hhcmFjdGVyRGF0YTohMH0pLGZ1bmN0aW9uKCl7ci5kYXRhPXQ9Kyt0JTJ9fWZ1bmN0aW9uIGYoKXt2YXIgdD1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIHQucG9ydDEub25tZXNzYWdlPXAsZnVuY3Rpb24oKXt0LnBvcnQyLnBvc3RNZXNzYWdlKDApfX1mdW5jdGlvbiBkKCl7cmV0dXJuIGZ1bmN0aW9uKCl7c2V0VGltZW91dChwLDEpfX1mdW5jdGlvbiBwKCl7Zm9yKHZhciB0PTA7Wj50O3QrPTIpe3ZhciBlPXJ0W3RdLHI9cnRbdCsxXTtlKHIpLHJ0W3RdPXZvaWQgMCxydFt0KzFdPXZvaWQgMH1aPTB9ZnVuY3Rpb24gZygpe3RyeXt2YXIgdD1lLHI9dCgidmVydHgiKTtyZXR1cm4gRz1yLnJ1bk9uTG9vcHx8ci5ydW5PbkNvbnRleHQsdSgpfWNhdGNoKG4pe3JldHVybiBkKCl9fWZ1bmN0aW9uIHYodCxlKXt2YXIgcj10aGlzLG49ci5fc3RhdGU7aWYobj09PWF0JiYhdHx8bj09PXN0JiYhZSlyZXR1cm4gdGhpczt2YXIgaT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih5KSxvPXIuX3Jlc3VsdDtpZihuKXt2YXIgYT1hcmd1bWVudHNbbi0xXTskKGZ1bmN0aW9uKCl7TyhuLGksYSxvKX0pfWVsc2UgQyhyLGksdCxlKTtyZXR1cm4gaX1mdW5jdGlvbiBtKHQpe3ZhciBlPXRoaXM7aWYodCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yPT09ZSlyZXR1cm4gdDt2YXIgcj1uZXcgZSh5KTtyZXR1cm4gVChyLHQpLHJ9ZnVuY3Rpb24geSgpe31mdW5jdGlvbiBiKCl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIllvdSBjYW5ub3QgcmVzb2x2ZSBhIHByb21pc2Ugd2l0aCBpdHNlbGYiKX1mdW5jdGlvbiB4KCl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZXMgY2FsbGJhY2sgY2Fubm90IHJldHVybiB0aGF0IHNhbWUgcHJvbWlzZS4iKX1mdW5jdGlvbiBfKHQpe3RyeXtyZXR1cm4gdC50aGVufWNhdGNoKGUpe3JldHVybiBsdC5lcnJvcj1lLGx0fX1mdW5jdGlvbiB3KHQsZSxyLG4pe3RyeXt0LmNhbGwoZSxyLG4pfWNhdGNoKGkpe3JldHVybiBpfX1mdW5jdGlvbiBBKHQsZSxyKXskKGZ1bmN0aW9uKHQpe3ZhciBuPSExLGk9dyhyLGUsZnVuY3Rpb24ocil7bnx8KG49ITAsZSE9PXI/VCh0LHIpOkwodCxyKSl9LGZ1bmN0aW9uKGUpe258fChuPSEwLFModCxlKSl9LCJTZXR0bGU6ICIrKHQuX2xhYmVsfHwiIHVua25vd24gcHJvbWlzZSIpKTshbiYmaSYmKG49ITAsUyh0LGkpKX0sdCl9ZnVuY3Rpb24gayh0LGUpe2UuX3N0YXRlPT09YXQ/TCh0LGUuX3Jlc3VsdCk6ZS5fc3RhdGU9PT1zdD9TKHQsZS5fcmVzdWx0KTpDKGUsdm9pZCAwLGZ1bmN0aW9uKGUpe1QodCxlKX0sZnVuY3Rpb24oZSl7Uyh0LGUpfSl9ZnVuY3Rpb24gTSh0LGUscil7ZS5jb25zdHJ1Y3Rvcj09PXQuY29uc3RydWN0b3ImJnI9PT1udCYmY29uc3RydWN0b3IucmVzb2x2ZT09PWl0P2sodCxlKTpyPT09bHQ/Uyh0LGx0LmVycm9yKTp2b2lkIDA9PT1yP0wodCxlKTphKHIpP0EodCxlLHIpOkwodCxlKX1mdW5jdGlvbiBUKHQsZSl7dD09PWU/Uyh0LGIoKSk6byhlKT9NKHQsZSxfKGUpKTpMKHQsZSl9ZnVuY3Rpb24gRSh0KXt0Ll9vbmVycm9yJiZ0Ll9vbmVycm9yKHQuX3Jlc3VsdCksUCh0KX1mdW5jdGlvbiBMKHQsZSl7dC5fc3RhdGU9PT1vdCYmKHQuX3Jlc3VsdD1lLHQuX3N0YXRlPWF0LDAhPT10Ll9zdWJzY3JpYmVycy5sZW5ndGgmJiQoUCx0KSl9ZnVuY3Rpb24gUyh0LGUpe3QuX3N0YXRlPT09b3QmJih0Ll9zdGF0ZT1zdCx0Ll9yZXN1bHQ9ZSwkKEUsdCkpfWZ1bmN0aW9uIEModCxlLHIsbil7dmFyIGk9dC5fc3Vic2NyaWJlcnMsbz1pLmxlbmd0aDt0Ll9vbmVycm9yPW51bGwsaVtvXT1lLGlbbythdF09cixpW28rc3RdPW4sMD09PW8mJnQuX3N0YXRlJiYkKFAsdCl9ZnVuY3Rpb24gUCh0KXt2YXIgZT10Ll9zdWJzY3JpYmVycyxyPXQuX3N0YXRlO2lmKDAhPT1lLmxlbmd0aCl7Zm9yKHZhciBuLGksbz10Ll9yZXN1bHQsYT0wO2E8ZS5sZW5ndGg7YSs9MyluPWVbYV0saT1lW2Ercl0sbj9PKHIsbixpLG8pOmkobyk7dC5fc3Vic2NyaWJlcnMubGVuZ3RoPTB9fWZ1bmN0aW9uIHooKXt0aGlzLmVycm9yPW51bGx9ZnVuY3Rpb24gUih0LGUpe3RyeXtyZXR1cm4gdChlKX1jYXRjaChyKXtyZXR1cm4gY3QuZXJyb3I9cixjdH19ZnVuY3Rpb24gTyh0LGUscixuKXt2YXIgaSxvLHMsbCxjPWEocik7aWYoYyl7aWYoaT1SKHIsbiksaT09PWN0PyhsPSEwLG89aS5lcnJvcixpPW51bGwpOnM9ITAsZT09PWkpcmV0dXJuIHZvaWQgUyhlLHgoKSl9ZWxzZSBpPW4scz0hMDtlLl9zdGF0ZSE9PW90fHwoYyYmcz9UKGUsaSk6bD9TKGUsbyk6dD09PWF0P0woZSxpKTp0PT09c3QmJlMoZSxpKSl9ZnVuY3Rpb24gSSh0LGUpe3RyeXtlKGZ1bmN0aW9uKGUpe1QodCxlKX0sZnVuY3Rpb24oZSl7Uyh0LGUpfSl9Y2F0Y2gocil7Uyh0LHIpfX1mdW5jdGlvbiBOKHQpe3JldHVybiBuZXcgZ3QodGhpcyx0KS5wcm9taXNlfWZ1bmN0aW9uIGoodCl7ZnVuY3Rpb24gZSh0KXtUKGksdCl9ZnVuY3Rpb24gcih0KXtTKGksdCl9dmFyIG49dGhpcyxpPW5ldyBuKHkpO2lmKCFXKHQpKXJldHVybiBTKGksbmV3IFR5cGVFcnJvcigiWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLiIpKSxpO2Zvcih2YXIgbz10Lmxlbmd0aCxhPTA7aS5fc3RhdGU9PT1vdCYmbz5hO2ErKylDKG4ucmVzb2x2ZSh0W2FdKSx2b2lkIDAsZSxyKTtyZXR1cm4gaX1mdW5jdGlvbiBGKHQpe3ZhciBlPXRoaXMscj1uZXcgZSh5KTtyZXR1cm4gUyhyLHQpLHJ9ZnVuY3Rpb24gRCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIllvdSBtdXN0IHBhc3MgYSByZXNvbHZlciBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIHByb21pc2UgY29uc3RydWN0b3IiKX1mdW5jdGlvbiBCKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIil9ZnVuY3Rpb24gVSh0KXt0aGlzLl9pZD1kdCsrLHRoaXMuX3N0YXRlPXZvaWQgMCx0aGlzLl9yZXN1bHQ9dm9pZCAwLHRoaXMuX3N1YnNjcmliZXJzPVtdLHkhPT10JiYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJkQoKSx0aGlzIGluc3RhbmNlb2YgVT9JKHRoaXMsdCk6QigpKX1mdW5jdGlvbiBWKHQsZSl7dGhpcy5faW5zdGFuY2VDb25zdHJ1Y3Rvcj10LHRoaXMucHJvbWlzZT1uZXcgdCh5KSxBcnJheS5pc0FycmF5KGUpPyh0aGlzLl9pbnB1dD1lLHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuX3JlbWFpbmluZz1lLmxlbmd0aCx0aGlzLl9yZXN1bHQ9bmV3IEFycmF5KHRoaXMubGVuZ3RoKSwwPT09dGhpcy5sZW5ndGg/TCh0aGlzLnByb21pc2UsdGhpcy5fcmVzdWx0KToodGhpcy5sZW5ndGg9dGhpcy5sZW5ndGh8fDAsdGhpcy5fZW51bWVyYXRlKCksMD09PXRoaXMuX3JlbWFpbmluZyYmTCh0aGlzLnByb21pc2UsdGhpcy5fcmVzdWx0KSkpOlModGhpcy5wcm9taXNlLHRoaXMuX3ZhbGlkYXRpb25FcnJvcigpKX1mdW5jdGlvbiBxKCl7dmFyIHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBpKXQ9aTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZil0PXNlbGY7ZWxzZSB0cnl7dD1GdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcigicG9seWZpbGwgZmFpbGVkIGJlY2F1c2UgZ2xvYmFsIG9iamVjdCBpcyB1bmF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50Iil9dmFyIHI9dC5Qcm9taXNlO3ImJiJbb2JqZWN0IFByb21pc2VdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyLnJlc29sdmUoKSkmJiFyLmNhc3R8fCh0LlByb21pc2U9cHQpfXZhciBIO0g9QXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9O3ZhciBHLFksWCxXPUgsWj0wLCQ9ZnVuY3Rpb24odCxlKXtydFtaXT10LHJ0W1orMV09ZSxaKz0yLDI9PT1aJiYoWT9ZKHApOlgoKSl9LEs9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxRPUt8fHt9LEo9US5NdXRhdGlvbk9ic2VydmVyfHxRLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsdHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKG4pLGV0PSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCxydD1uZXcgQXJyYXkoMWUzKTtYPXR0P2MoKTpKP2goKTpldD9mKCk6dm9pZCAwPT09SyYmImZ1bmN0aW9uIj09dHlwZW9mIGU/ZygpOmQoKTt2YXIgbnQ9dixpdD1tLG90PXZvaWQgMCxhdD0xLHN0PTIsbHQ9bmV3IHosY3Q9bmV3IHosdXQ9TixodD1qLGZ0PUYsZHQ9MCxwdD1VO1UuYWxsPXV0LFUucmFjZT1odCxVLnJlc29sdmU9aXQsVS5yZWplY3Q9ZnQsVS5fc2V0U2NoZWR1bGVyPXMsVS5fc2V0QXNhcD1sLFUuX2FzYXA9JCxVLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VSx0aGVuOm50LCJjYXRjaCI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfX07dmFyIGd0PVY7Vi5wcm90b3R5cGUuX3ZhbGlkYXRpb25FcnJvcj1mdW5jdGlvbigpe3JldHVybiBuZXcgRXJyb3IoIkFycmF5IE1ldGhvZHMgbXVzdCBiZSBwcm92aWRlZCBhbiBBcnJheSIpfSxWLnByb3RvdHlwZS5fZW51bWVyYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMubGVuZ3RoLGU9dGhpcy5faW5wdXQscj0wO3RoaXMuX3N0YXRlPT09b3QmJnQ+cjtyKyspdGhpcy5fZWFjaEVudHJ5KGVbcl0scil9LFYucHJvdG90eXBlLl9lYWNoRW50cnk9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9pbnN0YW5jZUNvbnN0cnVjdG9yLG49ci5yZXNvbHZlO2lmKG49PT1pdCl7dmFyIGk9Xyh0KTtpZihpPT09bnQmJnQuX3N0YXRlIT09b3QpdGhpcy5fc2V0dGxlZEF0KHQuX3N0YXRlLGUsdC5fcmVzdWx0KTtlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiBpKXRoaXMuX3JlbWFpbmluZy0tLHRoaXMuX3Jlc3VsdFtlXT10O2Vsc2UgaWYocj09PXB0KXt2YXIgbz1uZXcgcih5KTtNKG8sdCxpKSx0aGlzLl93aWxsU2V0dGxlQXQobyxlKX1lbHNlIHRoaXMuX3dpbGxTZXR0bGVBdChuZXcgcihmdW5jdGlvbihlKXtlKHQpfSksZSl9ZWxzZSB0aGlzLl93aWxsU2V0dGxlQXQobih0KSxlKX0sVi5wcm90b3R5cGUuX3NldHRsZWRBdD1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5wcm9taXNlO24uX3N0YXRlPT09b3QmJih0aGlzLl9yZW1haW5pbmctLSx0PT09c3Q/UyhuLHIpOnRoaXMuX3Jlc3VsdFtlXT1yKSwwPT09dGhpcy5fcmVtYWluaW5nJiZMKG4sdGhpcy5fcmVzdWx0KX0sVi5wcm90b3R5cGUuX3dpbGxTZXR0bGVBdD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXM7Qyh0LHZvaWQgMCxmdW5jdGlvbih0KXtyLl9zZXR0bGVkQXQoYXQsZSx0KX0sZnVuY3Rpb24odCl7ci5fc2V0dGxlZEF0KHN0LGUsdCl9KX07dmFyIHZ0PXEsbXQ9e1Byb21pc2U6cHQscG9seWZpbGw6dnR9OyJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmFtZD90KGZ1bmN0aW9uKCl7cmV0dXJuIG10fSk6InVuZGVmaW5lZCIhPXR5cGVvZiByJiZyLmV4cG9ydHM/ci5leHBvcnRzPW10OiJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcyYmKHRoaXMuRVM2UHJvbWlzZT1tdCksdnQoKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsZSgiX3Byb2Nlc3MiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se19wcm9jZXNzOjU1fV0sNzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGUscj10Lmxlbmd0aCxuPTA7cj5uO24rKylpZihlPXQuY2hhckNvZGVBdChuKSwoOT5lfHxlPjEzKSYmMzIhPT1lJiYxMzMhPT1lJiYxNjAhPT1lJiY1NzYwIT09ZSYmNjE1OCE9PWUmJig4MTkyPmV8fGU+ODIwNSkmJjgyMzIhPT1lJiY4MjMzIT09ZSYmODIzOSE9PWUmJjgyODchPT1lJiY4Mjg4IT09ZSYmMTIyODghPT1lJiY2NTI3OSE9PWUpcmV0dXJuITE7cmV0dXJuITB9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiB0O2lmKCJzdHJpbmciPT09ZSl7dmFyIHI9dDtpZih0PSt0LDA9PT10JiZuKHIpKXJldHVybiExfWVsc2UgaWYoIm51bWJlciIhPT1lKXJldHVybiExO3JldHVybiAxPnQtdH19LHt9XSw3NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSl7dGhpcy5nbD10LHRoaXMudHlwZT1lLHRoaXMuaGFuZGxlPXIsdGhpcy5sZW5ndGg9bix0aGlzLnVzYWdlPWl9ZnVuY3Rpb24gaSh0LGUscixuLGksbyl7dmFyIGE9aS5sZW5ndGgqaS5CWVRFU19QRVJfRUxFTUVOVDtpZigwPm8pcmV0dXJuIHQuYnVmZmVyRGF0YShlLGksbiksYTtpZihhK28+cil0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjogSWYgcmVzaXppbmcgYnVmZmVyLCBtdXN0IG5vdCBzcGVjaWZ5IG9mZnNldCIpO3JldHVybiB0LmJ1ZmZlclN1YkRhdGEoZSxvLGkpLHJ9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj1sLm1hbGxvYyh0Lmxlbmd0aCxlKSxuPXQubGVuZ3RoLGk9MDtuPmk7KytpKXJbaV09dFtpXTtyZXR1cm4gcn1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPTEsbj1lLmxlbmd0aC0xO24+PTA7LS1uKXtpZihlW25dIT09cilyZXR1cm4hMTtyKj10W25dfXJldHVybiEwfWZ1bmN0aW9uIHModCxlLHIsaSl7aWYocj1yfHx0LkFSUkFZX0JVRkZFUixpPWl8fHQuRFlOQU1JQ19EUkFXLHIhPT10LkFSUkFZX0JVRkZFUiYmciE9PXQuRUxFTUVOVF9BUlJBWV9CVUZGRVIpdGhyb3cgbmV3IEVycm9yKCJnbC1idWZmZXI6IEludmFsaWQgdHlwZSBmb3Igd2ViZ2wgYnVmZmVyLCBtdXN0IGJlIGVpdGhlciBnbC5BUlJBWV9CVUZGRVIgb3IgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIiKTtpZihpIT09dC5EWU5BTUlDX0RSQVcmJmkhPT10LlNUQVRJQ19EUkFXJiZpIT09dC5TVFJFQU1fRFJBVyl0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjogSW52YWxpZCB1c2FnZSBmb3IgYnVmZmVyLCBtdXN0IGJlIGVpdGhlciBnbC5EWU5BTUlDX0RSQVcsIGdsLlNUQVRJQ19EUkFXIG9yIGdsLlNUUkVBTV9EUkFXIik7dmFyIG89dC5jcmVhdGVCdWZmZXIoKSxhPW5ldyBuKHQscixvLDAsaSk7cmV0dXJuIGEudXBkYXRlKGUpLGF9dmFyIGw9dCgidHlwZWRhcnJheS1wb29sIiksYz10KCJuZGFycmF5LW9wcyIpLHU9dCgibmRhcnJheSIpLGg9WyJ1aW50OCIsInVpbnQ4X2NsYW1wZWQiLCJ1aW50MTYiLCJ1aW50MzIiLCJpbnQ4IiwiaW50MTYiLCJpbnQzMiIsImZsb2F0MzIiXSxmPW4ucHJvdG90eXBlO2YuYmluZD1mdW5jdGlvbigpe3RoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLnR5cGUsdGhpcy5oYW5kbGUpfSxmLnVuYmluZD1mdW5jdGlvbigpe3RoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLnR5cGUsbnVsbCl9LGYuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2wuZGVsZXRlQnVmZmVyKHRoaXMuaGFuZGxlKX0sZi51cGRhdGU9ZnVuY3Rpb24odCxlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJihlPS0xKSx0aGlzLmJpbmQoKSwib2JqZWN0Ij09dHlwZW9mIHQmJiJ1bmRlZmluZWQiIT10eXBlb2YgdC5zaGFwZSl7dmFyIHI9dC5kdHlwZTtpZihoLmluZGV4T2Yocik8MCYmKHI9ImZsb2F0MzIiKSx0aGlzLnR5cGU9PT10aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSKXt2YXIgbj1nbC5nZXRFeHRlbnNpb24oIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTtyPW4mJiJ1aW50MTYiIT09cj8idWludDMyIjoidWludDE2In1pZihyPT09dC5kdHlwZSYmYSh0LnNoYXBlLHQuc3RyaWRlKSkwPT09dC5vZmZzZXQmJnQuZGF0YS5sZW5ndGg9PT10LnNoYXBlWzBdP3RoaXMubGVuZ3RoPWkodGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2FnZSx0LmRhdGEsZSk6dGhpcy5sZW5ndGg9aSh0aGlzLmdsLHRoaXMudHlwZSx0aGlzLmxlbmd0aCx0aGlzLnVzYWdlLHQuZGF0YS5zdWJhcnJheSh0Lm9mZnNldCx0LnNoYXBlWzBdKSxlKTtlbHNle3ZhciBzPWwubWFsbG9jKHQuc2l6ZSxyKSxmPXUocyx0LnNoYXBlKTtjLmFzc2lnbihmLHQpLDA+ZT90aGlzLmxlbmd0aD1pKHRoaXMuZ2wsdGhpcy50eXBlLHRoaXMubGVuZ3RoLHRoaXMudXNhZ2UscyxlKTp0aGlzLmxlbmd0aD1pKHRoaXMuZ2wsdGhpcy50eXBlLHRoaXMubGVuZ3RoLHRoaXMudXNhZ2Uscy5zdWJhcnJheSgwLHQuc2l6ZSksZSksbC5mcmVlKHMpfX1lbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBkO2Q9dGhpcy50eXBlPT09dGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUj9vKHQsInVpbnQxNiIpOm8odCwiZmxvYXQzMiIpLDA+ZT90aGlzLmxlbmd0aD1pKHRoaXMuZ2wsdGhpcy50eXBlLHRoaXMubGVuZ3RoLHRoaXMudXNhZ2UsZCxlKTp0aGlzLmxlbmd0aD1pKHRoaXMuZ2wsdGhpcy50eXBlLHRoaXMubGVuZ3RoLHRoaXMudXNhZ2UsZC5zdWJhcnJheSgwLHQubGVuZ3RoKSxlKSxsLmZyZWUoZCl9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpdGhpcy5sZW5ndGg9aSh0aGlzLmdsLHRoaXMudHlwZSx0aGlzLmxlbmd0aCx0aGlzLnVzYWdlLHQsZSk7ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIHQmJnZvaWQgMCE9PXQpdGhyb3cgbmV3IEVycm9yKCJnbC1idWZmZXI6IEludmFsaWQgZGF0YSB0eXBlIik7aWYoZT49MCl0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjogQ2Fubm90IHNwZWNpZnkgb2Zmc2V0IHdoZW4gcmVzaXppbmcgYnVmZmVyIik7dD0wfHQsMD49dCYmKHQ9MSksdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMudHlwZSwwfHQsdGhpcy51c2FnZSksdGhpcy5sZW5ndGg9dH19LGUuZXhwb3J0cz1zfSx7bmRhcnJheToyMTAsIm5kYXJyYXktb3BzIjoyMDksInR5cGVkYXJyYXktcG9vbCI6MjM1fV0sNzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dGhpcy5wbG90PXQsdGhpcy5zaGFkZXI9ZSx0aGlzLmJ1ZmZlcj1yLHRoaXMuYm91bmRzPVsxLzAsMS8wLC0oMS8wKSwtKDEvMCldLHRoaXMubnVtUG9pbnRzPTAsdGhpcy5jb2xvcj1bMCwwLDAsMV19ZnVuY3Rpb24gaSh0LGUpe3ZhciByPW8odC5nbCxsLnZlcnRleCxsLmZyYWdtZW50KSxpPWEodC5nbCkscz1uZXcgbih0LHIsaSk7cmV0dXJuIHMudXBkYXRlKGUpLHQuYWRkT2JqZWN0KHMpLHN9dmFyIG89dCgiZ2wtc2hhZGVyIiksYT10KCJnbC1idWZmZXIiKSxzPXQoInR5cGVkYXJyYXktcG9vbCIpLGw9dCgiLi9saWIvc2hhZGVycyIpO2UuZXhwb3J0cz1pO3ZhciBjPVtbMSwwLDAsMSwwLDBdLFsxLDAsMCwtMSwwLDBdLFstMSwwLDAsLTEsMCwwXSxbLTEsMCwwLC0xLDAsMF0sWy0xLDAsMCwxLDAsMF0sWzEsMCwwLDEsMCwwXSxbMSwwLC0xLDAsMCwxXSxbMSwwLC0xLDAsMCwtMV0sWzEsMCwxLDAsMCwtMV0sWzEsMCwxLDAsMCwtMV0sWzEsMCwxLDAsMCwxXSxbMSwwLC0xLDAsMCwxXSxbLTEsMCwtMSwwLDAsMV0sWy0xLDAsLTEsMCwwLC0xXSxbLTEsMCwxLDAsMCwtMV0sWy0xLDAsMSwwLDAsLTFdLFstMSwwLDEsMCwwLDFdLFstMSwwLC0xLDAsMCwxXSxbMCwxLDEsMCwwLDBdLFswLDEsLTEsMCwwLDBdLFswLC0xLC0xLDAsMCwwXSxbMCwtMSwtMSwwLDAsMF0sWzAsMSwxLDAsMCwwXSxbMCwtMSwxLDAsMCwwXSxbMCwxLDAsLTEsMSwwXSxbMCwxLDAsLTEsLTEsMF0sWzAsMSwwLDEsLTEsMF0sWzAsMSwwLDEsMSwwXSxbMCwxLDAsLTEsMSwwXSxbMCwxLDAsMSwtMSwwXSxbMCwtMSwwLC0xLDEsMF0sWzAsLTEsMCwtMSwtMSwwXSxbMCwtMSwwLDEsLTEsMF0sWzAsLTEsMCwxLDEsMF0sWzAsLTEsMCwtMSwxLDBdLFswLC0xLDAsMSwtMSwwXV0sdT1uLnByb3RvdHlwZTt1LmRyYXc9ZnVuY3Rpb24oKXt2YXIgdD1bMSwwLDAsMCwxLDAsMCwwLDFdLGU9WzEsMV07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wbG90LG49dGhpcy5zaGFkZXIsaT10aGlzLmJ1ZmZlcixvPXRoaXMuYm91bmRzLGE9dGhpcy5udW1Qb2ludHMscz0odGhpcy5jb2xvcixyLmdsKSxsPXIuZGF0YUJveCx1PXIudmlld0JveCxoPXIucGl4ZWxSYXRpbyxmPW9bMl0tb1swXSxkPW9bM10tb1sxXSxwPWxbMl0tbFswXSxnPWxbM10tbFsxXTt0WzBdPTIqZi9wLHRbNF09MipkL2csdFs2XT0yKihvWzBdLWxbMF0pL3AtMSx0WzddPTIqKG9bMV0tbFsxXSkvZy0xO3ZhciB2PXVbMl0tdVswXSxtPXVbM10tdVsxXTtlWzBdPTIqaC92LGVbMV09MipoL20saS5iaW5kKCksbi5iaW5kKCksbi51bmlmb3Jtcy52aWV3VHJhbnNmb3JtPXQsbi51bmlmb3Jtcy5waXhlbFNjYWxlPWUsbi51bmlmb3Jtcy5jb2xvcj10aGlzLmNvbG9yLG4uYXR0cmlidXRlcy5wb3NpdGlvbi5wb2ludGVyKHMuRkxPQVQsITEsMTYsMCksbi5hdHRyaWJ1dGVzLnBpeGVsT2Zmc2V0LnBvaW50ZXIocy5GTE9BVCwhMSwxNiw4KSxzLmRyYXdBcnJheXMocy5UUklBTkdMRVMsMCxhKmMubGVuZ3RoKX19KCksdS5kcmF3UGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdS5waWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGx9LHUudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dC5wb3NpdGlvbnN8fFtdLHI9dC5lcnJvcnN8fFtdLG49MTsibGluZVdpZHRoImluIHQmJihuPSt0LmxpbmVXaWR0aCk7dmFyIGk9NTsiY2FwU2l6ZSJpbiB0JiYoaT0rdC5jYXBTaXplKSx0aGlzLmNvbG9yPSh0LmNvbG9yfHxbMCwwLDAsMV0pLnNsaWNlKCk7Zm9yKHZhciBvPXRoaXMuYm91bmRzPVsxLzAsMS8wLC0oMS8wKSwtKDEvMCldLGE9dGhpcy5udW1Qb2ludHM9ZS5sZW5ndGg+PjEsbD0wO2E+bDsrK2wpe3ZhciB1PWVbMipsXSxoPWVbMipsKzFdO29bMF09TWF0aC5taW4odSxvWzBdKSxvWzFdPU1hdGgubWluKGgsb1sxXSksb1syXT1NYXRoLm1heCh1LG9bMl0pLG9bM109TWF0aC5tYXgoaCxvWzNdKX1vWzJdPT09b1swXSYmKG9bMl0rPTEpLG9bM109PT1vWzFdJiYob1szXSs9MSk7Zm9yKHZhciBmPTEvKG9bMl0tb1swXSksZD0xLyhvWzNdLW9bMV0pLHA9b1swXSxnPW9bMV0sdj1zLm1hbGxvY0Zsb2F0MzIoYSpjLmxlbmd0aCo0KSxtPTAsbD0wO2E+bDsrK2wpZm9yKHZhciB1PWVbMipsXSxoPWVbMipsKzFdLHk9cls0KmxdLGI9cls0KmwrMV0seD1yWzQqbCsyXSxfPXJbNCpsKzNdLHc9MDt3PGMubGVuZ3RoOysrdyl7dmFyIEE9Y1t3XSxrPUFbMF0sTT1BWzFdOzA+az9rKj15Oms+MCYmKGsqPWIpLDA+TT9NKj14Ok0+MCYmKE0qPV8pLHZbbSsrXT1mKih1LXArayksdlttKytdPWQqKGgtZytNKSx2W20rK109bipBWzJdKyhpK24pKkFbNF0sdlttKytdPW4qQVszXSsoaStuKSpBWzVdfXRoaXMuYnVmZmVyLnVwZGF0ZSh2KSxzLmZyZWUodil9LHUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMucGxvdC5yZW1vdmVPYmplY3QodGhpcyksdGhpcy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMuYnVmZmVyLmRpc3Bvc2UoKX19LHsiLi9saWIvc2hhZGVycyI6NzcsImdsLWJ1ZmZlciI6NzUsImdsLXNoYWRlciI6MTU0LCJ0eXBlZGFycmF5LXBvb2wiOjIzNX1dLDc3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXt2ZXJ0ZXg6InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjMiBwaXhlbE9mZnNldDtcblxudW5pZm9ybSBtYXQzIHZpZXdUcmFuc2Zvcm07XG51bmlmb3JtIHZlYzIgcGl4ZWxTY2FsZTtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIHNjclBvc2l0aW9uID0gdmlld1RyYW5zZm9ybSAqIHZlYzMocG9zaXRpb24sIDEpO1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQoXG4gICAgc2NyUG9zaXRpb24ueHkgKyBzY3JQb3NpdGlvbi56ICogcGl4ZWxTY2FsZSAqIHBpeGVsT2Zmc2V0LFxuICAgIDAsXG4gICAgc2NyUG9zaXRpb24ueik7XG59XG4iLApmcmFnbWVudDoicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG51bmlmb3JtIHZlYzQgY29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5yZ2IgKiBjb2xvci5hLCBjb2xvci5hKTtcbn1cbiJ9fSx7fV0sNzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuKXt0aGlzLmdsPXQsdGhpcy5zaGFkZXI9bix0aGlzLmJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0oMS8wKSwtKDEvMCksLSgxLzApXV0sdGhpcy5jbGlwQm91bmRzPVtbLSgxLzApLC0oMS8wKSwtKDEvMCldLFsxLzAsMS8wLDEvMF1dLHRoaXMubGluZVdpZHRoPVsxLDEsMV0sdGhpcy5jYXBTaXplPVsxMCwxMCwxMF0sdGhpcy5saW5lQ291bnQ9WzAsMCwwXSx0aGlzLmxpbmVPZmZzZXQ9WzAsMCwwXSx0aGlzLm9wYWNpdHk9MX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciByPTA7Mz5yOysrcil0WzBdW3JdPU1hdGgubWluKHRbMF1bcl0sZVtyXSksdFsxXVtyXT1NYXRoLm1heCh0WzFdW3JdLGVbcl0pfWZ1bmN0aW9uIG8odCxlLHIsbil7Zm9yKHZhciBpPWZbbl0sbz0wO288aS5sZW5ndGg7KytvKXt2YXIgYT1pW29dO3QucHVzaChlWzBdLGVbMV0sZVsyXSxyWzBdLHJbMV0sclsyXSxyWzNdLGFbMF0sYVsxXSxhWzJdKX1yZXR1cm4gaS5sZW5ndGh9ZnVuY3Rpb24gYSh0KXt2YXIgZT10LmdsLHI9cyhlKSxpPWwoZSxbe2J1ZmZlcjpyLHR5cGU6ZS5GTE9BVCxzaXplOjMsb2Zmc2V0OjAsc3RyaWRlOjQwfSx7YnVmZmVyOnIsdHlwZTplLkZMT0FULHNpemU6NCxvZmZzZXQ6MTIsc3RyaWRlOjQwfSx7YnVmZmVyOnIsdHlwZTplLkZMT0FULHNpemU6MyxvZmZzZXQ6Mjgsc3RyaWRlOjQwfV0pLG89YyhlKTtvLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxvLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MSxvLmF0dHJpYnV0ZXMub2Zmc2V0LmxvY2F0aW9uPTI7dmFyIGE9bmV3IG4oZSxyLGksbyk7cmV0dXJuIGEudXBkYXRlKHQpLGF9ZS5leHBvcnRzPWE7dmFyIHM9dCgiZ2wtYnVmZmVyIiksbD10KCJnbC12YW8iKSxjPXQoIi4vc2hhZGVycy9pbmRleCIpLHU9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdLGg9bi5wcm90b3R5cGU7aC5pc09wYXF1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk+PTF9LGguaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk8MX0saC5kcmF3VHJhbnNwYXJlbnQ9aC5kcmF3PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnNoYWRlci51bmlmb3Jtczt0aGlzLnNoYWRlci5iaW5kKCk7dmFyIG49ci52aWV3PXQudmlld3x8dSxpPXIucHJvamVjdGlvbj10LnByb2plY3Rpb258fHU7ci5tb2RlbD10Lm1vZGVsfHx1LHIuY2xpcEJvdW5kcz10aGlzLmNsaXBCb3VuZHMsci5vcGFjaXR5PXRoaXMub3BhY2l0eTt2YXIgbz1uWzEyXSxhPW5bMTNdLHM9blsxNF0sbD1uWzE1XSxjPXRoaXMucGl4ZWxSYXRpbyooaVszXSpvK2lbN10qYStpWzExXSpzK2lbMTVdKmwpL2UuZHJhd2luZ0J1ZmZlckhlaWdodDt0aGlzLnZhby5iaW5kKCk7Zm9yKHZhciBoPTA7Mz5oOysraCllLmxpbmVXaWR0aCh0aGlzLmxpbmVXaWR0aFtoXSksci5jYXBTaXplPXRoaXMuY2FwU2l6ZVtoXSpjLGUuZHJhd0FycmF5cyhlLkxJTkVTLHRoaXMubGluZU9mZnNldFtoXSx0aGlzLmxpbmVDb3VudFtoXSk7dGhpcy52YW8udW5iaW5kKCl9O3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBBcnJheSgzKSxlPTA7Mz5lOysrZSl7Zm9yKHZhciByPVtdLG49MTsyPj1uOysrbilmb3IodmFyIGk9LTE7MT49aTtpKz0yKXt2YXIgbz0obitlKSUzLGE9WzAsMCwwXTthW29dPWksci5wdXNoKGEpfXRbZV09cn1yZXR1cm4gdH0oKTtoLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9LCJsaW5lV2lkdGgiaW4gdCYmKHRoaXMubGluZVdpZHRoPXQubGluZVdpZHRoLEFycmF5LmlzQXJyYXkodGhpcy5saW5lV2lkdGgpfHwodGhpcy5saW5lV2lkdGg9W3RoaXMubGluZVdpZHRoLHRoaXMubGluZVdpZHRoLHRoaXMubGluZVdpZHRoXSkpLCJjYXBTaXplImluIHQmJih0aGlzLmNhcFNpemU9dC5jYXBTaXplLEFycmF5LmlzQXJyYXkodGhpcy5jYXBTaXplKXx8KHRoaXMuY2FwU2l6ZT1bdGhpcy5jYXBTaXplLHRoaXMuY2FwU2l6ZSx0aGlzLmNhcFNpemVdKSksIm9wYWNpdHkiaW4gdCYmKHRoaXMub3BhY2l0eT10Lm9wYWNpdHkpO3ZhciBlPXQuY29sb3J8fFtbMCwwLDBdLFswLDAsMF0sWzAsMCwwXV0scj10LnBvc2l0aW9uLG49dC5lcnJvcjtpZihBcnJheS5pc0FycmF5KGVbMF0pfHwoZT1bZSxlLGVdKSxyJiZuKXt2YXIgYT1bXSxzPXIubGVuZ3RoLGw9MDt0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLSgxLzApLC0oMS8wKSwtKDEvMCldXSx0aGlzLmxpbmVDb3VudD1bMCwwLDBdO2Zvcih2YXIgYz0wOzM+YzsrK2Mpe3RoaXMubGluZU9mZnNldFtjXT1sO3Q6Zm9yKHZhciB1PTA7cz51OysrdSl7Zm9yKHZhciBoPXJbdV0sZj0wOzM+ZjsrK2YpaWYoaXNOYU4oaFtmXSl8fCFpc0Zpbml0ZShoW2ZdKSljb250aW51ZSB0O3ZhciBkPW5bdV0scD1lW2NdO2lmKEFycmF5LmlzQXJyYXkocFswXSkmJihwPWVbdV0pLDM9PT1wLmxlbmd0aCYmKHA9W3BbMF0scFsxXSxwWzJdLDFdKSwhaXNOYU4oZFswXVtjXSkmJiFpc05hTihkWzFdW2NdKSl7aWYoZFswXVtjXTwwKXt2YXIgZz1oLnNsaWNlKCk7Z1tjXSs9ZFswXVtjXSxhLnB1c2goaFswXSxoWzFdLGhbMl0scFswXSxwWzFdLHBbMl0scFszXSwwLDAsMCxnWzBdLGdbMV0sZ1syXSxwWzBdLHBbMV0scFsyXSxwWzNdLDAsMCwwKSxpKHRoaXMuYm91bmRzLGcpLGwrPTIrbyhhLGcscCxjKX1pZihkWzFdW2NdPjApe3ZhciBnPWguc2xpY2UoKTtnW2NdKz1kWzFdW2NdLGEucHVzaChoWzBdLGhbMV0saFsyXSxwWzBdLHBbMV0scFsyXSxwWzNdLDAsMCwwLGdbMF0sZ1sxXSxnWzJdLHBbMF0scFsxXSxwWzJdLHBbM10sMCwwLDApLGkodGhpcy5ib3VuZHMsZyksbCs9MitvKGEsZyxwLGMpfX19dGhpcy5saW5lQ291bnRbY109bC10aGlzLmxpbmVPZmZzZXRbY119dGhpcy5idWZmZXIudXBkYXRlKGEpfX0saC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMuYnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCl9fSx7Ii4vc2hhZGVycy9pbmRleCI6NzksImdsLWJ1ZmZlciI6NzUsImdsLXZhbyI6MTg0fV0sNzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtc2hhZGVyIiksaT0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbiwgb2Zmc2V0O1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIGZsb2F0IGNhcFNpemU7XG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFyeWluZyB2ZWMzIGZyYWdQb3NpdGlvbjtcblxudm9pZCBtYWluKCkge1xuICB2ZWM0IHdvcmxkUG9zaXRpb24gID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICB3b3JsZFBvc2l0aW9uICAgICAgID0gKHdvcmxkUG9zaXRpb24gLyB3b3JsZFBvc2l0aW9uLncpICsgdmVjNChjYXBTaXplICogb2Zmc2V0LCAwLjApO1xuICBnbF9Qb3NpdGlvbiAgICAgICAgID0gcHJvamVjdGlvbiAqIHZpZXcgKiB3b3JsZFBvc2l0aW9uO1xuICBmcmFnQ29sb3IgICAgICAgICAgID0gY29sb3I7XG4gIGZyYWdQb3NpdGlvbiAgICAgICAgPSBwb3NpdGlvbjtcbn0iLG89InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIGZyYWdQb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYoYW55KGxlc3NUaGFuKGZyYWdQb3NpdGlvbiwgY2xpcEJvdW5kc1swXSkpIHx8IGFueShncmVhdGVyVGhhbihmcmFnUG9zaXRpb24sIGNsaXBCb3VuZHNbMV0pKSkge1xuICAgIGRpc2NhcmQ7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gb3BhY2l0eSAqIGZyYWdDb2xvcjtcbn0iO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbih0LGksbyxudWxsLFt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToib2Zmc2V0Iix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In1dKX19LHsiZ2wtc2hhZGVyIjoxNTR9XSw4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlPXQuZ2V0UGFyYW1ldGVyKHQuRlJBTUVCVUZGRVJfQklORElORykscj10LmdldFBhcmFtZXRlcih0LlJFTkRFUkJVRkZFUl9CSU5ESU5HKSxuPXQuZ2V0UGFyYW1ldGVyKHQuVEVYVFVSRV9CSU5ESU5HXzJEKTtyZXR1cm5bZSxyLG5dfWZ1bmN0aW9uIGkodCxlKXt0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLGVbMF0pLHQuYmluZFJlbmRlcmJ1ZmZlcih0LlJFTkRFUkJVRkZFUixlWzFdKSx0LmJpbmRUZXh0dXJlKHQuVEVYVFVSRV8yRCxlWzJdKX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9dC5nZXRQYXJhbWV0ZXIoZS5NQVhfQ09MT1JfQVRUQUNITUVOVFNfV0VCR0wpO3k9bmV3IEFycmF5KHIrMSk7Zm9yKHZhciBuPTA7cj49bjsrK24pe2Zvcih2YXIgaT1uZXcgQXJyYXkociksbz0wO24+bzsrK28paVtvXT10LkNPTE9SX0FUVEFDSE1FTlQwK287Zm9yKHZhciBvPW47cj5vOysrbylpW29dPXQuTk9ORTt5W25dPWl9fWZ1bmN0aW9uIGEodCl7c3dpdGNoKHQpe2Nhc2UgcDp0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogRnJhbWVidWZmZXIgdW5zdXBwb3J0ZWQiKTtjYXNlIGc6dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIGluY29tcGxldGUgYXR0YWNobWVudCIpO2Nhc2Ugdjp0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogRnJhbWVidWZmZXIgaW5jb21wbGV0ZSBkaW1lbnNpb25zIik7Y2FzZSBtOnRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIG1pc3NpbmcgYXR0YWNobWVudCIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIGZhaWxlZCBmb3IgdW5zcGVjaWZpZWQgcmVhc29uIil9fWZ1bmN0aW9uIHModCxlLHIsbixpLG8pe2lmKCFuKXJldHVybiBudWxsO3ZhciBhPWQodCxlLHIsaSxuKTtyZXR1cm4gYS5tYWdGaWx0ZXI9dC5ORUFSRVNULGEubWluRmlsdGVyPXQuTkVBUkVTVCxhLm1pcFNhbXBsZXM9MSxhLmJpbmQoKSx0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKHQuRlJBTUVCVUZGRVIsbyx0LlRFWFRVUkVfMkQsYS5oYW5kbGUsMCksYX1mdW5jdGlvbiBsKHQsZSxyLG4saSl7dmFyIG89dC5jcmVhdGVSZW5kZXJidWZmZXIoKTtyZXR1cm4gdC5iaW5kUmVuZGVyYnVmZmVyKHQuUkVOREVSQlVGRkVSLG8pLHQucmVuZGVyYnVmZmVyU3RvcmFnZSh0LlJFTkRFUkJVRkZFUixuLGUsciksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0LkZSQU1FQlVGRkVSLGksdC5SRU5ERVJCVUZGRVIsbyksb31mdW5jdGlvbiBjKHQpe3ZhciBlPW4odC5nbCkscj10LmdsLG89dC5oYW5kbGU9ci5jcmVhdGVGcmFtZWJ1ZmZlcigpLGM9dC5fc2hhcGVbMF0sdT10Ll9zaGFwZVsxXSxoPXQuY29sb3IubGVuZ3RoLGY9dC5fZXh0LGQ9dC5fdXNlU3RlbmNpbCxwPXQuX3VzZURlcHRoLGc9dC5fY29sb3JUeXBlO3IuYmluZEZyYW1lYnVmZmVyKHIuRlJBTUVCVUZGRVIsbyk7Zm9yKHZhciB2PTA7aD52Oysrdil0LmNvbG9yW3ZdPXMocixjLHUsZyxyLlJHQkEsci5DT0xPUl9BVFRBQ0hNRU5UMCt2KTswPT09aD8odC5fY29sb3JfcmI9bChyLGMsdSxyLlJHQkE0LHIuQ09MT1JfQVRUQUNITUVOVDApLGYmJmYuZHJhd0J1ZmZlcnNXRUJHTCh5WzBdKSk6aD4xJiZmLmRyYXdCdWZmZXJzV0VCR0woeVtoXSk7dmFyIG09ci5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKTttP2Q/dC5kZXB0aD1zKHIsYyx1LG0uVU5TSUdORURfSU5UXzI0XzhfV0VCR0wsci5ERVBUSF9TVEVOQ0lMLHIuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKTpwJiYodC5kZXB0aD1zKHIsYyx1LHIuVU5TSUdORURfU0hPUlQsci5ERVBUSF9DT01QT05FTlQsci5ERVBUSF9BVFRBQ0hNRU5UKSk6cCYmZD90Ll9kZXB0aF9yYj1sKHIsYyx1LHIuREVQVEhfU1RFTkNJTCxyLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCk6cD90Ll9kZXB0aF9yYj1sKHIsYyx1LHIuREVQVEhfQ09NUE9ORU5UMTYsci5ERVBUSF9BVFRBQ0hNRU5UKTpkJiYodC5fZGVwdGhfcmI9bChyLGMsdSxyLlNURU5DSUxfSU5ERVgsci5TVEVOQ0lMX0FUVEFDSE1FTlQpKTt2YXIgYj1yLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoci5GUkFNRUJVRkZFUik7aWYoYiE9PXIuRlJBTUVCVUZGRVJfQ09NUExFVEUpe3QuX2Rlc3Ryb3llZD0hMCxyLmJpbmRGcmFtZWJ1ZmZlcihyLkZSQU1FQlVGRkVSLG51bGwpLHIuZGVsZXRlRnJhbWVidWZmZXIodC5oYW5kbGUpLHQuaGFuZGxlPW51bGwsdC5kZXB0aCYmKHQuZGVwdGguZGlzcG9zZSgpLHQuZGVwdGg9bnVsbCksdC5fZGVwdGhfcmImJihyLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0Ll9kZXB0aF9yYiksdC5fZGVwdGhfcmI9bnVsbCk7Zm9yKHZhciB2PTA7djx0LmNvbG9yLmxlbmd0aDsrK3YpdC5jb2xvclt2XS5kaXNwb3NlKCksdC5jb2xvclt2XT1udWxsO3QuX2NvbG9yX3JiJiYoci5kZWxldGVSZW5kZXJidWZmZXIodC5fY29sb3JfcmIpLHQuX2NvbG9yX3JiPW51bGwpLGkocixlKSxhKGIpfWkocixlKX1mdW5jdGlvbiB1KHQsZSxyLG4saSxvLGEscyl7dGhpcy5nbD10LHRoaXMuX3NoYXBlPVswfGUsMHxyXSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZXh0PXMsdGhpcy5jb2xvcj1uZXcgQXJyYXkoaSk7Zm9yKHZhciBsPTA7aT5sOysrbCl0aGlzLmNvbG9yW2xdPW51bGw7dGhpcy5fY29sb3JfcmI9bnVsbCx0aGlzLmRlcHRoPW51bGwsdGhpcy5fZGVwdGhfcmI9bnVsbCx0aGlzLl9jb2xvclR5cGU9bix0aGlzLl91c2VEZXB0aD1vLHRoaXMuX3VzZVN0ZW5jaWw9YTt2YXIgdT10aGlzLGg9WzB8ZSwwfHJdO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGgsezA6e2dldDpmdW5jdGlvbigpe3JldHVybiB1Ll9zaGFwZVswXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB1LndpZHRoPXR9fSwxOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5fc2hhcGVbMV19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdS5oZWlnaHQ9dH19fSksdGhpcy5fc2hhcGVWZWN0b3I9aCxjKHRoaXMpfWZ1bmN0aW9uIGgodCxlLHIpe2lmKHQuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogQ2FuJ3QgcmVzaXplIGRlc3Ryb3llZCBGQk8iKTtpZih0Ll9zaGFwZVswXSE9PWV8fHQuX3NoYXBlWzFdIT09cil7dmFyIG89dC5nbCxzPW8uZ2V0UGFyYW1ldGVyKG8uTUFYX1JFTkRFUkJVRkZFUl9TSVpFKTtpZigwPmV8fGU+c3x8MD5yfHxyPnMpdGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IENhbid0IHJlc2l6ZSBGQk8sIGludmFsaWQgZGltZW5zaW9ucyIpO3QuX3NoYXBlWzBdPWUsdC5fc2hhcGVbMV09cjtmb3IodmFyIGw9bihvKSxjPTA7Yzx0LmNvbG9yLmxlbmd0aDsrK2MpdC5jb2xvcltjXS5zaGFwZT10Ll9zaGFwZTt0Ll9jb2xvcl9yYiYmKG8uYmluZFJlbmRlcmJ1ZmZlcihvLlJFTkRFUkJVRkZFUix0Ll9jb2xvcl9yYiksby5yZW5kZXJidWZmZXJTdG9yYWdlKG8uUkVOREVSQlVGRkVSLG8uUkdCQTQsdC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0pKSx0LmRlcHRoJiYodC5kZXB0aC5zaGFwZT10Ll9zaGFwZSksdC5fZGVwdGhfcmImJihvLmJpbmRSZW5kZXJidWZmZXIoby5SRU5ERVJCVUZGRVIsdC5fZGVwdGhfcmIpLHQuX3VzZURlcHRoJiZ0Ll91c2VTdGVuY2lsP28ucmVuZGVyYnVmZmVyU3RvcmFnZShvLlJFTkRFUkJVRkZFUixvLkRFUFRIX1NURU5DSUwsdC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0pOnQuX3VzZURlcHRoP28ucmVuZGVyYnVmZmVyU3RvcmFnZShvLlJFTkRFUkJVRkZFUixvLkRFUFRIX0NPTVBPTkVOVDE2LHQuX3NoYXBlWzBdLHQuX3NoYXBlWzFdKTp0Ll91c2VTdGVuY2lsJiZvLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uoby5SRU5ERVJCVUZGRVIsby5TVEVOQ0lMX0lOREVYLHQuX3NoYXBlWzBdLHQuX3NoYXBlWzFdKSksby5iaW5kRnJhbWVidWZmZXIoby5GUkFNRUJVRkZFUix0LmhhbmRsZSk7dmFyIHU9by5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKG8uRlJBTUVCVUZGRVIpO3UhPT1vLkZSQU1FQlVGRkVSX0NPTVBMRVRFJiYodC5kaXNwb3NlKCksaShvLGwpLGEodSkpLGkobyxsKX19ZnVuY3Rpb24gZih0LGUscixuKXtwfHwocD10LkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVELGc9dC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsdj10LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyxtPXQuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQpO3ZhciBpPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKTtpZigheSYmaSYmbyh0LGkpLEFycmF5LmlzQXJyYXkoZSkmJihuPXIscj0wfGVbMV0sZT0wfGVbMF0pLCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogTWlzc2luZyBzaGFwZSBwYXJhbWV0ZXIiKTt2YXIgYT10LmdldFBhcmFtZXRlcih0Lk1BWF9SRU5ERVJCVUZGRVJfU0laRSk7aWYoMD5lfHxlPmF8fDA+cnx8cj5hKXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBQYXJhbWV0ZXJzIGFyZSB0b28gbGFyZ2UgZm9yIEZCTyIpO249bnx8e307dmFyIHM9MTtpZigiY29sb3IiaW4gbil7aWYocz1NYXRoLm1heCgwfG4uY29sb3IsMCksMD5zKXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBNdXN0IHNwZWNpZnkgYSBub25uZWdhdGl2ZSBudW1iZXIgb2YgY29sb3JzIik7aWYocz4xKXtpZighaSl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogTXVsdGlwbGUgZHJhdyBidWZmZXIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiKTtpZihzPnQuZ2V0UGFyYW1ldGVyKGkuTUFYX0NPTE9SX0FUVEFDSE1FTlRTX1dFQkdMKSl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0ICIrcysiIGRyYXcgYnVmZmVycyIpfX12YXIgbD10LlVOU0lHTkVEX0JZVEUsYz10LmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXQiKTtpZihuLmZsb2F0JiZzPjApe2lmKCFjKXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgZmxvYXRpbmcgcG9pbnQgdGV4dHVyZXMiKTtsPXQuRkxPQVR9ZWxzZSBuLnByZWZlckZsb2F0JiZzPjAmJmMmJihsPXQuRkxPQVQpO3ZhciBoPSEwOyJkZXB0aCJpbiBuJiYoaD0hIW4uZGVwdGgpO3ZhciBmPSExO3JldHVybiJzdGVuY2lsImluIG4mJihmPSEhbi5zdGVuY2lsKSxuZXcgdSh0LGUscixsLHMsaCxmLGkpfXZhciBkPXQoImdsLXRleHR1cmUyZCIpO2UuZXhwb3J0cz1mO3ZhciBwLGcsdixtLHk9bnVsbCxiPXUucHJvdG90eXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGIse3NoYXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkP1swLDBdOnRoaXMuX3NoYXBlVmVjdG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KXx8KHQ9WzB8dCwwfHRdKSwyIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IFNoYXBlIHZlY3RvciBtdXN0IGJlIGxlbmd0aCAyIik7dmFyIGU9MHx0WzBdLHI9MHx0WzFdO3JldHVybiBoKHRoaXMsZSxyKSxbZSxyXX0sZW51bWVyYWJsZTohMX0sd2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXN0cm95ZWQ/MDp0aGlzLl9zaGFwZVswXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0PTB8dCxoKHRoaXMsdCx0aGlzLl9zaGFwZVsxXSksdH0sZW51bWVyYWJsZTohMX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkPzA6dGhpcy5fc2hhcGVbMV19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdD0wfHQsaCh0aGlzLHRoaXMuX3NoYXBlWzBdLHQpLHR9LGVudW1lcmFibGU6ITF9fSksYi5iaW5kPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2Rlc3Ryb3llZCl7dmFyIHQ9dGhpcy5nbDt0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLHRoaXMuaGFuZGxlKSx0LnZpZXdwb3J0KDAsMCx0aGlzLl9zaGFwZVswXSx0aGlzLl9zaGFwZVsxXSl9fSxiLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGVzdHJveWVkKXt0aGlzLl9kZXN0cm95ZWQ9ITA7dmFyIHQ9dGhpcy5nbDt0LmRlbGV0ZUZyYW1lYnVmZmVyKHRoaXMuaGFuZGxlKSx0aGlzLmhhbmRsZT1udWxsLHRoaXMuZGVwdGgmJih0aGlzLmRlcHRoLmRpc3Bvc2UoKSx0aGlzLmRlcHRoPW51bGwpLHRoaXMuX2RlcHRoX3JiJiYodC5kZWxldGVSZW5kZXJidWZmZXIodGhpcy5fZGVwdGhfcmIpLHRoaXMuX2RlcHRoX3JiPW51bGwpO2Zvcih2YXIgZT0wO2U8dGhpcy5jb2xvci5sZW5ndGg7KytlKXRoaXMuY29sb3JbZV0uZGlzcG9zZSgpLHRoaXMuY29sb3JbZV09bnVsbDt0aGlzLl9jb2xvcl9yYiYmKHQuZGVsZXRlUmVuZGVyYnVmZmVyKHRoaXMuX2NvbG9yX3JiKSx0aGlzLl9jb2xvcl9yYj1udWxsKX19fSx7ImdsLXRleHR1cmUyZCI6MTgwfV0sODE6W2Z1bmN0aW9uKHQsZSxyKXtyLmxpbmVWZXJ0ZXg9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgaW52ZXJzZV8xXzAoZmxvYXQgbSkge1xuICByZXR1cm4gMS4wIC8gbTtcbn1cblxubWF0MiBpbnZlcnNlXzFfMChtYXQyIG0pIHtcbiAgcmV0dXJuIG1hdDIobVsxXVsxXSwtbVswXVsxXSxcbiAgICAgICAgICAgICAtbVsxXVswXSwgbVswXVswXSkgLyAobVswXVswXSptWzFdWzFdIC0gbVswXVsxXSptWzFdWzBdKTtcbn1cblxubWF0MyBpbnZlcnNlXzFfMChtYXQzIG0pIHtcbiAgZmxvYXQgYTAwID0gbVswXVswXSwgYTAxID0gbVswXVsxXSwgYTAyID0gbVswXVsyXTtcbiAgZmxvYXQgYTEwID0gbVsxXVswXSwgYTExID0gbVsxXVsxXSwgYTEyID0gbVsxXVsyXTtcbiAgZmxvYXQgYTIwID0gbVsyXVswXSwgYTIxID0gbVsyXVsxXSwgYTIyID0gbVsyXVsyXTtcblxuICBmbG9hdCBiMDEgPSBhMjIgKiBhMTEgLSBhMTIgKiBhMjE7XG4gIGZsb2F0IGIxMSA9IC1hMjIgKiBhMTAgKyBhMTIgKiBhMjA7XG4gIGZsb2F0IGIyMSA9IGEyMSAqIGExMCAtIGExMSAqIGEyMDtcblxuICBmbG9hdCBkZXQgPSBhMDAgKiBiMDEgKyBhMDEgKiBiMTEgKyBhMDIgKiBiMjE7XG5cbiAgcmV0dXJuIG1hdDMoYjAxLCAoLWEyMiAqIGEwMSArIGEwMiAqIGEyMSksIChhMTIgKiBhMDEgLSBhMDIgKiBhMTEpLFxuICAgICAgICAgICAgICBiMTEsIChhMjIgKiBhMDAgLSBhMDIgKiBhMjApLCAoLWExMiAqIGEwMCArIGEwMiAqIGExMCksXG4gICAgICAgICAgICAgIGIyMSwgKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApLCAoYTExICogYTAwIC0gYTAxICogYTEwKSkgLyBkZXQ7XG59XG5cbm1hdDQgaW52ZXJzZV8xXzAobWF0NCBtKSB7XG4gIGZsb2F0XG4gICAgICBhMDAgPSBtWzBdWzBdLCBhMDEgPSBtWzBdWzFdLCBhMDIgPSBtWzBdWzJdLCBhMDMgPSBtWzBdWzNdLFxuICAgICAgYTEwID0gbVsxXVswXSwgYTExID0gbVsxXVsxXSwgYTEyID0gbVsxXVsyXSwgYTEzID0gbVsxXVszXSxcbiAgICAgIGEyMCA9IG1bMl1bMF0sIGEyMSA9IG1bMl1bMV0sIGEyMiA9IG1bMl1bMl0sIGEyMyA9IG1bMl1bM10sXG4gICAgICBhMzAgPSBtWzNdWzBdLCBhMzEgPSBtWzNdWzFdLCBhMzIgPSBtWzNdWzJdLCBhMzMgPSBtWzNdWzNdLFxuXG4gICAgICBiMDAgPSBhMDAgKiBhMTEgLSBhMDEgKiBhMTAsXG4gICAgICBiMDEgPSBhMDAgKiBhMTIgLSBhMDIgKiBhMTAsXG4gICAgICBiMDIgPSBhMDAgKiBhMTMgLSBhMDMgKiBhMTAsXG4gICAgICBiMDMgPSBhMDEgKiBhMTIgLSBhMDIgKiBhMTEsXG4gICAgICBiMDQgPSBhMDEgKiBhMTMgLSBhMDMgKiBhMTEsXG4gICAgICBiMDUgPSBhMDIgKiBhMTMgLSBhMDMgKiBhMTIsXG4gICAgICBiMDYgPSBhMjAgKiBhMzEgLSBhMjEgKiBhMzAsXG4gICAgICBiMDcgPSBhMjAgKiBhMzIgLSBhMjIgKiBhMzAsXG4gICAgICBiMDggPSBhMjAgKiBhMzMgLSBhMjMgKiBhMzAsXG4gICAgICBiMDkgPSBhMjEgKiBhMzIgLSBhMjIgKiBhMzEsXG4gICAgICBiMTAgPSBhMjEgKiBhMzMgLSBhMjMgKiBhMzEsXG4gICAgICBiMTEgPSBhMjIgKiBhMzMgLSBhMjMgKiBhMzIsXG5cbiAgICAgIGRldCA9IGIwMCAqIGIxMSAtIGIwMSAqIGIxMCArIGIwMiAqIGIwOSArIGIwMyAqIGIwOCAtIGIwNCAqIGIwNyArIGIwNSAqIGIwNjtcblxuICByZXR1cm4gbWF0NChcbiAgICAgIGExMSAqIGIxMSAtIGExMiAqIGIxMCArIGExMyAqIGIwOSxcbiAgICAgIGEwMiAqIGIxMCAtIGEwMSAqIGIxMSAtIGEwMyAqIGIwOSxcbiAgICAgIGEzMSAqIGIwNSAtIGEzMiAqIGIwNCArIGEzMyAqIGIwMyxcbiAgICAgIGEyMiAqIGIwNCAtIGEyMSAqIGIwNSAtIGEyMyAqIGIwMyxcbiAgICAgIGExMiAqIGIwOCAtIGExMCAqIGIxMSAtIGExMyAqIGIwNyxcbiAgICAgIGEwMCAqIGIxMSAtIGEwMiAqIGIwOCArIGEwMyAqIGIwNyxcbiAgICAgIGEzMiAqIGIwMiAtIGEzMCAqIGIwNSAtIGEzMyAqIGIwMSxcbiAgICAgIGEyMCAqIGIwNSAtIGEyMiAqIGIwMiArIGEyMyAqIGIwMSxcbiAgICAgIGExMCAqIGIxMCAtIGExMSAqIGIwOCArIGExMyAqIGIwNixcbiAgICAgIGEwMSAqIGIwOCAtIGEwMCAqIGIxMCAtIGEwMyAqIGIwNixcbiAgICAgIGEzMCAqIGIwNCAtIGEzMSAqIGIwMiArIGEzMyAqIGIwMCxcbiAgICAgIGEyMSAqIGIwMiAtIGEyMCAqIGIwNCAtIGEyMyAqIGIwMCxcbiAgICAgIGExMSAqIGIwNyAtIGExMCAqIGIwOSAtIGExMiAqIGIwNixcbiAgICAgIGEwMCAqIGIwOSAtIGEwMSAqIGIwNyArIGEwMiAqIGIwNixcbiAgICAgIGEzMSAqIGIwMSAtIGEzMCAqIGIwMyAtIGEzMiAqIGIwMCxcbiAgICAgIGEyMCAqIGIwMyAtIGEyMSAqIGIwMSArIGEyMiAqIGIwMCkgLyBkZXQ7XG59XG5cblxuXG5hdHRyaWJ1dGUgdmVjMiBhLCBkO1xuXG51bmlmb3JtIG1hdDMgbWF0cml4O1xudW5pZm9ybSB2ZWMyIHNjcmVlblNoYXBlO1xudW5pZm9ybSBmbG9hdCB3aWR0aDtcblxudmFyeWluZyB2ZWMyIGRpcmVjdGlvbjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMyIGRpciA9IChtYXRyaXggKiB2ZWMzKGQsIDApKS54eTtcbiAgdmVjMyBiYXNlID0gbWF0cml4ICogdmVjMyhhLCAxKTtcbiAgdmVjMiBuID0gMC41ICogd2lkdGggKlxuICAgIG5vcm1hbGl6ZShzY3JlZW5TaGFwZS55eCAqIHZlYzIoZGlyLnksIC1kaXIueCkpIC8gc2NyZWVuU2hhcGUueHk7XG4gIHZlYzIgdGFuZ2VudCA9IG5vcm1hbGl6ZShzY3JlZW5TaGFwZS54eSAqIGRpcik7XG4gIGlmKGRpci54IDwgMC4wIHx8IChkaXIueCA9PSAwLjAgJiYgZGlyLnkgPCAwLjApKSB7XG4gICAgZGlyZWN0aW9uID0gLXRhbmdlbnQ7XG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0aW9uID0gdGFuZ2VudDtcbiAgfVxuICBnbF9Qb3NpdGlvbiA9IHZlYzQoYmFzZS54eS9iYXNlLnogKyBuLCAwLCAxKTtcbn1cbiIsci5saW5lRnJhZ21lbnQ9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yO1xudW5pZm9ybSB2ZWMyIHNjcmVlblNoYXBlO1xudW5pZm9ybSBzYW1wbGVyMkQgZGFzaFBhdHRlcm47XG51bmlmb3JtIGZsb2F0IGRhc2hMZW5ndGg7XG5cbnZhcnlpbmcgdmVjMiBkaXJlY3Rpb247XG5cbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgdCA9IGZyYWN0KGRvdChkaXJlY3Rpb24sIGdsX0ZyYWdDb29yZC54eSkgLyBkYXNoTGVuZ3RoKTtcbiAgdmVjNCBwY29sb3IgPSBjb2xvciAqIHRleHR1cmUyRChkYXNoUGF0dGVybiwgdmVjMih0LCAwLjApKS5yO1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBjb2xvci5yZ2IgKiBwY29sb3IuYSwgcGNvbG9yLmEpO1xufVxuIixyLm1pdHJlVmVydGV4PSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHA7XG5cbnVuaWZvcm0gbWF0MyAgbWF0cml4O1xudW5pZm9ybSB2ZWMyIHNjcmVlblNoYXBlO1xudW5pZm9ybSBmbG9hdCByYWRpdXM7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBwcCA9IG1hdHJpeCAqIHZlYzMocCwgMSk7XG4gIGdsX1Bvc2l0aW9uICA9IHZlYzQocHAueHksIDAsIHBwLnopO1xuICBnbF9Qb2ludFNpemUgPSByYWRpdXM7XG59XG4iLHIubWl0cmVGcmFnbWVudD0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG51bmlmb3JtIHZlYzQgY29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYobGVuZ3RoKGdsX1BvaW50Q29vcmQueHkgLSAwLjUpID4gMC4yNSkge1xuICAgIGRpc2NhcmQ7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5yZ2IsIGNvbG9yLmEpO1xufVxuIixyLnBpY2tWZXJ0ZXg9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgYSwgZDtcbmF0dHJpYnV0ZSB2ZWM0IHBpY2swLCBwaWNrMTtcblxudW5pZm9ybSBtYXQzIG1hdHJpeDtcbnVuaWZvcm0gdmVjMiBzY3JlZW5TaGFwZTtcbnVuaWZvcm0gZmxvYXQgd2lkdGg7XG5cbnZhcnlpbmcgdmVjNCBwaWNrQSwgcGlja0I7XG5cbmZsb2F0IGludmVyc2VfMV8wKGZsb2F0IG0pIHtcbiAgcmV0dXJuIDEuMCAvIG07XG59XG5cbm1hdDIgaW52ZXJzZV8xXzAobWF0MiBtKSB7XG4gIHJldHVybiBtYXQyKG1bMV1bMV0sLW1bMF1bMV0sXG4gICAgICAgICAgICAgLW1bMV1bMF0sIG1bMF1bMF0pIC8gKG1bMF1bMF0qbVsxXVsxXSAtIG1bMF1bMV0qbVsxXVswXSk7XG59XG5cbm1hdDMgaW52ZXJzZV8xXzAobWF0MyBtKSB7XG4gIGZsb2F0IGEwMCA9IG1bMF1bMF0sIGEwMSA9IG1bMF1bMV0sIGEwMiA9IG1bMF1bMl07XG4gIGZsb2F0IGExMCA9IG1bMV1bMF0sIGExMSA9IG1bMV1bMV0sIGExMiA9IG1bMV1bMl07XG4gIGZsb2F0IGEyMCA9IG1bMl1bMF0sIGEyMSA9IG1bMl1bMV0sIGEyMiA9IG1bMl1bMl07XG5cbiAgZmxvYXQgYjAxID0gYTIyICogYTExIC0gYTEyICogYTIxO1xuICBmbG9hdCBiMTEgPSAtYTIyICogYTEwICsgYTEyICogYTIwO1xuICBmbG9hdCBiMjEgPSBhMjEgKiBhMTAgLSBhMTEgKiBhMjA7XG5cbiAgZmxvYXQgZGV0ID0gYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxO1xuXG4gIHJldHVybiBtYXQzKGIwMSwgKC1hMjIgKiBhMDEgKyBhMDIgKiBhMjEpLCAoYTEyICogYTAxIC0gYTAyICogYTExKSxcbiAgICAgICAgICAgICAgYjExLCAoYTIyICogYTAwIC0gYTAyICogYTIwKSwgKC1hMTIgKiBhMDAgKyBhMDIgKiBhMTApLFxuICAgICAgICAgICAgICBiMjEsICgtYTIxICogYTAwICsgYTAxICogYTIwKSwgKGExMSAqIGEwMCAtIGEwMSAqIGExMCkpIC8gZGV0O1xufVxuXG5tYXQ0IGludmVyc2VfMV8wKG1hdDQgbSkge1xuICBmbG9hdFxuICAgICAgYTAwID0gbVswXVswXSwgYTAxID0gbVswXVsxXSwgYTAyID0gbVswXVsyXSwgYTAzID0gbVswXVszXSxcbiAgICAgIGExMCA9IG1bMV1bMF0sIGExMSA9IG1bMV1bMV0sIGExMiA9IG1bMV1bMl0sIGExMyA9IG1bMV1bM10sXG4gICAgICBhMjAgPSBtWzJdWzBdLCBhMjEgPSBtWzJdWzFdLCBhMjIgPSBtWzJdWzJdLCBhMjMgPSBtWzJdWzNdLFxuICAgICAgYTMwID0gbVszXVswXSwgYTMxID0gbVszXVsxXSwgYTMyID0gbVszXVsyXSwgYTMzID0gbVszXVszXSxcblxuICAgICAgYjAwID0gYTAwICogYTExIC0gYTAxICogYTEwLFxuICAgICAgYjAxID0gYTAwICogYTEyIC0gYTAyICogYTEwLFxuICAgICAgYjAyID0gYTAwICogYTEzIC0gYTAzICogYTEwLFxuICAgICAgYjAzID0gYTAxICogYTEyIC0gYTAyICogYTExLFxuICAgICAgYjA0ID0gYTAxICogYTEzIC0gYTAzICogYTExLFxuICAgICAgYjA1ID0gYTAyICogYTEzIC0gYTAzICogYTEyLFxuICAgICAgYjA2ID0gYTIwICogYTMxIC0gYTIxICogYTMwLFxuICAgICAgYjA3ID0gYTIwICogYTMyIC0gYTIyICogYTMwLFxuICAgICAgYjA4ID0gYTIwICogYTMzIC0gYTIzICogYTMwLFxuICAgICAgYjA5ID0gYTIxICogYTMyIC0gYTIyICogYTMxLFxuICAgICAgYjEwID0gYTIxICogYTMzIC0gYTIzICogYTMxLFxuICAgICAgYjExID0gYTIyICogYTMzIC0gYTIzICogYTMyLFxuXG4gICAgICBkZXQgPSBiMDAgKiBiMTEgLSBiMDEgKiBiMTAgKyBiMDIgKiBiMDkgKyBiMDMgKiBiMDggLSBiMDQgKiBiMDcgKyBiMDUgKiBiMDY7XG5cbiAgcmV0dXJuIG1hdDQoXG4gICAgICBhMTEgKiBiMTEgLSBhMTIgKiBiMTAgKyBhMTMgKiBiMDksXG4gICAgICBhMDIgKiBiMTAgLSBhMDEgKiBiMTEgLSBhMDMgKiBiMDksXG4gICAgICBhMzEgKiBiMDUgLSBhMzIgKiBiMDQgKyBhMzMgKiBiMDMsXG4gICAgICBhMjIgKiBiMDQgLSBhMjEgKiBiMDUgLSBhMjMgKiBiMDMsXG4gICAgICBhMTIgKiBiMDggLSBhMTAgKiBiMTEgLSBhMTMgKiBiMDcsXG4gICAgICBhMDAgKiBiMTEgLSBhMDIgKiBiMDggKyBhMDMgKiBiMDcsXG4gICAgICBhMzIgKiBiMDIgLSBhMzAgKiBiMDUgLSBhMzMgKiBiMDEsXG4gICAgICBhMjAgKiBiMDUgLSBhMjIgKiBiMDIgKyBhMjMgKiBiMDEsXG4gICAgICBhMTAgKiBiMTAgLSBhMTEgKiBiMDggKyBhMTMgKiBiMDYsXG4gICAgICBhMDEgKiBiMDggLSBhMDAgKiBiMTAgLSBhMDMgKiBiMDYsXG4gICAgICBhMzAgKiBiMDQgLSBhMzEgKiBiMDIgKyBhMzMgKiBiMDAsXG4gICAgICBhMjEgKiBiMDIgLSBhMjAgKiBiMDQgLSBhMjMgKiBiMDAsXG4gICAgICBhMTEgKiBiMDcgLSBhMTAgKiBiMDkgLSBhMTIgKiBiMDYsXG4gICAgICBhMDAgKiBiMDkgLSBhMDEgKiBiMDcgKyBhMDIgKiBiMDYsXG4gICAgICBhMzEgKiBiMDEgLSBhMzAgKiBiMDMgLSBhMzIgKiBiMDAsXG4gICAgICBhMjAgKiBiMDMgLSBhMjEgKiBiMDEgKyBhMjIgKiBiMDApIC8gZGV0O1xufVxuXG5cblxudm9pZCBtYWluKCkge1xuICB2ZWMzIGJhc2UgPSBtYXRyaXggKiB2ZWMzKGEsIDEpO1xuICB2ZWMyIG4gPSB3aWR0aCAqXG4gICAgbm9ybWFsaXplKHNjcmVlblNoYXBlLnl4ICogdmVjMihkLnksIC1kLngpKSAvIHNjcmVlblNoYXBlLnh5O1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQoYmFzZS54eS9iYXNlLnogKyBuLCAwLCAxKTtcbiAgcGlja0EgPSBwaWNrMDtcbiAgcGlja0IgPSBwaWNrMTtcbn1cbiIsci5waWNrRnJhZ21lbnQ9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IHBpY2tPZmZzZXQ7XG5cbnZhcnlpbmcgdmVjNCBwaWNrQSwgcGlja0I7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjNCBmcmFnSWQgPSB2ZWM0KHBpY2tBLnh5eiwgMC4wKTtcbiAgaWYocGlja0IudyA+IHBpY2tBLncpIHtcbiAgICBmcmFnSWQueHl6ID0gcGlja0IueHl6O1xuICB9XG5cbiAgZnJhZ0lkICs9IHBpY2tPZmZzZXQ7XG5cbiAgZnJhZ0lkLnkgKz0gZmxvb3IoZnJhZ0lkLnggLyAyNTYuMCk7XG4gIGZyYWdJZC54IC09IGZsb29yKGZyYWdJZC54IC8gMjU2LjApICogMjU2LjA7XG5cbiAgZnJhZ0lkLnogKz0gZmxvb3IoZnJhZ0lkLnkgLyAyNTYuMCk7XG4gIGZyYWdJZC55IC09IGZsb29yKGZyYWdJZC55IC8gMjU2LjApICogMjU2LjA7XG5cbiAgZnJhZ0lkLncgKz0gZmxvb3IoZnJhZ0lkLnogLyAyNTYuMCk7XG4gIGZyYWdJZC56IC09IGZsb29yKGZyYWdJZC56IC8gMjU2LjApICogMjU2LjA7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gZnJhZ0lkIC8gMjU1LjA7XG59XG4iLHIuZmlsbFZlcnRleD0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBhLCBkO1xuXG51bmlmb3JtIG1hdDMgbWF0cml4O1xudW5pZm9ybSB2ZWMyIHByb2plY3RBeGlzO1xudW5pZm9ybSBmbG9hdCBwcm9qZWN0VmFsdWU7XG51bmlmb3JtIGZsb2F0IGRlcHRoO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgYmFzZSA9IG1hdHJpeCAqIHZlYzMoYSwgMSk7XG4gIHZlYzIgcCA9IGJhc2UueHkgLyBiYXNlLno7XG4gIGlmKGQueSA8IDAuMCB8fCAoZC55ID09IDAuMCAmJiBkLnggPCAwLjApKSB7XG4gICAgaWYoZG90KHAsIHByb2plY3RBeGlzKSA8IHByb2plY3RWYWx1ZSkge1xuICAgICAgcCA9IHAgKiAoMS4wIC0gYWJzKHByb2plY3RBeGlzKSkgKyBwcm9qZWN0QXhpcyAqIHByb2plY3RWYWx1ZTtcbiAgICB9XG4gIH1cbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHAsIGRlcHRoLCAxKTtcbn1cbiIsci5maWxsRnJhZ21lbnQ9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IucmdiICogY29sb3IuYSwgY29sb3IuYSk7XG59XG4ifSx7fV0sODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGksbyxhLHMpe3RoaXMucGxvdD10LHRoaXMuZGFzaFBhdHRlcm49ZSx0aGlzLmxpbmVCdWZmZXI9cix0aGlzLnBpY2tCdWZmZXI9bix0aGlzLmxpbmVTaGFkZXI9aSx0aGlzLm1pdHJlU2hhZGVyPW8sdGhpcy5maWxsU2hhZGVyPWEsdGhpcy5waWNrU2hhZGVyPXMsdGhpcy51c2luZ0Rhc2hlcz0hMSx0aGlzLmJvdW5kcz1bMS8wLDEvMCwtKDEvMCksLSgxLzApXSx0aGlzLndpZHRoPTEsdGhpcy5jb2xvcj1bMCwwLDEsMV0sdGhpcy5maWxsPVshMSwhMSwhMSwhMV0sdGhpcy5maWxsQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5kYXRhPW51bGwsdGhpcy5udW1Qb2ludHM9MCx0aGlzLnZlcnRDb3VudD0wLHRoaXMucGlja09mZnNldD0wLHRoaXMubG9kQnVmZmVyPVtdfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCl9KX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9dC5nbCxpPXMociksbz1zKHIpLGM9bChyLFsxLDFdKSx1PWEocixoLmxpbmVWZXJ0ZXgsaC5saW5lRnJhZ21lbnQpLGY9YShyLGgubWl0cmVWZXJ0ZXgsaC5taXRyZUZyYWdtZW50KSxkPWEocixoLmZpbGxWZXJ0ZXgsaC5maWxsRnJhZ21lbnQpLHA9YShyLGgucGlja1ZlcnRleCxoLnBpY2tGcmFnbWVudCksZz1uZXcgbih0LGMsaSxvLHUsZixkLHApO3JldHVybiB0LmFkZE9iamVjdChnKSxnLnVwZGF0ZShlKSxnfWUuZXhwb3J0cz1vO3ZhciBhPXQoImdsLXNoYWRlciIpLHM9dCgiZ2wtYnVmZmVyIiksbD10KCJnbC10ZXh0dXJlMmQiKSxjPXQoIm5kYXJyYXkiKSx1PXQoInR5cGVkYXJyYXktcG9vbCIpLGg9dCgiLi9saWIvc2hhZGVycyIpLGY9bi5wcm90b3R5cGU7Zi5kcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMCwwLDAsMSwwLDAsMCwxXSxlPVswLDBdLHI9WzEsMF0sbj1bLTEsMF0saT1bMCwxXSxvPVswLC0xXTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBsb3Qscz10aGlzLmNvbG9yLGw9dGhpcy53aWR0aCxjPSh0aGlzLm51bVBvaW50cyx0aGlzLmJvdW5kcyksdT10aGlzLnZlcnRDb3VudDtpZih1KXt2YXIgaD1hLmdsLGY9YS52aWV3Qm94LGQ9YS5kYXRhQm94LHA9YS5waXhlbFJhdGlvLGc9Y1syXS1jWzBdLHY9Y1szXS1jWzFdLG09ZFsyXS1kWzBdLHk9ZFszXS1kWzFdLGI9ZlsyXS1mWzBdLHg9ZlszXS1mWzFdO3RbMF09MipnL20sdFs0XT0yKnYveSx0WzZdPTIqKGNbMF0tZFswXSkvbS0xLHRbN109MiooY1sxXS1kWzFdKS95LTEsZVswXT1iLGVbMV09eDt2YXIgXz10aGlzLmxpbmVCdWZmZXI7Xy5iaW5kKCk7dmFyIHc9dGhpcy5maWxsO2lmKHdbMF18fHdbMV18fHdbMl18fHdbM10pe3ZhciBBPXRoaXMuZmlsbFNoYWRlcjtBLmJpbmQoKTt2YXIgaz1BLnVuaWZvcm1zO2subWF0cml4PXQsay5kZXB0aD1hLm5leHREZXB0aFZhbHVlKCk7dmFyIE09QS5hdHRyaWJ1dGVzO00uYS5wb2ludGVyKGguRkxPQVQsITEsMTYsMCksTS5kLnBvaW50ZXIoaC5GTE9BVCwhMSwxNiw4KSxoLmRlcHRoTWFzayghMCksaC5lbmFibGUoaC5ERVBUSF9URVNUKTt2YXIgVD10aGlzLmZpbGxDb2xvcjt3WzBdJiYoay5jb2xvcj1UWzBdLGsucHJvamVjdEF4aXM9bixrLnByb2plY3RWYWx1ZT0xLGguZHJhd0FycmF5cyhoLlRSSUFOR0xFUywwLHUpKSx3WzFdJiYoay5jb2xvcj1UWzFdLGsucHJvamVjdEF4aXM9byxrLnByb2plY3RWYWx1ZT0xLGguZHJhd0FycmF5cyhoLlRSSUFOR0xFUywwLHUpKSx3WzJdJiYoay5jb2xvcj1UWzJdLGsucHJvamVjdEF4aXM9cixrLnByb2plY3RWYWx1ZT0xLGguZHJhd0FycmF5cyhoLlRSSUFOR0xFUywwLHUpKSx3WzNdJiYoay5jb2xvcj1UWzNdLGsucHJvamVjdEF4aXM9aSxrLnByb2plY3RWYWx1ZT0xLGguZHJhd0FycmF5cyhoLlRSSUFOR0xFUywwLHUpKSxoLmRlcHRoTWFzayghMSksaC5kaXNhYmxlKGguREVQVEhfVEVTVCl9dmFyIEU9dGhpcy5saW5lU2hhZGVyO0UuYmluZCgpO3ZhciBMPUUudW5pZm9ybXM7TC5tYXRyaXg9dCxMLmNvbG9yPXMsTC53aWR0aD1sKnAsTC5zY3JlZW5TaGFwZT1lLEwuZGFzaFBhdHRlcm49dGhpcy5kYXNoUGF0dGVybi5iaW5kKCksTC5kYXNoTGVuZ3RoPXRoaXMuZGFzaExlbmd0aCpwO3ZhciBTPUUuYXR0cmlidXRlcztpZihTLmEucG9pbnRlcihoLkZMT0FULCExLDE2LDApLFMuZC5wb2ludGVyKGguRkxPQVQsITEsMTYsOCksaC5kcmF3QXJyYXlzKGguVFJJQU5HTEVTLDAsdSksbD4yJiYhdGhpcy51c2luZ0Rhc2hlcyl7dmFyIEM9dGhpcy5taXRyZVNoYWRlcjtDLmJpbmQoKTt2YXIgUD1DLnVuaWZvcm1zO1AubWF0cml4PXQsUC5jb2xvcj1zLFAuc2NyZWVuU2hhcGU9ZSxQLnJhZGl1cz1sKnAsQy5hdHRyaWJ1dGVzLnAucG9pbnRlcihoLkZMT0FULCExLDQ4LDApLGguZHJhd0FycmF5cyhoLlBPSU5UUywwLHUvM3wwKX19fX0oKSxmLmRyYXdQaWNrPWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMCwwLDAsMSwwLDAsMCwxXSxlPVswLDBdLHI9WzAsMCwwLDBdO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT10aGlzLnBsb3Qsbz10aGlzLnBpY2tTaGFkZXIsYT10aGlzLmxpbmVCdWZmZXIscz10aGlzLnBpY2tCdWZmZXIsbD10aGlzLndpZHRoLGM9dGhpcy5udW1Qb2ludHMsdT10aGlzLmJvdW5kcyxoPXRoaXMudmVydENvdW50LGY9aS5nbCxkPWkudmlld0JveCxwPWkuZGF0YUJveCxnPWkucGlja1BpeGVsUmF0aW8sdj11WzJdLXVbMF0sbT11WzNdLXVbMV0seT1wWzJdLXBbMF0sYj1wWzNdLXBbMV0seD1kWzJdLWRbMF0sXz1kWzNdLWRbMV07aWYodGhpcy5waWNrT2Zmc2V0PW4sIWgpcmV0dXJuIG4rYzt0WzBdPTIqdi95LHRbNF09MiptL2IsdFs2XT0yKih1WzBdLXBbMF0pL3ktMSx0WzddPTIqKHVbMV0tcFsxXSkvYi0xLGVbMF09eCxlWzFdPV8sclswXT0yNTUmbixyWzFdPW4+Pj44JjI1NSxyWzJdPW4+Pj4xNiYyNTUsclszXT1uPj4+MjQsby5iaW5kKCk7dmFyIHc9by51bmlmb3Jtczt3Lm1hdHJpeD10LHcud2lkdGg9bCpnLHcucGlja09mZnNldD1yLHcuc2NyZWVuU2hhcGU9ZTt2YXIgQT1vLmF0dHJpYnV0ZXM7cmV0dXJuIGEuYmluZCgpLEEuYS5wb2ludGVyKGYuRkxPQVQsITEsMTYsMCksQS5kLnBvaW50ZXIoZi5GTE9BVCwhMSwxNiw4KSxzLmJpbmQoKSxBLnBpY2swLnBvaW50ZXIoZi5VTlNJR05FRF9CWVRFLCExLDgsMCksQS5waWNrMS5wb2ludGVyKGYuVU5TSUdORURfQllURSwhMSw4LDQpLGYuZHJhd0FycmF5cyhmLlRSSUFOR0xFUywwLGgpLG4rY319KCksZi5waWNrPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnBpY2tPZmZzZXQsaT10aGlzLm51bVBvaW50cztpZihuPnJ8fHI+PW4raSlyZXR1cm4gbnVsbDt2YXIgbz1yLW4sYT10aGlzLmRhdGE7cmV0dXJue29iamVjdDp0aGlzLHBvaW50SWQ6byxkYXRhQ29vcmQ6W2FbMipvXSxhWzIqbysxXV19fSxmLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9O3ZhciBlPXRoaXMucGxvdC5nbDt0aGlzLmNvbG9yPSh0LmNvbG9yfHxbMCwwLDEsMV0pLnNsaWNlKCksdGhpcy53aWR0aD0rKHQud2lkdGh8fDEpLHRoaXMuZmlsbD0odC5maWxsfHxbITEsITEsITEsITFdKS5zbGljZSgpLHRoaXMuZmlsbENvbG9yPWkodC5maWxsQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dKTtmb3IodmFyIHI9dC5kYXNoZXN8fFsxXSxuPTAsbz0wO288ci5sZW5ndGg7KytvKW4rPXJbb107Zm9yKHZhciBhPXUubWFsbG9jVWludDgobikscz0wLGg9MjU1LG89MDtvPHIubGVuZ3RoOysrbyl7Zm9yKHZhciBmPTA7ZjxyW29dOysrZilhW3MrK109aDtoXj0yNTV9dGhpcy5kYXNoUGF0dGVybi5kaXNwb3NlKCksdGhpcy51c2luZ0Rhc2hlcz1yLmxlbmd0aD4xLHRoaXMuZGFzaFBhdHRlcm49bChlLGMoYSxbbiwxLDRdLFsxLDAsMF0pKSx0aGlzLmRhc2hQYXR0ZXJuLm1pbkZpbHRlcj1lLk5FQVJFU1QsdGhpcy5kYXNoUGF0dGVybi5tYWdGaWx0ZXI9ZS5ORUFSRVNULHRoaXMuZGFzaExlbmd0aD1uLHUuZnJlZShhKTt2YXIgZD10LnBvc2l0aW9uczt0aGlzLmRhdGE9ZDt2YXIgcD10aGlzLmJvdW5kcztwWzBdPXBbMV09MS8wLHBbMl09cFszXT0tKDEvMCk7dmFyIGc9dGhpcy5udW1Qb2ludHM9ZC5sZW5ndGg+Pj4xO2lmKDAhPT1nKXtmb3IodmFyIG89MDtnPm87KytvKXt2YXIgdj1kWzIqb10sbT1kWzIqbysxXTtwWzBdPU1hdGgubWluKHBbMF0sdikscFsxXT1NYXRoLm1pbihwWzFdLG0pLHBbMl09TWF0aC5tYXgocFsyXSx2KSxwWzNdPU1hdGgubWF4KHBbM10sbSl9cFswXT09PXBbMl0mJihwWzJdKz0xKSxwWzNdPT09cFsxXSYmKHBbM10rPTEpO3ZhciB5PXUubWFsbG9jRmxvYXQzMigyNCooZy0xKSksYj11Lm1hbGxvY1VpbnQzMigxMiooZy0xKSkseD15Lmxlbmd0aCxfPWIubGVuZ3RoLHM9Zztmb3IodGhpcy52ZXJ0Q291bnQ9NiooZy0xKTtzPjE7KXt2YXIgdz0tLXMsdj1kWzIqc10sbT1kWzIqcysxXTt2PSh2LXBbMF0pLyhwWzJdLXBbMF0pLG09KG0tcFsxXSkvKHBbM10tcFsxXSk7dmFyIEE9dy0xLGs9ZFsyKkFdLE09ZFsyKkErMV07az0oay1wWzBdKS8ocFsyXS1wWzBdKSxNPShNLXBbMV0pLyhwWzNdLXBbMV0pO3ZhciBUPWstdixFPU0tbSxMPXd8MTw8MjQsUz13LTEsQz13LFA9dy0xfDE8PDI0O3lbLS14XT0tRSx5Wy0teF09LVQseVstLXhdPW0seVstLXhdPXYsYlstLV9dPUwsYlstLV9dPVMseVstLXhdPUUseVstLXhdPVQseVstLXhdPU0seVstLXhdPWssYlstLV9dPUMsYlstLV9dPVAseVstLXhdPS1FLHlbLS14XT0tVCx5Wy0teF09TSx5Wy0teF09ayxiWy0tX109QyxiWy0tX109UCx5Wy0teF09RSx5Wy0teF09VCx5Wy0teF09TSx5Wy0teF09ayxiWy0tX109QyxiWy0tX109UCx5Wy0teF09LUUseVstLXhdPS1ULHlbLS14XT1tLHlbLS14XT12LGJbLS1fXT1MLGJbLS1fXT1TLHlbLS14XT1FLHlbLS14XT1ULHlbLS14XT1tLHlbLS14XT12LGJbLS1fXT1MLGJbLS1fXT1TfXRoaXMubGluZUJ1ZmZlci51cGRhdGUoeSksdGhpcy5waWNrQnVmZmVyLnVwZGF0ZShiKSx1LmZyZWUoeSksdS5mcmVlKGIpfX0sZi5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5wbG90LnJlbW92ZU9iamVjdCh0aGlzKSx0aGlzLmxpbmVCdWZmZXIuZGlzcG9zZSgpLHRoaXMucGlja0J1ZmZlci5kaXNwb3NlKCksdGhpcy5saW5lU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLm1pdHJlU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLmZpbGxTaGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja1NoYWRlci5kaXNwb3NlKCksdGhpcy5kYXNoUGF0dGVybi5kaXNwb3NlKCl9fSx7Ii4vbGliL3NoYWRlcnMiOjgxLCJnbC1idWZmZXIiOjc1LCJnbC1zaGFkZXIiOjE1NCwiZ2wtdGV4dHVyZTJkIjoxODAsbmRhcnJheToyMTAsInR5cGVkYXJyYXktcG9vbCI6MjM1fV0sODM6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbC1zaGFkZXIiKSxpPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uLCBuZXh0UG9zaXRpb247XG5hdHRyaWJ1dGUgZmxvYXQgYXJjTGVuZ3RoLCBsaW5lV2lkdGg7XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcblxudW5pZm9ybSB2ZWMyIHNjcmVlblNoYXBlO1xudW5pZm9ybSBmbG9hdCBwaXhlbFJhdGlvO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFyeWluZyB2ZWMzIHdvcmxkUG9zaXRpb247XG52YXJ5aW5nIGZsb2F0IHBpeGVsQXJjTGVuZ3RoO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzQgcHJvamVjdGVkID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIHZlYzQgdGFuZ2VudENsaXAgPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChuZXh0UG9zaXRpb24gLSBwb3NpdGlvbiwgMC4wKTtcbiAgdmVjMiB0YW5nZW50ID0gbm9ybWFsaXplKHNjcmVlblNoYXBlICogdGFuZ2VudENsaXAueHkpO1xuICB2ZWMyIG9mZnNldCA9IDAuNSAqIHBpeGVsUmF0aW8gKiBsaW5lV2lkdGggKiB2ZWMyKHRhbmdlbnQueSwgLXRhbmdlbnQueCkgLyBzY3JlZW5TaGFwZTtcblxuICBnbF9Qb3NpdGlvbiA9IHZlYzQocHJvamVjdGVkLnh5ICsgcHJvamVjdGVkLncgKiBvZmZzZXQsIHByb2plY3RlZC56dyk7XG5cbiAgd29ybGRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICBwaXhlbEFyY0xlbmd0aCA9IGFyY0xlbmd0aDtcbiAgZnJhZ0NvbG9yID0gY29sb3I7XG59XG4iLG89InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWMzICAgICAgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gc2FtcGxlcjJEIGRhc2hUZXh0dXJlO1xudW5pZm9ybSBmbG9hdCAgICAgZGFzaFNjYWxlO1xudW5pZm9ybSBmbG9hdCAgICAgb3BhY2l0eTtcblxudmFyeWluZyB2ZWMzICAgIHdvcmxkUG9zaXRpb247XG52YXJ5aW5nIGZsb2F0ICAgcGl4ZWxBcmNMZW5ndGg7XG52YXJ5aW5nIHZlYzQgICAgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbih3b3JsZFBvc2l0aW9uLCBjbGlwQm91bmRzWzBdKSkgfHwgYW55KGdyZWF0ZXJUaGFuKHdvcmxkUG9zaXRpb24sIGNsaXBCb3VuZHNbMV0pKSkge1xuICAgIGRpc2NhcmQ7XG4gIH1cbiAgZmxvYXQgZGFzaFdlaWdodCA9IHRleHR1cmUyRChkYXNoVGV4dHVyZSwgdmVjMihkYXNoU2NhbGUgKiBwaXhlbEFyY0xlbmd0aCwgMCkpLnI7XG4gIGlmKGRhc2hXZWlnaHQgPCAwLjUpIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvciAqIG9wYWNpdHk7XG59XG4iLGE9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuI2RlZmluZSBGTE9BVF9NQVggIDEuNzAxNDExODRlMzhcbiNkZWZpbmUgRkxPQVRfTUlOICAxLjE3NTQ5NDM1ZS0zOFxuXG5sb3dwIHZlYzQgZW5jb2RlX2Zsb2F0XzFfMChoaWdocCBmbG9hdCB2KSB7XG4gIGhpZ2hwIGZsb2F0IGF2ID0gYWJzKHYpO1xuXG4gIC8vSGFuZGxlIHNwZWNpYWwgY2FzZXNcbiAgaWYoYXYgPCBGTE9BVF9NSU4pIHtcbiAgICByZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuICB9IGVsc2UgaWYodiA+IEZMT0FUX01BWCkge1xuICAgIHJldHVybiB2ZWM0KDEyNy4wLCAxMjguMCwgMC4wLCAwLjApIC8gMjU1LjA7XG4gIH0gZWxzZSBpZih2IDwgLUZMT0FUX01BWCkge1xuICAgIHJldHVybiB2ZWM0KDI1NS4wLCAxMjguMCwgMC4wLCAwLjApIC8gMjU1LjA7XG4gIH1cblxuICBoaWdocCB2ZWM0IGMgPSB2ZWM0KDAsMCwwLDApO1xuXG4gIC8vQ29tcHV0ZSBleHBvbmVudCBhbmQgbWFudGlzc2FcbiAgaGlnaHAgZmxvYXQgZSA9IGZsb29yKGxvZzIoYXYpKTtcbiAgaGlnaHAgZmxvYXQgbSA9IGF2ICogcG93KDIuMCwgLWUpIC0gMS4wO1xuICBcbiAgLy9VbnBhY2sgbWFudGlzc2FcbiAgY1sxXSA9IGZsb29yKDEyOC4wICogbSk7XG4gIG0gLT0gY1sxXSAvIDEyOC4wO1xuICBjWzJdID0gZmxvb3IoMzI3NjguMCAqIG0pO1xuICBtIC09IGNbMl0gLyAzMjc2OC4wO1xuICBjWzNdID0gZmxvb3IoODM4ODYwOC4wICogbSk7XG4gIFxuICAvL1VucGFjayBleHBvbmVudFxuICBoaWdocCBmbG9hdCBlYmlhcyA9IGUgKyAxMjcuMDtcbiAgY1swXSA9IGZsb29yKGViaWFzIC8gMi4wKTtcbiAgZWJpYXMgLT0gY1swXSAqIDIuMDtcbiAgY1sxXSArPSBmbG9vcihlYmlhcykgKiAxMjguMDsgXG5cbiAgLy9VbnBhY2sgc2lnbiBiaXRcbiAgY1swXSArPSAxMjguMCAqIHN0ZXAoMC4wLCAtdik7XG5cbiAgLy9TY2FsZSBiYWNrIHRvIHJhbmdlXG4gIHJldHVybiBjIC8gMjU1LjA7XG59XG5cblxuXG51bmlmb3JtIGZsb2F0IHBpY2tJZDtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xuXG52YXJ5aW5nIHZlYzMgd29ybGRQb3NpdGlvbjtcbnZhcnlpbmcgZmxvYXQgcGl4ZWxBcmNMZW5ndGg7XG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbih3b3JsZFBvc2l0aW9uLCBjbGlwQm91bmRzWzBdKSkgfHwgYW55KGdyZWF0ZXJUaGFuKHdvcmxkUG9zaXRpb24sIGNsaXBCb3VuZHNbMV0pKSkge1xuICAgIGRpc2NhcmQ7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQvMjU1LjAsIGVuY29kZV9mbG9hdF8xXzAocGl4ZWxBcmNMZW5ndGgpLnh5eik7XG59IixzPVt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToibmV4dFBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImFyY0xlbmd0aCIsdHlwZToiZmxvYXQifSx7bmFtZToibGluZVdpZHRoIix0eXBlOiJmbG9hdCJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9XTtyLmNyZWF0ZVNoYWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbih0LGksbyxudWxsLHMpfSxyLmNyZWF0ZVBpY2tTaGFkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCxpLGEsbnVsbCxzKX19LHsiZ2wtc2hhZGVyIjoxNTR9XSw4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPTAsbj0wOzM+bjsrK24pe3ZhciBpPXRbbl0tZVtuXTtyKz1pKml9cmV0dXJuIE1hdGguc3FydChyKX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1bWy0xZTYsLTFlNiwtMWU2XSxbMWU2LDFlNiwxZTZdXSxyPTA7Mz5yOysrcillWzBdW3JdPU1hdGgubWF4KHRbMF1bcl0sZVswXVtyXSksZVsxXVtyXT1NYXRoLm1pbih0WzFdW3JdLGVbMV1bcl0pO3JldHVybiBlfWZ1bmN0aW9uIG8odCxlLHIsbil7dGhpcy5hcmNMZW5ndGg9dCx0aGlzLnBvc2l0aW9uPWUsdGhpcy5pbmRleD1yLHRoaXMuZGF0YUNvb3JkaW5hdGU9bn1mdW5jdGlvbiBhKHQsZSxyLG4saSxvKXt0aGlzLmdsPXQsdGhpcy5zaGFkZXI9ZSx0aGlzLnBpY2tTaGFkZXI9cix0aGlzLmJ1ZmZlcj1uLHRoaXMudmFvPWksdGhpcy5jbGlwQm91bmRzPVtbLSgxLzApLC0oMS8wKSwtKDEvMCldLFsxLzAsMS8wLDEvMF1dLHRoaXMucG9pbnRzPVtdLHRoaXMuYXJjTGVuZ3RoPVtdLHRoaXMudmVydGV4Q291bnQ9MCx0aGlzLmJvdW5kcz1bWzAsMCwwXSxbMCwwLDBdXSx0aGlzLnBpY2tJZD0wLHRoaXMubGluZVdpZHRoPTEsdGhpcy50ZXh0dXJlPW8sdGhpcy5kYXNoU2NhbGU9MSx0aGlzLm9wYWNpdHk9MSx0aGlzLmRpcnR5PSEwLHRoaXMucGl4ZWxSYXRpbz0xfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5nbHx8dC5zY2VuZSYmdC5zY2VuZS5nbCxyPWcoZSk7ci5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsci5hdHRyaWJ1dGVzLm5leHRQb3NpdGlvbi5sb2NhdGlvbj0xLHIuYXR0cmlidXRlcy5hcmNMZW5ndGgubG9jYXRpb249MixyLmF0dHJpYnV0ZXMubGluZVdpZHRoLmxvY2F0aW9uPTMsci5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTQ7dmFyIG49dihlKTtuLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxuLmF0dHJpYnV0ZXMubmV4dFBvc2l0aW9uLmxvY2F0aW9uPTEsbi5hdHRyaWJ1dGVzLmFyY0xlbmd0aC5sb2NhdGlvbj0yLG4uYXR0cmlidXRlcy5saW5lV2lkdGgubG9jYXRpb249MyxuLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249NDtmb3IodmFyIGk9bChlKSxvPWMoZSxbe2J1ZmZlcjppLHNpemU6MyxvZmZzZXQ6MCxzdHJpZGU6NDh9LHtidWZmZXI6aSxzaXplOjMsb2Zmc2V0OjEyLHN0cmlkZTo0OH0se2J1ZmZlcjppLHNpemU6MSxvZmZzZXQ6MjQsc3RyaWRlOjQ4fSx7YnVmZmVyOmksc2l6ZToxLG9mZnNldDoyOCxzdHJpZGU6NDh9LHtidWZmZXI6aSxzaXplOjQsb2Zmc2V0OjMyLHN0cmlkZTo0OH1dKSxzPWQobmV3IEFycmF5KDEwMjQpLFsyNTYsMSw0XSksaD0wOzEwMjQ+aDsrK2gpcy5kYXRhW2hdPTI1NTt2YXIgZj11KGUscyk7Zi53cmFwPWUuUkVQRUFUO3ZhciBwPW5ldyBhKGUscixuLGksbyxmKTtyZXR1cm4gcC51cGRhdGUodCkscH1lLmV4cG9ydHM9czt2YXIgbD10KCJnbC1idWZmZXIiKSxjPXQoImdsLXZhbyIpLHU9dCgiZ2wtdGV4dHVyZTJkIiksaD10KCJnbHNsLXJlYWQtZmxvYXQiKSxmPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksZD10KCJuZGFycmF5IikscD10KCIuL2xpYi9zaGFkZXJzIiksZz1wLmNyZWF0ZVNoYWRlcix2PXAuY3JlYXRlUGlja1NoYWRlcixtPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSx5PWEucHJvdG90eXBlO3kuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk8MX0seS5pc09wYXF1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk+PTF9LHkucGlja1Nsb3RzPTEseS5zZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0aGlzLnBpY2tJZD10fSx5LmRyYXdUcmFuc3BhcmVudD15LmRyYXc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbCxyPXRoaXMuc2hhZGVyLG49dGhpcy52YW87ci5iaW5kKCksci51bmlmb3Jtcz17bW9kZWw6dC5tb2RlbHx8bSx2aWV3OnQudmlld3x8bSxwcm9qZWN0aW9uOnQucHJvamVjdGlvbnx8bSxjbGlwQm91bmRzOmkodGhpcy5jbGlwQm91bmRzKSxkYXNoVGV4dHVyZTp0aGlzLnRleHR1cmUuYmluZCgpLGRhc2hTY2FsZTp0aGlzLmRhc2hTY2FsZS90aGlzLmFyY0xlbmd0aFt0aGlzLmFyY0xlbmd0aC5sZW5ndGgtMV0sb3BhY2l0eTp0aGlzLm9wYWNpdHksc2NyZWVuU2hhcGU6W2UuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF0scGl4ZWxSYXRpbzp0aGlzLnBpeGVsUmF0aW99LG4uYmluZCgpLG4uZHJhdyhlLlRSSUFOR0xFX1NUUklQLHRoaXMudmVydGV4Q291bnQpfSx5LmRyYXdQaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnBpY2tTaGFkZXIsbj10aGlzLnZhbztyLmJpbmQoKSxyLnVuaWZvcm1zPXttb2RlbDp0Lm1vZGVsfHxtLHZpZXc6dC52aWV3fHxtLHByb2plY3Rpb246dC5wcm9qZWN0aW9ufHxtLHBpY2tJZDp0aGlzLnBpY2tJZCxjbGlwQm91bmRzOmkodGhpcy5jbGlwQm91bmRzKSxzY3JlZW5TaGFwZTpbZS5kcmF3aW5nQnVmZmVyV2lkdGgsZS5kcmF3aW5nQnVmZmVySGVpZ2h0XSxwaXhlbFJhdGlvOnRoaXMucGl4ZWxSYXRpb30sbi5iaW5kKCksbi5kcmF3KGUuVFJJQU5HTEVfU1RSSVAsdGhpcy52ZXJ0ZXhDb3VudCl9LHkudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLHI7dGhpcy5kaXJ0eT0hMDt2YXIgaT0hIXQuY29ubmVjdEdhcHM7ImRhc2hTY2FsZSJpbiB0JiYodGhpcy5kYXNoU2NhbGU9dC5kYXNoU2NhbGUpLCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9K3Qub3BhY2l0eSk7dmFyIG89dC5wb3NpdGlvbnx8dC5wb3NpdGlvbnM7aWYobyl7dmFyIGE9dC5jb2xvcnx8dC5jb2xvcnN8fFswLDAsMCwxXSxzPXQubGluZVdpZHRofHwxLGw9W10sYz1bXSx1PVtdLGg9MCxwPTAsZz1bWzEvMCwxLzAsMS8wXSxbLSgxLzApLC0oMS8wKSwtKDEvMCldXSx2PSExO3Q6Zm9yKGU9MTtlPG8ubGVuZ3RoOysrZSl7dmFyIG09b1tlLTFdLHk9b1tlXTtmb3IoYy5wdXNoKGgpLHUucHVzaChtLnNsaWNlKCkpLHI9MDszPnI7KytyKXtpZihpc05hTihtW3JdKXx8aXNOYU4oeVtyXSl8fCFpc0Zpbml0ZShtW3JdKXx8IWlzRmluaXRlKHlbcl0pKXtpZighaSYmbC5sZW5ndGg+MCl7Zm9yKHZhciBiPTA7MjQ+YjsrK2IpbC5wdXNoKGxbbC5sZW5ndGgtMTJdKTtwKz0yLHY9ITB9Y29udGludWUgdH1nWzBdW3JdPU1hdGgubWluKGdbMF1bcl0sbVtyXSx5W3JdKSxnWzFdW3JdPU1hdGgubWF4KGdbMV1bcl0sbVtyXSx5W3JdKX12YXIgeCxfO0FycmF5LmlzQXJyYXkoYVswXSk/KHg9YVtlLTFdLF89YVtlXSk6eD1fPWEsMz09PXgubGVuZ3RoJiYoeD1beFswXSx4WzFdLHhbMl0sMV0pLDM9PT1fLmxlbmd0aCYmKF89W19bMF0sX1sxXSxfWzJdLDFdKTt2YXIgdzt3PUFycmF5LmlzQXJyYXkocyk/c1tlLTFdOnM7dmFyIEE9aDtpZihoKz1uKG0seSksdil7Zm9yKHI9MDsyPnI7KytyKWwucHVzaChtWzBdLG1bMV0sbVsyXSx5WzBdLHlbMV0seVsyXSxBLHcseFswXSx4WzFdLHhbMl0seFszXSk7cCs9Mix2PSExfWwucHVzaChtWzBdLG1bMV0sbVsyXSx5WzBdLHlbMV0seVsyXSxBLHcseFswXSx4WzFdLHhbMl0seFszXSxtWzBdLG1bMV0sbVsyXSx5WzBdLHlbMV0seVsyXSxBLC13LHhbMF0seFsxXSx4WzJdLHhbM10seVswXSx5WzFdLHlbMl0sbVswXSxtWzFdLG1bMl0saCwtdyxfWzBdLF9bMV0sX1syXSxfWzNdLHlbMF0seVsxXSx5WzJdLG1bMF0sbVsxXSxtWzJdLGgsdyxfWzBdLF9bMV0sX1syXSxfWzNdKSxwKz00fWlmKHRoaXMuYnVmZmVyLnVwZGF0ZShsKSxjLnB1c2goaCksdS5wdXNoKG9bby5sZW5ndGgtMV0uc2xpY2UoKSksdGhpcy5ib3VuZHM9Zyx0aGlzLnZlcnRleENvdW50PXAsdGhpcy5wb2ludHM9dSx0aGlzLmFyY0xlbmd0aD1jLCJkYXNoZXMiaW4gdCl7dmFyIGs9dC5kYXNoZXMsTT1rLnNsaWNlKCk7Zm9yKE0udW5zaGlmdCgwKSxlPTE7ZTxNLmxlbmd0aDsrK2UpTVtlXT1NW2UtMV0rTVtlXTt2YXIgVD1kKG5ldyBBcnJheSgxMDI0KSxbMjU2LDEsNF0pO2ZvcihlPTA7MjU2PmU7KytlKXtmb3Iocj0wOzQ+cjsrK3IpVC5zZXQoZSwwLHIsMCk7MSZmLmxlKE0sTVtNLmxlbmd0aC0xXSplLzI1NSk/VC5zZXQoZSwwLDAsMCk6VC5zZXQoZSwwLDAsMjU1KX10aGlzLnRleHR1cmUuc2V0UGl4ZWxzKFQpfX19LHkuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpfSx5LnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO3ZhciBlPWgodC52YWx1ZVswXSx0LnZhbHVlWzFdLHQudmFsdWVbMl0sMCkscj1mLmxlKHRoaXMuYXJjTGVuZ3RoLGUpO2lmKDA+cilyZXR1cm4gbnVsbDtpZihyPT09dGhpcy5hcmNMZW5ndGgubGVuZ3RoLTEpcmV0dXJuIG5ldyBvKHRoaXMuYXJjTGVuZ3RoW3RoaXMuYXJjTGVuZ3RoLmxlbmd0aC0xXSx0aGlzLnBvaW50c1t0aGlzLnBvaW50cy5sZW5ndGgtMV0uc2xpY2UoKSxyKTtmb3IodmFyIG49dGhpcy5wb2ludHNbcl0saT10aGlzLnBvaW50c1tNYXRoLm1pbihyKzEsdGhpcy5wb2ludHMubGVuZ3RoLTEpXSxhPShlLXRoaXMuYXJjTGVuZ3RoW3JdKS8odGhpcy5hcmNMZW5ndGhbcisxXS10aGlzLmFyY0xlbmd0aFtyXSkscz0xLWEsbD1bMCwwLDBdLGM9MDszPmM7KytjKWxbY109cypuW2NdK2EqaVtjXTt2YXIgdT1NYXRoLm1pbiguNT5hP3I6cisxLHRoaXMucG9pbnRzLmxlbmd0aC0xKTtyZXR1cm4gbmV3IG8oZSxsLHUsdGhpcy5wb2ludHNbdV0pfX0seyIuL2xpYi9zaGFkZXJzIjo4MywiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjg1LCJnbC1idWZmZXIiOjc1LCJnbC10ZXh0dXJlMmQiOjE4MCwiZ2wtdmFvIjoxODQsImdsc2wtcmVhZC1mbG9hdCI6ODYsbmRhcnJheToyMTB9XSw4NTpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsyMF1bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVwOjIwfV0sODY6W2Z1bmN0aW9uKHQsZSxyKXsKZnVuY3Rpb24gbih0LGUscixuKXtyZXR1cm4gaVswXT1uLGlbMV09cixpWzJdPWUsaVszXT10LG9bMF19ZS5leHBvcnRzPW47dmFyIGk9bmV3IFVpbnQ4QXJyYXkoNCksbz1uZXcgRmxvYXQzMkFycmF5KGkuYnVmZmVyKX0se31dLDg3OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxvPWVbM10sYT1lWzRdLHM9ZVs1XSxsPWVbNl0sYz1lWzddLHU9ZVs4XSxoPXUqYS1zKmMsZj0tdSpvK3MqbCxkPWMqby1hKmwscD1yKmgrbipmK2kqZDtyZXR1cm4gcD8ocD0xL3AsdFswXT1oKnAsdFsxXT0oLXUqbitpKmMpKnAsdFsyXT0ocypuLWkqYSkqcCx0WzNdPWYqcCx0WzRdPSh1KnItaSpsKSpwLHRbNV09KC1zKnIraSpvKSpwLHRbNl09ZCpwLHRbN109KC1jKnIrbipsKSpwLHRbOF09KGEqci1uKm8pKnAsdCk6bnVsbH1lLmV4cG9ydHM9bn0se31dLDg4OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGV9ZS5leHBvcnRzPW59LHt9XSw4OTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXt2YXIgdD1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9ZS5leHBvcnRzPW59LHt9XSw5MDpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dmFyIGU9dFswXSxyPXRbMV0sbj10WzJdLGk9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9dFs5XSxoPXRbMTBdLGY9dFsxMV0sZD10WzEyXSxwPXRbMTNdLGc9dFsxNF0sdj10WzE1XSxtPWUqYS1yKm8seT1lKnMtbipvLGI9ZSpsLWkqbyx4PXIqcy1uKmEsXz1yKmwtaSphLHc9bipsLWkqcyxBPWMqcC11KmQsaz1jKmctaCpkLE09Yyp2LWYqZCxUPXUqZy1oKnAsRT11KnYtZipwLEw9aCp2LWYqZztyZXR1cm4gbSpMLXkqRStiKlQreCpNLV8qayt3KkF9ZS5leHBvcnRzPW59LHt9XSw5MTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxpPWVbMl0sbz1lWzNdLGE9cityLHM9bituLGw9aStpLGM9ciphLHU9biphLGg9bipzLGY9aSphLGQ9aSpzLHA9aSpsLGc9byphLHY9bypzLG09bypsO3JldHVybiB0WzBdPTEtaC1wLHRbMV09dSttLHRbMl09Zi12LHRbM109MCx0WzRdPXUtbSx0WzVdPTEtYy1wLHRbNl09ZCtnLHRbN109MCx0WzhdPWYrdix0WzldPWQtZyx0WzEwXT0xLWMtaCx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRbMTVdPTEsdH1lLmV4cG9ydHM9bn0se31dLDkyOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0sbz1lWzJdLGE9ZVszXSxzPW4rbixsPWkraSxjPW8rbyx1PW4qcyxoPW4qbCxmPW4qYyxkPWkqbCxwPWkqYyxnPW8qYyx2PWEqcyxtPWEqbCx5PWEqYztyZXR1cm4gdFswXT0xLShkK2cpLHRbMV09aCt5LHRbMl09Zi1tLHRbM109MCx0WzRdPWgteSx0WzVdPTEtKHUrZyksdFs2XT1wK3YsdFs3XT0wLHRbOF09ZittLHRbOV09cC12LHRbMTBdPTEtKHUrZCksdFsxMV09MCx0WzEyXT1yWzBdLHRbMTNdPXJbMV0sdFsxNF09clsyXSx0WzE1XT0xLHR9ZS5leHBvcnRzPW59LHt9XSw5MzpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHRbMF09MSx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT0xLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0xLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fWUuZXhwb3J0cz1ufSx7fV0sOTQ6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0saT1lWzJdLG89ZVszXSxhPWVbNF0scz1lWzVdLGw9ZVs2XSxjPWVbN10sdT1lWzhdLGg9ZVs5XSxmPWVbMTBdLGQ9ZVsxMV0scD1lWzEyXSxnPWVbMTNdLHY9ZVsxNF0sbT1lWzE1XSx5PXIqcy1uKmEsYj1yKmwtaSphLHg9cipjLW8qYSxfPW4qbC1pKnMsdz1uKmMtbypzLEE9aSpjLW8qbCxrPXUqZy1oKnAsTT11KnYtZipwLFQ9dSptLWQqcCxFPWgqdi1mKmcsTD1oKm0tZCpnLFM9ZiptLWQqdixDPXkqUy1iKkwreCpFK18qVC13Kk0rQSprO3JldHVybiBDPyhDPTEvQyx0WzBdPShzKlMtbCpMK2MqRSkqQyx0WzFdPShpKkwtbipTLW8qRSkqQyx0WzJdPShnKkEtdip3K20qXykqQyx0WzNdPShmKnctaCpBLWQqXykqQyx0WzRdPShsKlQtYSpTLWMqTSkqQyx0WzVdPShyKlMtaSpUK28qTSkqQyx0WzZdPSh2KngtcCpBLW0qYikqQyx0WzddPSh1KkEtZip4K2QqYikqQyx0WzhdPShhKkwtcypUK2MqaykqQyx0WzldPShuKlQtcipMLW8qaykqQyx0WzEwXT0ocCp3LWcqeCttKnkpKkMsdFsxMV09KGgqeC11KnctZCp5KSpDLHRbMTJdPShzKk0tYSpFLWwqaykqQyx0WzEzXT0ocipFLW4qTStpKmspKkMsdFsxNF09KGcqYi1wKl8tdip5KSpDLHRbMTVdPSh1Kl8taCpiK2YqeSkqQyx0KTpudWxsfWUuZXhwb3J0cz1ufSx7fV0sOTU6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyLG4pe3ZhciBvLGEscyxsLGMsdSxoLGYsZCxwLGc9ZVswXSx2PWVbMV0sbT1lWzJdLHk9blswXSxiPW5bMV0seD1uWzJdLF89clswXSx3PXJbMV0sQT1yWzJdO3JldHVybiBNYXRoLmFicyhnLV8pPDFlLTYmJk1hdGguYWJzKHYtdyk8MWUtNiYmTWF0aC5hYnMobS1BKTwxZS02P2kodCk6KGg9Zy1fLGY9di13LGQ9bS1BLHA9MS9NYXRoLnNxcnQoaCpoK2YqZitkKmQpLGgqPXAsZio9cCxkKj1wLG89YipkLXgqZixhPXgqaC15KmQscz15KmYtYipoLHA9TWF0aC5zcXJ0KG8qbythKmErcypzKSxwPyhwPTEvcCxvKj1wLGEqPXAscyo9cCk6KG89MCxhPTAscz0wKSxsPWYqcy1kKmEsYz1kKm8taCpzLHU9aCphLWYqbyxwPU1hdGguc3FydChsKmwrYypjK3UqdSkscD8ocD0xL3AsbCo9cCxjKj1wLHUqPXApOihsPTAsYz0wLHU9MCksdFswXT1vLHRbMV09bCx0WzJdPWgsdFszXT0wLHRbNF09YSx0WzVdPWMsdFs2XT1mLHRbN109MCx0WzhdPXMsdFs5XT11LHRbMTBdPWQsdFsxMV09MCx0WzEyXT0tKG8qZythKnYrcyptKSx0WzEzXT0tKGwqZytjKnYrdSptKSx0WzE0XT0tKGgqZytmKnYrZCptKSx0WzE1XT0xLHQpfXZhciBpPXQoIi4vaWRlbnRpdHkiKTtlLmV4cG9ydHM9bn0seyIuL2lkZW50aXR5Ijo5M31dLDk2OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0sbz1lWzJdLGE9ZVszXSxzPWVbNF0sbD1lWzVdLGM9ZVs2XSx1PWVbN10saD1lWzhdLGY9ZVs5XSxkPWVbMTBdLHA9ZVsxMV0sZz1lWzEyXSx2PWVbMTNdLG09ZVsxNF0seT1lWzE1XSxiPXJbMF0seD1yWzFdLF89clsyXSx3PXJbM107cmV0dXJuIHRbMF09YipuK3gqcytfKmgrdypnLHRbMV09YippK3gqbCtfKmYrdyp2LHRbMl09YipvK3gqYytfKmQrdyptLHRbM109YiphK3gqdStfKnArdyp5LGI9cls0XSx4PXJbNV0sXz1yWzZdLHc9cls3XSx0WzRdPWIqbit4KnMrXypoK3cqZyx0WzVdPWIqaSt4KmwrXypmK3cqdix0WzZdPWIqbyt4KmMrXypkK3cqbSx0WzddPWIqYSt4KnUrXypwK3cqeSxiPXJbOF0seD1yWzldLF89clsxMF0sdz1yWzExXSx0WzhdPWIqbit4KnMrXypoK3cqZyx0WzldPWIqaSt4KmwrXypmK3cqdix0WzEwXT1iKm8reCpjK18qZCt3Km0sdFsxMV09YiphK3gqdStfKnArdyp5LGI9clsxMl0seD1yWzEzXSxfPXJbMTRdLHc9clsxNV0sdFsxMl09YipuK3gqcytfKmgrdypnLHRbMTNdPWIqaSt4KmwrXypmK3cqdix0WzE0XT1iKm8reCpjK18qZCt3Km0sdFsxNV09YiphK3gqdStfKnArdyp5LHR9ZS5leHBvcnRzPW59LHt9XSw5NzpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIsbixpKXt2YXIgbz0xL01hdGgudGFuKGUvMiksYT0xLyhuLWkpO3JldHVybiB0WzBdPW8vcix0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT1vLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0oaStuKSphLHRbMTFdPS0xLHRbMTJdPTAsdFsxM109MCx0WzE0XT0yKmkqbiphLHRbMTVdPTAsdH1lLmV4cG9ydHM9bn0se31dLDk4OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscixuKXt2YXIgaSxvLGEscyxsLGMsdSxoLGYsZCxwLGcsdixtLHksYix4LF8sdyxBLGssTSxULEUsTD1uWzBdLFM9blsxXSxDPW5bMl0sUD1NYXRoLnNxcnQoTCpMK1MqUytDKkMpO3JldHVybiBNYXRoLmFicyhQKTwxZS02P251bGw6KFA9MS9QLEwqPVAsUyo9UCxDKj1QLGk9TWF0aC5zaW4ociksbz1NYXRoLmNvcyhyKSxhPTEtbyxzPWVbMF0sbD1lWzFdLGM9ZVsyXSx1PWVbM10saD1lWzRdLGY9ZVs1XSxkPWVbNl0scD1lWzddLGc9ZVs4XSx2PWVbOV0sbT1lWzEwXSx5PWVbMTFdLGI9TCpMKmErbyx4PVMqTCphK0MqaSxfPUMqTCphLVMqaSx3PUwqUyphLUMqaSxBPVMqUyphK28saz1DKlMqYStMKmksTT1MKkMqYStTKmksVD1TKkMqYS1MKmksRT1DKkMqYStvLHRbMF09cypiK2gqeCtnKl8sdFsxXT1sKmIrZip4K3YqXyx0WzJdPWMqYitkKngrbSpfLHRbM109dSpiK3AqeCt5Kl8sdFs0XT1zKncraCpBK2cqayx0WzVdPWwqdytmKkErdiprLHRbNl09Yyp3K2QqQSttKmssdFs3XT11KncrcCpBK3kqayx0WzhdPXMqTStoKlQrZypFLHRbOV09bCpNK2YqVCt2KkUsdFsxMF09YypNK2QqVCttKkUsdFsxMV09dSpNK3AqVCt5KkUsZSE9PXQmJih0WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1XSksdCl9ZS5leHBvcnRzPW59LHt9XSw5OTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuPU1hdGguc2luKHIpLGk9TWF0aC5jb3Mociksbz1lWzRdLGE9ZVs1XSxzPWVbNl0sbD1lWzddLGM9ZVs4XSx1PWVbOV0saD1lWzEwXSxmPWVbMTFdO3JldHVybiBlIT09dCYmKHRbMF09ZVswXSx0WzFdPWVbMV0sdFsyXT1lWzJdLHRbM109ZVszXSx0WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1XSksdFs0XT1vKmkrYypuLHRbNV09YSppK3Uqbix0WzZdPXMqaStoKm4sdFs3XT1sKmkrZipuLHRbOF09YyppLW8qbix0WzldPXUqaS1hKm4sdFsxMF09aCppLXMqbix0WzExXT1mKmktbCpuLHR9ZS5leHBvcnRzPW59LHt9XSwxMDA6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxpPU1hdGguY29zKHIpLG89ZVswXSxhPWVbMV0scz1lWzJdLGw9ZVszXSxjPWVbOF0sdT1lWzldLGg9ZVsxMF0sZj1lWzExXTtyZXR1cm4gZSE9PXQmJih0WzRdPWVbNF0sdFs1XT1lWzVdLHRbNl09ZVs2XSx0WzddPWVbN10sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pLHRbMF09byppLWMqbix0WzFdPWEqaS11Km4sdFsyXT1zKmktaCpuLHRbM109bCppLWYqbix0WzhdPW8qbitjKmksdFs5XT1hKm4rdSppLHRbMTBdPXMqbitoKmksdFsxMV09bCpuK2YqaSx0fWUuZXhwb3J0cz1ufSx7fV0sMTAxOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49TWF0aC5zaW4ociksaT1NYXRoLmNvcyhyKSxvPWVbMF0sYT1lWzFdLHM9ZVsyXSxsPWVbM10sYz1lWzRdLHU9ZVs1XSxoPWVbNl0sZj1lWzddO3JldHVybiBlIT09dCYmKHRbOF09ZVs4XSx0WzldPWVbOV0sdFsxMF09ZVsxMF0sdFsxMV09ZVsxMV0sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pLHRbMF09byppK2Mqbix0WzFdPWEqaSt1Km4sdFsyXT1zKmkraCpuLHRbM109bCppK2Yqbix0WzRdPWMqaS1vKm4sdFs1XT11KmktYSpuLHRbNl09aCppLXMqbix0WzddPWYqaS1sKm4sdH1lLmV4cG9ydHM9bn0se31dLDEwMjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuPXJbMF0saT1yWzFdLG89clsyXTtyZXR1cm4gdFswXT1lWzBdKm4sdFsxXT1lWzFdKm4sdFsyXT1lWzJdKm4sdFszXT1lWzNdKm4sdFs0XT1lWzRdKmksdFs1XT1lWzVdKmksdFs2XT1lWzZdKmksdFs3XT1lWzddKmksdFs4XT1lWzhdKm8sdFs5XT1lWzldKm8sdFsxMF09ZVsxMF0qbyx0WzExXT1lWzExXSpvLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdLHR9ZS5leHBvcnRzPW59LHt9XSwxMDM6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbixpLG8sYSxzLGwsYyx1LGgsZixkLHAsZz1yWzBdLHY9clsxXSxtPXJbMl07cmV0dXJuIGU9PT10Pyh0WzEyXT1lWzBdKmcrZVs0XSp2K2VbOF0qbStlWzEyXSx0WzEzXT1lWzFdKmcrZVs1XSp2K2VbOV0qbStlWzEzXSx0WzE0XT1lWzJdKmcrZVs2XSp2K2VbMTBdKm0rZVsxNF0sdFsxNV09ZVszXSpnK2VbN10qditlWzExXSptK2VbMTVdKToobj1lWzBdLGk9ZVsxXSxvPWVbMl0sYT1lWzNdLHM9ZVs0XSxsPWVbNV0sYz1lWzZdLHU9ZVs3XSxoPWVbOF0sZj1lWzldLGQ9ZVsxMF0scD1lWzExXSx0WzBdPW4sdFsxXT1pLHRbMl09byx0WzNdPWEsdFs0XT1zLHRbNV09bCx0WzZdPWMsdFs3XT11LHRbOF09aCx0WzldPWYsdFsxMF09ZCx0WzExXT1wLHRbMTJdPW4qZytzKnYraCptK2VbMTJdLHRbMTNdPWkqZytsKnYrZiptK2VbMTNdLHRbMTRdPW8qZytjKnYrZCptK2VbMTRdLHRbMTVdPWEqZyt1KnYrcCptK2VbMTVdKSx0fWUuZXhwb3J0cz1ufSx7fV0sMTA0OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe2lmKHQ9PT1lKXt2YXIgcj1lWzFdLG49ZVsyXSxpPWVbM10sbz1lWzZdLGE9ZVs3XSxzPWVbMTFdO3RbMV09ZVs0XSx0WzJdPWVbOF0sdFszXT1lWzEyXSx0WzRdPXIsdFs2XT1lWzldLHRbN109ZVsxM10sdFs4XT1uLHRbOV09byx0WzExXT1lWzE0XSx0WzEyXT1pLHRbMTNdPWEsdFsxNF09c31lbHNlIHRbMF09ZVswXSx0WzFdPWVbNF0sdFsyXT1lWzhdLHRbM109ZVsxMl0sdFs0XT1lWzFdLHRbNV09ZVs1XSx0WzZdPWVbOV0sdFs3XT1lWzEzXSx0WzhdPWVbMl0sdFs5XT1lWzZdLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTRdLHRbMTJdPWVbM10sdFsxM109ZVs3XSx0WzE0XT1lWzExXSx0WzE1XT1lWzE1XTtyZXR1cm4gdH1lLmV4cG9ydHM9bn0se31dLDEwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPVswLDAsMCwwXSxuPTA7ND5uOysrbilmb3IodmFyIGk9MDs0Pmk7KytpKXJbaV0rPXRbNCpuK2ldKmVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0LGUscixpLG8pe2Zvcih2YXIgYT1uKGksbihyLG4oZSxbdFswXSx0WzFdLHRbMl0sMV0pKSkscz0wOzM+czsrK3MpYVtzXS89YVszXTtyZXR1cm5bLjUqb1swXSooMSthWzBdKSwuNSpvWzFdKigxLWFbMV0pXX1mdW5jdGlvbiBvKHQsZSl7aWYoMj09PXQubGVuZ3RoKXtmb3IodmFyIHI9MCxuPTAsaT0wOzI+aTsrK2kpcis9TWF0aC5wb3coZVtpXS10WzBdW2ldLDIpLG4rPU1hdGgucG93KGVbaV0tdFsxXVtpXSwyKTtyZXR1cm4gcj1NYXRoLnNxcnQociksbj1NYXRoLnNxcnQobiksMWUtNj5yK24/WzEsMF06W24vKHIrbiksci8obityKV19aWYoMz09PXQubGVuZ3RoKXt2YXIgbz1bMCwwXTtyZXR1cm4gYyh0WzBdLHRbMV0sdFsyXSxlLG8pLGwodCxvKX1yZXR1cm5bXX1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPVswLDAsMF0sbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25dLG89ZVtuXSxhPTA7Mz5hOysrYSlyW2FdKz1vKmlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24gcyh0LGUscixuLHMsbCl7aWYoMT09PXQubGVuZ3RoKXJldHVyblswLHRbMF0uc2xpY2UoKV07Zm9yKHZhciBjPW5ldyBBcnJheSh0Lmxlbmd0aCksdT0wO3U8dC5sZW5ndGg7Kyt1KWNbdV09aSh0W3VdLHIsbixzLGwpO2Zvcih2YXIgaD0wLGY9MS8wLHU9MDt1PGMubGVuZ3RoOysrdSl7Zm9yKHZhciBkPTAscD0wOzI+cDsrK3ApZCs9TWF0aC5wb3coY1t1XVtwXS1lW3BdLDIpO2Y+ZCYmKGY9ZCxoPXUpfWZvcih2YXIgZz1vKGMsZSksdj0wLHU9MDszPnU7Kyt1KXtpZihnW3VdPC0uMDAxfHxnW3VdPjEuMDAwMSlyZXR1cm4gbnVsbDt2Kz1nW3VdfXJldHVybiBNYXRoLmFicyh2LTEpPi4wMDE/bnVsbDpbaCxhKHQsZyksZ119dmFyIGw9dCgiYmFyeWNlbnRyaWMiKSxjPXQoInBvbHl0b3BlLWNsb3Nlc3QtcG9pbnQvbGliL2Nsb3Nlc3RfcG9pbnRfMmQuanMiKTtlLmV4cG9ydHM9c30se2JhcnljZW50cmljOjEwOCwicG9seXRvcGUtY2xvc2VzdC1wb2ludC9saWIvY2xvc2VzdF9wb2ludF8yZC5qcyI6MTEwfV0sMTA2OltmdW5jdGlvbih0LGUscil7dmFyIG49InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb24sIG5vcm1hbDtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgdXY7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbFxuICAgICAgICAgICAsIHZpZXdcbiAgICAgICAgICAgLCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMzIGV5ZVBvc2l0aW9uXG4gICAgICAgICAgICwgbGlnaHRQb3NpdGlvbjtcblxudmFyeWluZyB2ZWMzIGZfbm9ybWFsXG4gICAgICAgICAgICwgZl9saWdodERpcmVjdGlvblxuICAgICAgICAgICAsIGZfZXllRGlyZWN0aW9uXG4gICAgICAgICAgICwgZl9kYXRhO1xudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICB2ZWM0IG1fcG9zaXRpb24gID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICB2ZWM0IHRfcG9zaXRpb24gID0gdmlldyAqIG1fcG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uICAgICAgPSBwcm9qZWN0aW9uICogdF9wb3NpdGlvbjtcbiAgZl9jb2xvciAgICAgICAgICA9IGNvbG9yO1xuICBmX25vcm1hbCAgICAgICAgID0gbm9ybWFsO1xuICBmX2RhdGEgICAgICAgICAgID0gcG9zaXRpb247XG4gIGZfZXllRGlyZWN0aW9uICAgPSBleWVQb3NpdGlvbiAgIC0gcG9zaXRpb247XG4gIGZfbGlnaHREaXJlY3Rpb24gPSBsaWdodFBvc2l0aW9uIC0gcG9zaXRpb247XG4gIGZfdXYgICAgICAgICAgICAgPSB1djtcbn0iLGk9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5EaXN0cmlidXRpb25fMl8wKGZsb2F0IHgsIGZsb2F0IHJvdWdobmVzcykge1xuICBmbG9hdCBOZG90SCA9IG1heCh4LCAwLjAwMDEpO1xuICBmbG9hdCBjb3MyQWxwaGEgPSBOZG90SCAqIE5kb3RIO1xuICBmbG9hdCB0YW4yQWxwaGEgPSAoY29zMkFscGhhIC0gMS4wKSAvIGNvczJBbHBoYTtcbiAgZmxvYXQgcm91Z2huZXNzMiA9IHJvdWdobmVzcyAqIHJvdWdobmVzcztcbiAgZmxvYXQgZGVub20gPSAzLjE0MTU5MjY1MzU4OTc5MyAqIHJvdWdobmVzczIgKiBjb3MyQWxwaGEgKiBjb3MyQWxwaGE7XG4gIHJldHVybiBleHAodGFuMkFscGhhIC8gcm91Z2huZXNzMikgLyBkZW5vbTtcbn1cblxuXG5cbmZsb2F0IGNvb2tUb3JyYW5jZVNwZWN1bGFyXzFfMShcbiAgdmVjMyBsaWdodERpcmVjdGlvbixcbiAgdmVjMyB2aWV3RGlyZWN0aW9uLFxuICB2ZWMzIHN1cmZhY2VOb3JtYWwsXG4gIGZsb2F0IHJvdWdobmVzcyxcbiAgZmxvYXQgZnJlc25lbCkge1xuXG4gIGZsb2F0IFZkb3ROID0gbWF4KGRvdCh2aWV3RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcbiAgZmxvYXQgTGRvdE4gPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcblxuICAvL0hhbGYgYW5nbGUgdmVjdG9yXG4gIHZlYzMgSCA9IG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24pO1xuXG4gIC8vR2VvbWV0cmljIHRlcm1cbiAgZmxvYXQgTmRvdEggPSBtYXgoZG90KHN1cmZhY2VOb3JtYWwsIEgpLCAwLjApO1xuICBmbG9hdCBWZG90SCA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgSCksIDAuMDAwMDAxKTtcbiAgZmxvYXQgTGRvdEggPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBIKSwgMC4wMDAwMDEpO1xuICBmbG9hdCBHMSA9ICgyLjAgKiBOZG90SCAqIFZkb3ROKSAvIFZkb3RIO1xuICBmbG9hdCBHMiA9ICgyLjAgKiBOZG90SCAqIExkb3ROKSAvIExkb3RIO1xuICBmbG9hdCBHID0gbWluKDEuMCwgbWluKEcxLCBHMikpO1xuICBcbiAgLy9EaXN0cmlidXRpb24gdGVybVxuICBmbG9hdCBEID0gYmVja21hbm5EaXN0cmlidXRpb25fMl8wKE5kb3RILCByb3VnaG5lc3MpO1xuXG4gIC8vRnJlc25lbCB0ZXJtXG4gIGZsb2F0IEYgPSBwb3coMS4wIC0gVmRvdE4sIGZyZXNuZWwpO1xuXG4gIC8vTXVsdGlwbHkgdGVybXMgYW5kIGRvbmVcbiAgcmV0dXJuICBHICogRiAqIEQgLyBtYXgoMy4xNDE1OTI2NSAqIFZkb3ROLCAwLjAwMDAwMSk7XG59XG5cblxuXG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzXG4gICAgICAgICAgICAsIGZyZXNuZWxcbiAgICAgICAgICAgICwga2FtYmllbnRcbiAgICAgICAgICAgICwga2RpZmZ1c2VcbiAgICAgICAgICAgICwga3NwZWN1bGFyXG4gICAgICAgICAgICAsIG9wYWNpdHk7XG51bmlmb3JtIHNhbXBsZXIyRCB0ZXh0dXJlO1xuXG52YXJ5aW5nIHZlYzMgZl9ub3JtYWxcbiAgICAgICAgICAgLCBmX2xpZ2h0RGlyZWN0aW9uXG4gICAgICAgICAgICwgZl9leWVEaXJlY3Rpb25cbiAgICAgICAgICAgLCBmX2RhdGE7XG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbihmX2RhdGEsIGNsaXBCb3VuZHNbMF0pKSB8fCBcbiAgICAgYW55KGdyZWF0ZXJUaGFuKGZfZGF0YSwgY2xpcEJvdW5kc1sxXSkpKSB7XG4gICAgZGlzY2FyZDtcbiAgfVxuXG4gIHZlYzMgTiA9IG5vcm1hbGl6ZShmX25vcm1hbCk7XG4gIHZlYzMgTCA9IG5vcm1hbGl6ZShmX2xpZ2h0RGlyZWN0aW9uKTtcbiAgdmVjMyBWID0gbm9ybWFsaXplKGZfZXllRGlyZWN0aW9uKTtcbiAgXG4gIGlmKCFnbF9Gcm9udEZhY2luZykge1xuICAgIE4gPSAtTjtcbiAgfVxuXG4gIGZsb2F0IHNwZWN1bGFyID0gY29va1RvcnJhbmNlU3BlY3VsYXJfMV8xKEwsIFYsIE4sIHJvdWdobmVzcywgZnJlc25lbCk7XG4gIGZsb2F0IGRpZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4sIEwpLCAwLjApLCAxLjApO1xuXG4gIHZlYzQgc3VyZmFjZUNvbG9yID0gZl9jb2xvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBmX3V2KTtcbiAgdmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5hICogdmVjNChkaWZmdXNlICogc3VyZmFjZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZlYzMoMSwxLDEpICogc3BlY3VsYXIsICAxLjApO1xuXG4gIGdsX0ZyYWdDb2xvciA9IGxpdENvbG9yICogb3BhY2l0eTtcbn0iLG89InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcbmF0dHJpYnV0ZSB2ZWMyIHV2O1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMzIGZfZGF0YTtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIGZfY29sb3IgPSBjb2xvcjtcbiAgZl9kYXRhICA9IHBvc2l0aW9uO1xuICBmX3V2ICAgID0gdXY7XG59IixhPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzMgZl9kYXRhO1xudmFyeWluZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYoYW55KGxlc3NUaGFuKGZfZGF0YSwgY2xpcEJvdW5kc1swXSkpIHx8IFxuICAgICBhbnkoZ3JlYXRlclRoYW4oZl9kYXRhLCBjbGlwQm91bmRzWzFdKSkpIHtcbiAgICBkaXNjYXJkO1xuICB9XG5cbiAgZ2xfRnJhZ0NvbG9yID0gZl9jb2xvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBmX3V2KSAqIG9wYWNpdHk7XG59IixzPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiB1djtcbmF0dHJpYnV0ZSBmbG9hdCBwb2ludFNpemU7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xuXG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbihwb3NpdGlvbiwgY2xpcEJvdW5kc1swXSkpIHx8IFxuICAgICBhbnkoZ3JlYXRlclRoYW4ocG9zaXRpb24sIGNsaXBCb3VuZHNbMV0pKSkge1xuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwwKTtcbiAgfSBlbHNlIHtcbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICB9XG4gIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTtcbiAgZl9jb2xvciA9IGNvbG9yO1xuICBmX3V2ID0gdXY7XG59IixsPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMiBwb2ludFIgPSBnbF9Qb2ludENvb3JkLnh5IC0gdmVjMigwLjUsMC41KTtcbiAgaWYoZG90KHBvaW50UiwgcG9pbnRSKSA+IDAuMjUpIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IGZfY29sb3IgKiB0ZXh0dXJlMkQodGV4dHVyZSwgZl91dikgKiBvcGFjaXR5O1xufSIsYz0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgZl9pZCAgICAgICAgPSBpZDtcbiAgZl9wb3NpdGlvbiAgPSBwb3NpdGlvbjtcbn0iLHU9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWMzICBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYoYW55KGxlc3NUaGFuKGZfcG9zaXRpb24sIGNsaXBCb3VuZHNbMF0pKSB8fCBcbiAgICAgYW55KGdyZWF0ZXJUaGFuKGZfcG9zaXRpb24sIGNsaXBCb3VuZHNbMV0pKSkge1xuICAgIGRpc2NhcmQ7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQsIGZfaWQueHl6KTtcbn0iLGg9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgIHBvc2l0aW9uO1xuYXR0cmlidXRlIGZsb2F0IHBvaW50U2l6ZTtcbmF0dHJpYnV0ZSB2ZWM0ICBpZDtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYoYW55KGxlc3NUaGFuKHBvc2l0aW9uLCBjbGlwQm91bmRzWzBdKSkgfHwgXG4gICAgIGFueShncmVhdGVyVGhhbihwb3NpdGlvbiwgY2xpcEJvdW5kc1sxXSkpKSB7XG4gICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsMCwwLDApO1xuICB9IGVsc2Uge1xuICAgIGdsX1Bvc2l0aW9uICA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTtcbiAgfVxuICBmX2lkICAgICAgICAgPSBpZDtcbiAgZl9wb3NpdGlvbiAgID0gcG9zaXRpb247XG59IixmPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbn0iLGQ9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWMzIGNvbnRvdXJDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbnRvdXJDb2xvciwxKTtcbn1cbiI7ci5tZXNoU2hhZGVyPXt2ZXJ0ZXg6bixmcmFnbWVudDppLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJub3JtYWwiLHR5cGU6InZlYzMifSx7bmFtZToiY29sb3IiLHR5cGU6InZlYzQifSx7bmFtZToidXYiLHR5cGU6InZlYzIifV19LHIud2lyZVNoYWRlcj17dmVydGV4Om8sZnJhZ21lbnQ6YSxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToiY29sb3IiLHR5cGU6InZlYzQifSx7bmFtZToidXYiLHR5cGU6InZlYzIifV19LHIucG9pbnRTaGFkZXI9e3ZlcnRleDpzLGZyYWdtZW50OmwsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBlOiJ2ZWMyIn0se25hbWU6InBvaW50U2l6ZSIsdHlwZToiZmxvYXQifV19LHIucGlja1NoYWRlcj17dmVydGV4OmMsZnJhZ21lbnQ6dSxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToiaWQiLHR5cGU6InZlYzQifV19LHIucG9pbnRQaWNrU2hhZGVyPXt2ZXJ0ZXg6aCxmcmFnbWVudDp1LGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJwb2ludFNpemUiLHR5cGU6ImZsb2F0In0se25hbWU6ImlkIix0eXBlOiJ2ZWM0In1dfSxyLmNvbnRvdXJTaGFkZXI9e3ZlcnRleDpmLGZyYWdtZW50OmQsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn1dfX0se31dLDEwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSxvLGEscyxsLGMsdSxoLGYsZCxwLGcsdixtLHksYix4LF8sdyxBLGssTSxUKXt0aGlzLmdsPXQsdGhpcy5jZWxscz1bXSx0aGlzLnBvc2l0aW9ucz1bXSx0aGlzLmludGVuc2l0eT1bXSx0aGlzLnRleHR1cmU9ZSx0aGlzLmRpcnR5PSEwLHRoaXMudHJpU2hhZGVyPXIsdGhpcy5saW5lU2hhZGVyPW4sdGhpcy5wb2ludFNoYWRlcj1pLHRoaXMucGlja1NoYWRlcj1vLHRoaXMucG9pbnRQaWNrU2hhZGVyPWEsdGhpcy5jb250b3VyU2hhZGVyPXMsdGhpcy50cmlhbmdsZVBvc2l0aW9ucz1sLHRoaXMudHJpYW5nbGVDb2xvcnM9dSx0aGlzLnRyaWFuZ2xlTm9ybWFscz1mLHRoaXMudHJpYW5nbGVVVnM9aCx0aGlzLnRyaWFuZ2xlSWRzPWMsdGhpcy50cmlhbmdsZVZBTz1kLHRoaXMudHJpYW5nbGVDb3VudD0wLHRoaXMubGluZVdpZHRoPTEsdGhpcy5lZGdlUG9zaXRpb25zPXAsdGhpcy5lZGdlQ29sb3JzPXYsdGhpcy5lZGdlVVZzPW0sdGhpcy5lZGdlSWRzPWcsdGhpcy5lZGdlVkFPPXksdGhpcy5lZGdlQ291bnQ9MCx0aGlzLnBvaW50UG9zaXRpb25zPWIsdGhpcy5wb2ludENvbG9ycz1fLHRoaXMucG9pbnRVVnM9dyx0aGlzLnBvaW50U2l6ZXM9QSx0aGlzLnBvaW50SWRzPXgsdGhpcy5wb2ludFZBTz1rLHRoaXMucG9pbnRDb3VudD0wLHRoaXMuY29udG91ckxpbmVXaWR0aD0xLHRoaXMuY29udG91clBvc2l0aW9ucz1NLHRoaXMuY29udG91clZBTz1ULHRoaXMuY29udG91ckNvdW50PTAsdGhpcy5jb250b3VyQ29sb3I9WzAsMCwwXSx0aGlzLmNvbnRvdXJFbmFibGU9ITAsdGhpcy5waWNrSWQ9MSx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLSgxLzApLC0oMS8wKSwtKDEvMCldXSx0aGlzLmNsaXBCb3VuZHM9W1stKDEvMCksLSgxLzApLC0oMS8wKV0sWzEvMCwxLzAsMS8wXV0sdGhpcy5saWdodFBvc2l0aW9uPVsxZTUsMWU1LDBdLHRoaXMuYW1iaWVudExpZ2h0PS44LHRoaXMuZGlmZnVzZUxpZ2h0PS44LHRoaXMuc3BlY3VsYXJMaWdodD0yLHRoaXMucm91Z2huZXNzPS41LHRoaXMuZnJlc25lbD0xLjUsdGhpcy5vcGFjaXR5PTEsdGhpcy5fbW9kZWw9Uix0aGlzLl92aWV3PVIsdGhpcy5fcHJvamVjdGlvbj1SLHRoaXMuX3Jlc29sdXRpb249WzEsMV19ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9dyh7Y29sb3JtYXA6dCxuc2hhZGVzOjI1Nixmb3JtYXQ6InJnYmEifSkscj1uZXcgVWludDhBcnJheSgxMDI0KSxuPTA7MjU2Pm47KytuKXtmb3IodmFyIGk9ZVtuXSxvPTA7Mz5vOysrbylyWzQqbitvXT1pW29dO3JbNCpuKzNdPTI1NSppWzNdfXJldHVybiBfKHIsWzI1NiwyNTYsNF0sWzQsMCwxXSl9ZnVuY3Rpb24gbyh0LGUscil7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7ZT5pOysraSluW2ldPTA7Zm9yKHZhciBvPXQubGVuZ3RoLGk9MDtvPmk7KytpKWZvcih2YXIgYT10W2ldLHM9MDtzPGEubGVuZ3RoOysrcyluW2Fbc11dPXJbaV07cmV0dXJuIG59ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO2U+bjsrK24pcltuXT10W25dWzJdO3JldHVybiByfWZ1bmN0aW9uIHModCl7dmFyIGU9cCh0LEUpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MixlLmF0dHJpYnV0ZXMudXYubG9jYXRpb249MyxlLmF0dHJpYnV0ZXMubm9ybWFsLmxvY2F0aW9uPTQsZX1mdW5jdGlvbiBsKHQpe3ZhciBlPXAodCxMKTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsZS5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTIsZS5hdHRyaWJ1dGVzLnV2LmxvY2F0aW9uPTMsZX1mdW5jdGlvbiBjKHQpe3ZhciBlPXAodCxTKTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsZS5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTIsZS5hdHRyaWJ1dGVzLnV2LmxvY2F0aW9uPTMsZS5hdHRyaWJ1dGVzLnBvaW50U2l6ZS5sb2NhdGlvbj00LGV9ZnVuY3Rpb24gdSh0KXt2YXIgZT1wKHQsQyk7cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5pZC5sb2NhdGlvbj0xLGV9ZnVuY3Rpb24gaCh0KXt2YXIgZT1wKHQsUCk7cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5pZC5sb2NhdGlvbj0xLGUuYXR0cmlidXRlcy5wb2ludFNpemUubG9jYXRpb249NCxlfWZ1bmN0aW9uIGYodCl7dmFyIGU9cCh0LHopO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxlfWZ1bmN0aW9uIGQodCl7dmFyIGU9dC5nbCxyPXMoZSksaT1sKGUpLG89YyhlKSxhPXUoZSksZD1oKGUpLHA9ZihlKSx5PW0oZSxfKG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTVdKSxbMSwxLDRdKSk7eS5nZW5lcmF0ZU1pcG1hcCgpLHkubWluRmlsdGVyPWUuTElORUFSX01JUE1BUF9MSU5FQVIseS5tYWdGaWx0ZXI9ZS5MSU5FQVI7dmFyIGI9ZyhlKSx4PWcoZSksdz1nKGUpLEE9ZyhlKSxrPWcoZSksTT12KGUsW3tidWZmZXI6Yix0eXBlOmUuRkxPQVQsc2l6ZTozfSx7YnVmZmVyOmssdHlwZTplLlVOU0lHTkVEX0JZVEUsc2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9LHtidWZmZXI6eCx0eXBlOmUuRkxPQVQsc2l6ZTo0fSx7YnVmZmVyOncsdHlwZTplLkZMT0FULHNpemU6Mn0se2J1ZmZlcjpBLHR5cGU6ZS5GTE9BVCxzaXplOjN9XSksVD1nKGUpLEU9ZyhlKSxMPWcoZSksUz1nKGUpLEM9dihlLFt7YnVmZmVyOlQsdHlwZTplLkZMT0FULHNpemU6M30se2J1ZmZlcjpTLHR5cGU6ZS5VTlNJR05FRF9CWVRFLHNpemU6NCxub3JtYWxpemVkOiEwfSx7YnVmZmVyOkUsdHlwZTplLkZMT0FULHNpemU6NH0se2J1ZmZlcjpMLHR5cGU6ZS5GTE9BVCxzaXplOjJ9XSksUD1nKGUpLHo9ZyhlKSxSPWcoZSksTz1nKGUpLEk9ZyhlKSxOPXYoZSxbe2J1ZmZlcjpQLHR5cGU6ZS5GTE9BVCxzaXplOjN9LHtidWZmZXI6SSx0eXBlOmUuVU5TSUdORURfQllURSxzaXplOjQsbm9ybWFsaXplZDohMH0se2J1ZmZlcjp6LHR5cGU6ZS5GTE9BVCxzaXplOjR9LHtidWZmZXI6Uix0eXBlOmUuRkxPQVQsc2l6ZToyfSx7YnVmZmVyOk8sdHlwZTplLkZMT0FULHNpemU6MX1dKSxqPWcoZSksRj12KGUsW3tidWZmZXI6aix0eXBlOmUuRkxPQVQsc2l6ZTozfV0pLEQ9bmV3IG4oZSx5LHIsaSxvLGEsZCxwLGIsayx4LHcsQSxNLFQsUyxFLEwsQyxQLEkseixSLE8sTixqLEYpO3JldHVybiBELnVwZGF0ZSh0KSxEfXZhciBwPXQoImdsLXNoYWRlciIpLGc9dCgiZ2wtYnVmZmVyIiksdj10KCJnbC12YW8iKSxtPXQoImdsLXRleHR1cmUyZCIpLHk9dCgibm9ybWFscyIpLGI9dCgiZ2wtbWF0NC9tdWx0aXBseSIpLHg9dCgiZ2wtbWF0NC9pbnZlcnQiKSxfPXQoIm5kYXJyYXkiKSx3PXQoImNvbG9ybWFwIiksQT10KCJzaW1wbGljaWFsLWNvbXBsZXgtY29udG91ciIpLGs9dCgidHlwZWRhcnJheS1wb29sIiksTT10KCIuL2xpYi9zaGFkZXJzIiksVD10KCIuL2xpYi9jbG9zZXN0LXBvaW50IiksRT1NLm1lc2hTaGFkZXIsTD1NLndpcmVTaGFkZXIsUz1NLnBvaW50U2hhZGVyLEM9TS5waWNrU2hhZGVyLFA9TS5wb2ludFBpY2tTaGFkZXIsej1NLmNvbnRvdXJTaGFkZXIsUj1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sTz1uLnByb3RvdHlwZTtPLmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BhY2l0eT49MX0sTy5pc1RyYW5zcGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BhY2l0eTwxfSxPLnBpY2tTbG90cz0xLE8uc2V0UGlja0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9dH0sTy5oaWdobGlnaHQ9ZnVuY3Rpb24odCl7aWYoIXR8fCF0aGlzLmNvbnRvdXJFbmFibGUpcmV0dXJuIHZvaWQodGhpcy5jb250b3VyQ291bnQ9MCk7Zm9yKHZhciBlPUEodGhpcy5jZWxscyx0aGlzLmludGVuc2l0eSx0LmludGVuc2l0eSkscj1lLmNlbGxzLG49ZS52ZXJ0ZXhJZHMsaT1lLnZlcnRleFdlaWdodHMsbz1yLmxlbmd0aCxhPWsubWFsbG9jRmxvYXQzMig2Km8pLHM9MCxsPTA7bz5sOysrbClmb3IodmFyIGM9cltsXSx1PTA7Mj51OysrdSl7dmFyIGg9Y1swXTsyPT09Yy5sZW5ndGgmJihoPWNbdV0pO2Zvcih2YXIgZj1uW2hdWzBdLGQ9bltoXVsxXSxwPWlbaF0sZz0xLXAsdj10aGlzLnBvc2l0aW9uc1tmXSxtPXRoaXMucG9zaXRpb25zW2RdLHk9MDszPnk7Kyt5KWFbcysrXT1wKnZbeV0rZyptW3ldfXRoaXMuY29udG91ckNvdW50PXMvM3wwLHRoaXMuY29udG91clBvc2l0aW9ucy51cGRhdGUoYS5zdWJhcnJheSgwLHMpKSxrLmZyZWUoYSl9LE8udXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDt0aGlzLmRpcnR5PSEwLCJjb250b3VyRW5hYmxlImluIHQmJih0aGlzLmNvbnRvdXJFbmFibGU9dC5jb250b3VyRW5hYmxlKSwiY29udG91ckNvbG9yImluIHQmJih0aGlzLmNvbnRvdXJDb2xvcj10LmNvbnRvdXJDb2xvciksImxpbmVXaWR0aCJpbiB0JiYodGhpcy5saW5lV2lkdGg9dC5saW5lV2lkdGgpLCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9dC5vcGFjaXR5KSx0LnRleHR1cmU/KHRoaXMudGV4dHVyZS5kaXNwb3NlKCksdGhpcy50ZXh0dXJlPW0oZSx0LnRleHR1cmUpKTp0LmNvbG9ybWFwJiYodGhpcy50ZXh0dXJlLnNoYXBlPVsyNTYsMjU2XSx0aGlzLnRleHR1cmUubWluRmlsdGVyPWUuTElORUFSX01JUE1BUF9MSU5FQVIsdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcj1lLkxJTkVBUix0aGlzLnRleHR1cmUuc2V0UGl4ZWxzKGkodC5jb2xvcm1hcCkpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcCgpKTt2YXIgcj10LmNlbGxzLG49dC5wb3NpdGlvbnM7aWYobiYmcil7dmFyIHM9W10sbD1bXSxjPVtdLHU9W10saD1bXSxmPVtdLGQ9W10scD1bXSxnPVtdLHY9W10sYj1bXSx4PVtdLF89W10sdz1bXTt0aGlzLmNlbGxzPXIsdGhpcy5wb3NpdGlvbnM9bjt2YXIgQT10LnZlcnRleE5vcm1hbHMsaz10LmNlbGxOb3JtYWxzO3QudXNlRmFjZXROb3JtYWxzJiYhayYmKGs9eS5mYWNlTm9ybWFscyhyLG4pKSxrfHxBfHwoQT15LnZlcnRleE5vcm1hbHMocixuKSk7dmFyIE09dC52ZXJ0ZXhDb2xvcnMsVD10LmNlbGxDb2xvcnMsRT10Lm1lc2hDb2xvcnx8WzEsMSwxLDFdLEw9dC52ZXJ0ZXhVVnMsUz10LnZlcnRleEludGVuc2l0eSxDPXQuY2VsbFVWcyxQPXQuY2VsbEludGVuc2l0eSx6PTEvMCxSPS0oMS8wKTtpZighTCYmIUMpaWYoUylmb3IodmFyIE89MDtPPFMubGVuZ3RoOysrTyl7dmFyIEk9U1tPXTt6PU1hdGgubWluKHosSSksUj1NYXRoLm1heChSLEkpfWVsc2UgaWYoUClmb3IodmFyIE89MDtPPFAubGVuZ3RoOysrTyl7dmFyIEk9UFtPXTt6PU1hdGgubWluKHosSSksUj1NYXRoLm1heChSLEkpfWVsc2UgZm9yKHZhciBPPTA7TzxuLmxlbmd0aDsrK08pe3ZhciBJPW5bT11bMl07ej1NYXRoLm1pbih6LEkpLFI9TWF0aC5tYXgoUixJKX1TP3RoaXMuaW50ZW5zaXR5PVM6UD90aGlzLmludGVuc2l0eT1vKHIsbi5sZW5ndGgsUCk6dGhpcy5pbnRlbnNpdHk9YShuKTt2YXIgTj10LnBvaW50U2l6ZXMsaj10LnBvaW50U2l6ZXx8MTt0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLSgxLzApLC0oMS8wKSwtKDEvMCldXTtmb3IodmFyIE89MDtPPG4ubGVuZ3RoOysrTylmb3IodmFyIEY9bltPXSxEPTA7Mz5EOysrRCkhaXNOYU4oRltEXSkmJmlzRmluaXRlKEZbRF0pJiYodGhpcy5ib3VuZHNbMF1bRF09TWF0aC5taW4odGhpcy5ib3VuZHNbMF1bRF0sRltEXSksdGhpcy5ib3VuZHNbMV1bRF09TWF0aC5tYXgodGhpcy5ib3VuZHNbMV1bRF0sRltEXSkpO3ZhciBCPTAsVT0wLFY9MDt0OmZvcih2YXIgTz0wO088ci5sZW5ndGg7KytPKXt2YXIgcT1yW09dO3N3aXRjaChxLmxlbmd0aCl7Y2FzZSAxOmZvcih2YXIgSD1xWzBdLEY9bltIXSxEPTA7Mz5EOysrRClpZihpc05hTihGW0RdKXx8IWlzRmluaXRlKEZbRF0pKWNvbnRpbnVlIHQ7di5wdXNoKEZbMF0sRlsxXSxGWzJdKTt2YXIgRztHPU0/TVtIXTpUP1RbT106RSwzPT09Ry5sZW5ndGg/Yi5wdXNoKEdbMF0sR1sxXSxHWzJdLDEpOmIucHVzaChHWzBdLEdbMV0sR1syXSxHWzNdKTt2YXIgWTtZPUw/TFtIXTpTP1soU1tIXS16KS8oUi16KSwwXTpDP0NbT106UD9bKFBbT10teikvKFIteiksMF06WyhGWzJdLXopLyhSLXopLDBdLHgucHVzaChZWzBdLFlbMV0pLE4/Xy5wdXNoKE5bSF0pOl8ucHVzaChqKSx3LnB1c2goTyksVis9MTticmVhaztjYXNlIDI6Zm9yKHZhciBEPTA7Mj5EOysrRClmb3IodmFyIEg9cVtEXSxGPW5bSF0sWD0wOzM+WDsrK1gpaWYoaXNOYU4oRltYXSl8fCFpc0Zpbml0ZShGW1hdKSljb250aW51ZSB0O2Zvcih2YXIgRD0wOzI+RDsrK0Qpe3ZhciBIPXFbRF0sRj1uW0hdO2YucHVzaChGWzBdLEZbMV0sRlsyXSk7dmFyIEc7Rz1NP01bSF06VD9UW09dOkUsMz09PUcubGVuZ3RoP2QucHVzaChHWzBdLEdbMV0sR1syXSwxKTpkLnB1c2goR1swXSxHWzFdLEdbMl0sR1szXSk7dmFyIFk7WT1MP0xbSF06Uz9bKFNbSF0teikvKFIteiksMF06Qz9DW09dOlA/WyhQW09dLXopLyhSLXopLDBdOlsoRlsyXS16KS8oUi16KSwwXSxwLnB1c2goWVswXSxZWzFdKSxnLnB1c2goTyl9VSs9MTticmVhaztjYXNlIDM6Zm9yKHZhciBEPTA7Mz5EOysrRClmb3IodmFyIEg9cVtEXSxGPW5bSF0sWD0wOzM+WDsrK1gpaWYoaXNOYU4oRltYXSl8fCFpc0Zpbml0ZShGW1hdKSljb250aW51ZSB0O2Zvcih2YXIgRD0wOzM+RDsrK0Qpe3ZhciBIPXFbRF0sRj1uW0hdO3MucHVzaChGWzBdLEZbMV0sRlsyXSk7dmFyIEc7Rz1NP01bSF06VD9UW09dOkUsMz09PUcubGVuZ3RoP2wucHVzaChHWzBdLEdbMV0sR1syXSwxKTpsLnB1c2goR1swXSxHWzFdLEdbMl0sR1szXSk7dmFyIFk7WT1MP0xbSF06Uz9bKFNbSF0teikvKFIteiksMF06Qz9DW09dOlA/WyhQW09dLXopLyhSLXopLDBdOlsoRlsyXS16KS8oUi16KSwwXSx1LnB1c2goWVswXSxZWzFdKTt2YXIgVztXPUE/QVtIXTprW09dLGMucHVzaChXWzBdLFdbMV0sV1syXSksaC5wdXNoKE8pfUIrPTF9fXRoaXMucG9pbnRDb3VudD1WLHRoaXMuZWRnZUNvdW50PVUsdGhpcy50cmlhbmdsZUNvdW50PUIsdGhpcy5wb2ludFBvc2l0aW9ucy51cGRhdGUodiksdGhpcy5wb2ludENvbG9ycy51cGRhdGUoYiksdGhpcy5wb2ludFVWcy51cGRhdGUoeCksdGhpcy5wb2ludFNpemVzLnVwZGF0ZShfKSx0aGlzLnBvaW50SWRzLnVwZGF0ZShuZXcgVWludDMyQXJyYXkodykpLHRoaXMuZWRnZVBvc2l0aW9ucy51cGRhdGUoZiksdGhpcy5lZGdlQ29sb3JzLnVwZGF0ZShkKSx0aGlzLmVkZ2VVVnMudXBkYXRlKHApLHRoaXMuZWRnZUlkcy51cGRhdGUobmV3IFVpbnQzMkFycmF5KGcpKSx0aGlzLnRyaWFuZ2xlUG9zaXRpb25zLnVwZGF0ZShzKSx0aGlzLnRyaWFuZ2xlQ29sb3JzLnVwZGF0ZShsKSx0aGlzLnRyaWFuZ2xlVVZzLnVwZGF0ZSh1KSx0aGlzLnRyaWFuZ2xlTm9ybWFscy51cGRhdGUoYyksdGhpcy50cmlhbmdsZUlkcy51cGRhdGUobmV3IFVpbnQzMkFycmF5KGgpKX19LE8uZHJhd1RyYW5zcGFyZW50PU8uZHJhdz1mdW5jdGlvbih0KXt0PXR8fHt9O2Zvcih2YXIgZT10aGlzLmdsLHI9dC5tb2RlbHx8UixuPXQudmlld3x8UixpPXQucHJvamVjdGlvbnx8UixvPVtbLTFlNiwtMWU2LC0xZTZdLFsxZTYsMWU2LDFlNl1dLGE9MDszPmE7KythKW9bMF1bYV09TWF0aC5tYXgob1swXVthXSx0aGlzLmNsaXBCb3VuZHNbMF1bYV0pLG9bMV1bYV09TWF0aC5taW4ob1sxXVthXSx0aGlzLmNsaXBCb3VuZHNbMV1bYV0pO3ZhciBzPXttb2RlbDpyLHZpZXc6bixwcm9qZWN0aW9uOmksY2xpcEJvdW5kczpvLGthbWJpZW50OnRoaXMuYW1iaWVudExpZ2h0LGtkaWZmdXNlOnRoaXMuZGlmZnVzZUxpZ2h0LGtzcGVjdWxhcjp0aGlzLnNwZWN1bGFyTGlnaHQscm91Z2huZXNzOnRoaXMucm91Z2huZXNzLGZyZXNuZWw6dGhpcy5mcmVzbmVsLGV5ZVBvc2l0aW9uOlswLDAsMF0sbGlnaHRQb3NpdGlvbjpbMCwwLDBdLG9wYWNpdHk6dGhpcy5vcGFjaXR5LGNvbnRvdXJDb2xvcjp0aGlzLmNvbnRvdXJDb2xvcix0ZXh0dXJlOjB9O3RoaXMudGV4dHVyZS5iaW5kKDApO3ZhciBsPW5ldyBBcnJheSgxNik7YihsLHMudmlldyxzLm1vZGVsKSxiKGwscy5wcm9qZWN0aW9uLGwpLHgobCxsKTtmb3IodmFyIGE9MDszPmE7KythKXMuZXllUG9zaXRpb25bYV09bFsxMithXS9sWzE1XTtmb3IodmFyIGM9bFsxNV0sYT0wOzM+YTsrK2EpYys9dGhpcy5saWdodFBvc2l0aW9uW2FdKmxbNCphKzNdO2Zvcih2YXIgYT0wOzM+YTsrK2Epe2Zvcih2YXIgdT1sWzEyK2FdLGg9MDszPmg7KytoKXUrPWxbNCpoK2FdKnRoaXMubGlnaHRQb3NpdGlvbltoXTtzLmxpZ2h0UG9zaXRpb25bYV09dS9jfWlmKHRoaXMudHJpYW5nbGVDb3VudD4wKXt2YXIgZj10aGlzLnRyaVNoYWRlcjtmLmJpbmQoKSxmLnVuaWZvcm1zPXMsdGhpcy50cmlhbmdsZVZBTy5iaW5kKCksZS5kcmF3QXJyYXlzKGUuVFJJQU5HTEVTLDAsMyp0aGlzLnRyaWFuZ2xlQ291bnQpLHRoaXMudHJpYW5nbGVWQU8udW5iaW5kKCl9aWYodGhpcy5lZGdlQ291bnQ+MCYmdGhpcy5saW5lV2lkdGg+MCl7dmFyIGY9dGhpcy5saW5lU2hhZGVyO2YuYmluZCgpLGYudW5pZm9ybXM9cyx0aGlzLmVkZ2VWQU8uYmluZCgpLGUubGluZVdpZHRoKHRoaXMubGluZVdpZHRoKSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLDIqdGhpcy5lZGdlQ291bnQpLHRoaXMuZWRnZVZBTy51bmJpbmQoKX1pZih0aGlzLnBvaW50Q291bnQ+MCl7dmFyIGY9dGhpcy5wb2ludFNoYWRlcjtmLmJpbmQoKSxmLnVuaWZvcm1zPXMsdGhpcy5wb2ludFZBTy5iaW5kKCksZS5kcmF3QXJyYXlzKGUuUE9JTlRTLDAsdGhpcy5wb2ludENvdW50KSx0aGlzLnBvaW50VkFPLnVuYmluZCgpfWlmKHRoaXMuY29udG91ckVuYWJsZSYmdGhpcy5jb250b3VyQ291bnQ+MCYmdGhpcy5jb250b3VyTGluZVdpZHRoPjApe3ZhciBmPXRoaXMuY29udG91clNoYWRlcjtmLmJpbmQoKSxmLnVuaWZvcm1zPXMsdGhpcy5jb250b3VyVkFPLmJpbmQoKSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLHRoaXMuY29udG91ckNvdW50KSx0aGlzLmNvbnRvdXJWQU8udW5iaW5kKCl9fSxPLmRyYXdQaWNrPWZ1bmN0aW9uKHQpe3Q9dHx8e307Zm9yKHZhciBlPXRoaXMuZ2wscj10Lm1vZGVsfHxSLG49dC52aWV3fHxSLGk9dC5wcm9qZWN0aW9ufHxSLG89W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYsMWU2XV0sYT0wOzM+YTsrK2Epb1swXVthXT1NYXRoLm1heChvWzBdW2FdLHRoaXMuY2xpcEJvdW5kc1swXVthXSksb1sxXVthXT1NYXRoLm1pbihvWzFdW2FdLHRoaXMuY2xpcEJvdW5kc1sxXVthXSk7dGhpcy5fbW9kZWw9W10uc2xpY2UuY2FsbChyKSx0aGlzLl92aWV3PVtdLnNsaWNlLmNhbGwobiksdGhpcy5fcHJvamVjdGlvbj1bXS5zbGljZS5jYWxsKGkpLHRoaXMuX3Jlc29sdXRpb249W2UuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF07dmFyIHM9e21vZGVsOnIsdmlldzpuLHByb2plY3Rpb246aSxjbGlwQm91bmRzOm8scGlja0lkOnRoaXMucGlja0lkLzI1NX0sbD10aGlzLnBpY2tTaGFkZXI7aWYobC5iaW5kKCksbC51bmlmb3Jtcz1zLHRoaXMudHJpYW5nbGVDb3VudD4wJiYodGhpcy50cmlhbmdsZVZBTy5iaW5kKCksZS5kcmF3QXJyYXlzKGUuVFJJQU5HTEVTLDAsMyp0aGlzLnRyaWFuZ2xlQ291bnQpLHRoaXMudHJpYW5nbGVWQU8udW5iaW5kKCkpLHRoaXMuZWRnZUNvdW50PjAmJih0aGlzLmVkZ2VWQU8uYmluZCgpLGUubGluZVdpZHRoKHRoaXMubGluZVdpZHRoKSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLDIqdGhpcy5lZGdlQ291bnQpLHRoaXMuZWRnZVZBTy51bmJpbmQoKSksdGhpcy5wb2ludENvdW50PjApe3ZhciBsPXRoaXMucG9pbnRQaWNrU2hhZGVyO2wuYmluZCgpLGwudW5pZm9ybXM9cyx0aGlzLnBvaW50VkFPLmJpbmQoKSxlLmRyYXdBcnJheXMoZS5QT0lOVFMsMCx0aGlzLnBvaW50Q291bnQpLHRoaXMucG9pbnRWQU8udW5iaW5kKCl9fSxPLnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO2Zvcih2YXIgZT10LnZhbHVlWzBdKzI1Nip0LnZhbHVlWzFdKzY1NTM2KnQudmFsdWVbMl0scj10aGlzLmNlbGxzW2VdLG49dGhpcy5wb3NpdGlvbnMsaT1uZXcgQXJyYXkoci5sZW5ndGgpLG89MDtvPHIubGVuZ3RoOysrbylpW29dPW5bcltvXV07dmFyIGE9VChpLFt0LmNvb3JkWzBdLHRoaXMuX3Jlc29sdXRpb25bMV0tdC5jb29yZFsxXV0sdGhpcy5fbW9kZWwsdGhpcy5fdmlldyx0aGlzLl9wcm9qZWN0aW9uLHRoaXMuX3Jlc29sdXRpb24pO2lmKCFhKXJldHVybiBudWxsO2Zvcih2YXIgcz1hWzJdLGw9MCxvPTA7bzxyLmxlbmd0aDsrK28pbCs9c1tvXSp0aGlzLmludGVuc2l0eVtyW29dXTtyZXR1cm57cG9zaXRpb246YVsxXSxpbmRleDpyW2FbMF1dLGNlbGw6cixjZWxsSWQ6ZSxpbnRlbnNpdHk6bCxkYXRhQ29vcmRpbmF0ZTp0aGlzLnBvc2l0aW9uc1tyW2FbMF1dXX19LE8uZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMudGV4dHVyZS5kaXNwb3NlKCksdGhpcy50cmlTaGFkZXIuZGlzcG9zZSgpLHRoaXMubGluZVNoYWRlci5kaXNwb3NlKCksdGhpcy5wb2ludFNoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBvaW50UGlja1NoYWRlci5kaXNwb3NlKCksdGhpcy50cmlhbmdsZVZBTy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZVBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZUNvbG9ycy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZVVWcy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZU5vcm1hbHMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVJZHMuZGlzcG9zZSgpLHRoaXMuZWRnZVZBTy5kaXNwb3NlKCksdGhpcy5lZGdlUG9zaXRpb25zLmRpc3Bvc2UoKSx0aGlzLmVkZ2VDb2xvcnMuZGlzcG9zZSgpLHRoaXMuZWRnZVVWcy5kaXNwb3NlKCksdGhpcy5lZGdlSWRzLmRpc3Bvc2UoKSx0aGlzLnBvaW50VkFPLmRpc3Bvc2UoKSx0aGlzLnBvaW50UG9zaXRpb25zLmRpc3Bvc2UoKSx0aGlzLnBvaW50Q29sb3JzLmRpc3Bvc2UoKSx0aGlzLnBvaW50VVZzLmRpc3Bvc2UoKSx0aGlzLnBvaW50U2l6ZXMuZGlzcG9zZSgpLHRoaXMucG9pbnRJZHMuZGlzcG9zZSgpLHRoaXMuY29udG91clZBTy5kaXNwb3NlKCksdGhpcy5jb250b3VyUG9zaXRpb25zLmRpc3Bvc2UoKSx0aGlzLmNvbnRvdXJTaGFkZXIuZGlzcG9zZSgpfSxlLmV4cG9ydHM9ZH0seyIuL2xpYi9jbG9zZXN0LXBvaW50IjoxMDUsIi4vbGliL3NoYWRlcnMiOjEwNixjb2xvcm1hcDo1NywiZ2wtYnVmZmVyIjo3NSwiZ2wtbWF0NC9pbnZlcnQiOjk0LCJnbC1tYXQ0L211bHRpcGx5Ijo5NiwiZ2wtc2hhZGVyIjoxNTQsImdsLXRleHR1cmUyZCI6MTgwLCJnbC12YW8iOjE4NCxuZGFycmF5OjIxMCxub3JtYWxzOjEwOSwic2ltcGxpY2lhbC1jb21wbGV4LWNvbnRvdXIiOjExMSwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwxMDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDsrK3IpZSs9dFtyXTtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciByPWUubGVuZ3RoLGk9bmV3IEFycmF5KHIrMSksYT0wO3I+YTsrK2Epe2Zvcih2YXIgcz1uZXcgQXJyYXkocisxKSxsPTA7cj49bDsrK2wpc1tsXT10W2xdW2FdO2lbYV09c31pW3JdPW5ldyBBcnJheShyKzEpO2Zvcih2YXIgYT0wO3I+PWE7KythKWlbcl1bYV09MTtmb3IodmFyIGM9bmV3IEFycmF5KHIrMSksYT0wO3I+YTsrK2EpY1thXT1lW2FdO2Nbcl09MTt2YXIgdT1vKGksYyksaD1uKHVbcisxXSk7MD09PWgmJihoPTEpO2Zvcih2YXIgZj1uZXcgQXJyYXkocisxKSxhPTA7cj49YTsrK2EpZlthXT1uKHVbYV0pL2g7cmV0dXJuIGZ9ZS5leHBvcnRzPWk7dmFyIG89dCgicm9idXN0LWxpbmVhci1zb2x2ZSIpfSx7InJvYnVzdC1saW5lYXItc29sdmUiOjIxM31dLDEwOTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPTFlLTY7ci52ZXJ0ZXhOb3JtYWxzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtyPm87KytvKWlbb109WzAsMCwwXTtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbylmb3IodmFyIGE9dFtvXSxzPTAsbD1hW2EubGVuZ3RoLTFdLGM9YVswXSx1PTA7dTxhLmxlbmd0aDsrK3Upe3M9bCxsPWMsYz1hWyh1KzEpJWEubGVuZ3RoXTtmb3IodmFyIGg9ZVtzXSxmPWVbbF0sZD1lW2NdLHA9bmV3IEFycmF5KDMpLGc9MCx2PW5ldyBBcnJheSgzKSxtPTAseT0wOzM+eTsrK3kpcFt5XT1oW3ldLWZbeV0sZys9cFt5XSpwW3ldLHZbeV09ZFt5XS1mW3ldLG0rPXZbeV0qdlt5XTtpZihnKm0+bilmb3IodmFyIGI9aVtsXSx4PTEvTWF0aC5zcXJ0KGcqbSkseT0wOzM+eTsrK3kpe3ZhciBfPSh5KzEpJTMsdz0oeSsyKSUzO2JbeV0rPXgqKHZbX10qcFt3XS12W3ddKnBbX10pfX1mb3IodmFyIG89MDtyPm87KytvKXtmb3IodmFyIGI9aVtvXSxBPTAseT0wOzM+eTsrK3kpQSs9Ylt5XSpiW3ldO2lmKEE+bilmb3IodmFyIHg9MS9NYXRoLnNxcnQoQSkseT0wOzM+eTsrK3kpYlt5XSo9eDtlbHNlIGZvcih2YXIgeT0wOzM+eTsrK3kpYlt5XT0wfXJldHVybiBpfSxyLmZhY2VOb3JtYWxzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtyPm87KytvKXtmb3IodmFyIGE9dFtvXSxzPW5ldyBBcnJheSgzKSxsPTA7Mz5sOysrbClzW2xdPWVbYVtsXV07Zm9yKHZhciBjPW5ldyBBcnJheSgzKSx1PW5ldyBBcnJheSgzKSxsPTA7Mz5sOysrbCljW2xdPXNbMV1bbF0tc1swXVtsXSx1W2xdPXNbMl1bbF0tc1swXVtsXTtmb3IodmFyIGg9bmV3IEFycmF5KDMpLGY9MCxsPTA7Mz5sOysrbCl7dmFyIGQ9KGwrMSklMyxwPShsKzIpJTM7aFtsXT1jW2RdKnVbcF0tY1twXSp1W2RdLGYrPWhbbF0qaFtsXX1mPWY+bj8xL01hdGguc3FydChmKTowO2Zvcih2YXIgbD0wOzM+bDsrK2wpaFtsXSo9ZjtpW29dPWh9cmV0dXJuIGl9fSx7fV0sMTEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixzKXtpLmxlbmd0aDxuLmxlbmd0aCYmKGk9bmV3IEZsb2F0NjRBcnJheShuLmxlbmd0aCksbz1uZXcgRmxvYXQ2NEFycmF5KG4ubGVuZ3RoKSxhPW5ldyBGbG9hdDY0QXJyYXkobi5sZW5ndGgpKTtmb3IodmFyIGw9MDtsPG4ubGVuZ3RoOysrbClpW2xdPXRbbF0tbltsXSxvW2xdPWVbbF0tdFtsXSxhW2xdPXJbbF0tdFtsXTtmb3IodmFyIGM9MCx1PTAsaD0wLGY9MCxkPTAscD0wLGw9MDtsPG4ubGVuZ3RoOysrbCl7dmFyIGc9b1tsXSx2PWFbbF0sbT1pW2xdO2MrPWcqZyx1Kz1nKnYsaCs9dip2LGYrPW0qZyxkKz1tKnYscCs9bSptfXZhciB5LGI9TWF0aC5hYnMoYypoLXUqdSkseD11KmQtaCpmLF89dSpmLWMqZDtpZihiPj14K18paWYoMD54KTA+XyYmMD5mPyhfPTAsLWY+PWM/KHg9MSx5PWMrMipmK3ApOih4PS1mL2MseT1mKngrcCkpOih4PTAsZD49MD8oXz0wLHk9cCk6LWQ+PWg/KF89MSx5PWgrMipkK3ApOihfPS1kL2gseT1kKl8rcCkpO2Vsc2UgaWYoMD5fKV89MCxmPj0wPyh4PTAseT1wKTotZj49Yz8oeD0xLHk9YysyKmYrcCk6KHg9LWYvYyx5PWYqeCtwKTtlbHNle3ZhciB3PTEvYjt4Kj13LF8qPXcseT14KihjKngrdSpfKzIqZikrXyoodSp4K2gqXysyKmQpK3B9ZWxzZXt2YXIgQSxrLE0sVDswPng/KEE9dStmLGs9aCtkLGs+QT8oTT1rLUEsVD1jLTIqdStoLE0+PVQ/KHg9MSxfPTAseT1jKzIqZitwKTooeD1NL1QsXz0xLXgseT14KihjKngrdSpfKzIqZikrXyoodSp4K2gqXysyKmQpK3ApKTooeD0wLDA+PWs/KF89MSx5PWgrMipkK3ApOmQ+PTA/KF89MCx5PXApOihfPS1kL2gseT1kKl8rcCkpKTowPl8/KEE9dStkLGs9YytmLGs+QT8oTT1rLUEsVD1jLTIqdStoLE0+PVQ/KF89MSx4PTAseT1oKzIqZCtwKTooXz1NL1QseD0xLV8seT14KihjKngrdSpfKzIqZikrXyoodSp4K2gqXysyKmQpK3ApKTooXz0wLDA+PWs/KHg9MSx5PWMrMipmK3ApOmY+PTA/KHg9MCx5PXApOih4PS1mL2MseT1mKngrcCkpKTooTT1oK2QtdS1mLDA+PU0/KHg9MCxfPTEseT1oKzIqZCtwKTooVD1jLTIqdStoLE0+PVQ/KHg9MSxfPTAseT1jKzIqZitwKTooeD1NL1QsXz0xLXgseT14KihjKngrdSpfKzIqZikrXyoodSp4K2gqXysyKmQpK3ApKSl9Zm9yKHZhciBFPTEteC1fLGw9MDtsPG4ubGVuZ3RoOysrbClzW2xdPUUqdFtsXSt4KmVbbF0rXypyW2xdO3JldHVybiAwPnk/MDp5fXZhciBpPW5ldyBGbG9hdDY0QXJyYXkoNCksbz1uZXcgRmxvYXQ2NEFycmF5KDQpLGE9bmV3IEZsb2F0NjRBcnJheSg0KTtlLmV4cG9ydHM9bn0se31dLDExMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPTAsbj0wO2U+bjsrK24pcj0wfE1hdGgubWF4KHIsdFtuXS5sZW5ndGgpO3JldHVybiByLTF9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPWgubWFsbG9jVWludDgociksaT0wO3I+aTsrK2kpbltpXT10W2ldPGV8MDtyZXR1cm4gbn1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49ZSooZSsxKS8yKnJ8MCxpPWgubWFsbG9jVWludDMyKDIqbiksbz0wLGE9MDtyPmE7KythKWZvcih2YXIgcz10W2FdLGU9cy5sZW5ndGgsbD0wO2U+bDsrK2wpZm9yKHZhciBjPTA7bD5jOysrYyl7dmFyIGQ9c1tjXSxwPXNbbF07aVtvKytdPTB8TWF0aC5taW4oZCxwKSxpW28rK109MHxNYXRoLm1heChkLHApfXZhciBnPW8vMnwwO2YodShpLFtnLDJdKSk7Zm9yKHZhciB2PTIsYT0yO28+YTthKz0yKWlbYS0yXT09PWlbYV0mJmlbYS0xXT09PWlbYSsxXXx8KGlbdisrXT1pW2FdLGlbdisrXT1pW2ErMV0pO3JldHVybiB1KGksW3YvMnwwLDJdKX1mdW5jdGlvbiBhKHQsZSxyLG4pe2Zvcih2YXIgaT10LmRhdGEsbz10LnNoYXBlWzBdLGE9aC5tYWxsb2NEb3VibGUobykscz0wLGw9MDtvPmw7KytsKXt2YXIgYz1pWzIqbF0sZj1pWzIqbCsxXTtpZihyW2NdIT09cltmXSl7dmFyIGQ9ZVtjXSxwPWVbZl07aVsyKnNdPWMsaVsyKnMrMV09ZixhW3MrK109KHAtbikvKHAtZCl9fXJldHVybiB0LnNoYXBlWzBdPXMsdShhLFtzXSl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByPWgubWFsbG9jSW50MzIoMiplKSxuPXQuc2hhcGVbMF0saT10LmRhdGE7clswXT0wO2Zvcih2YXIgbz0wLGE9MDtuPmE7KythKXt2YXIgcz1pWzIqYV07aWYocyE9PW8pe2ZvcihyWzIqbysxXT1hOysrbzxzOylyWzIqb109YSxyWzIqbysxXT1hO3JbMipvXT1hfX1mb3IoclsyKm8rMV09bjsrK288ZTspclsyKm9dPXJbMipvKzFdPW47cmV0dXJuIHJ9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIGU9MHx0LnNoYXBlWzBdLHI9dC5kYXRhLG49bmV3IEFycmF5KGUpLGk9MDtlPmk7KytpKW5baV09W3JbMippXSxyWzIqaSsxXV07cmV0dXJuIG59ZnVuY3Rpb24gYyh0LGUscixjKXtyPXJ8fDAsInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz1uKHQpKTt2YXIgdT10Lmxlbmd0aDtpZigwPT09dXx8MT5jKXJldHVybntjZWxsczpbXSx2ZXJ0ZXhJZHM6W10sdmVydGV4V2VpZ2h0czpbXX07dmFyIGY9aShlLCtyKSxwPW8odCxjKSxnPWEocCxlLGYsK3IpLHY9cyhwLDB8ZS5sZW5ndGgpLG09ZChjKSh0LHAuZGF0YSx2LGYpLHk9bChwKSxiPVtdLnNsaWNlLmNhbGwoZy5kYXRhLDAsZy5zaGFwZVswXSk7cmV0dXJuIGguZnJlZShmKSxoLmZyZWUocC5kYXRhKSxoLmZyZWUoZy5kYXRhKSxoLmZyZWUodikse2NlbGxzOm0sdmVydGV4SWRzOnksdmVydGV4V2VpZ2h0czpifX1lLmV4cG9ydHM9Yzt2YXIgdT10KCJuZGFycmF5IiksaD10KCJ0eXBlZGFycmF5LXBvb2wiKSxmPXQoIm5kYXJyYXktc29ydCIpLGQ9dCgiLi9saWIvY29kZWdlbiIpfSx7Ii4vbGliL2NvZGVnZW4iOjExMixuZGFycmF5OjIxMCwibmRhcnJheS1zb3J0IjoxMTUsInR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMTEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7ZnVuY3Rpb24gZSh0KXtpZighKHQubGVuZ3RoPD0wKSl7Yy5wdXNoKCJSLnB1c2goIik7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciByPXRbZV07ZT4wJiZjLnB1c2goIiwiKSxjLnB1c2goIlsiKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbil7dmFyIGk9cltuXTtuPjAmJmMucHVzaCgiLCIpLGMucHVzaCgiQihDLEUsY1siLGlbMF0sIl0sY1siLGlbMV0sIl0pIil9Yy5wdXNoKCJdIil9Yy5wdXNoKCIpOyIpfX12YXIgcj0wLG49bmV3IEFycmF5KHQrMSk7blswXT1bW11dO2Zvcih2YXIgaT0xO3Q+PWk7KytpKWZvcih2YXIgcz1uW2ldPWEoaSksbD0wO2w8cy5sZW5ndGg7KytsKXI9TWF0aC5tYXgocixzW2ldLmxlbmd0aCk7Zm9yKHZhciBjPVsiZnVuY3Rpb24gQihDLEUsaSxqKXsiLCJ2YXIgYT1NYXRoLm1pbihpLGopfDAsYj1NYXRoLm1heChpLGopfDAsbD1DWzIqYV0saD1DWzIqYSsxXTsiLCJ3aGlsZShsPGgpeyIsInZhciBtPShsK2gpPj4xLHY9RVsyKm0rMV07IiwiaWYodj09PWIpe3JldHVybiBtfSIsImlmKGI8dil7aD1tfWVsc2V7bD1tKzF9IiwifSIsInJldHVybiBsOyIsIn07IiwiZnVuY3Rpb24gZ2V0Q29udG91ciIsdCwiZChGLEUsQyxTKXsiLCJ2YXIgbj1GLmxlbmd0aCxSPVtdOyIsImZvcih2YXIgaT0wO2k8bjsrK2kpe3ZhciBjPUZbaV0sbD1jLmxlbmd0aDsiXSxpPXQrMTtpPjE7LS1pKXsKdCsxPmkmJmMucHVzaCgiZWxzZSAiKSxjLnB1c2goImlmKGw9PT0iLGksIil7Iik7Zm9yKHZhciB1PVtdLGw9MDtpPmw7KytsKXUucHVzaCgiKFNbY1siK2wrIl1dPDwiK2wrIikiKTtjLnB1c2goInZhciBNPSIsdS5qb2luKCIrIiksIjtpZihNPT09MHx8TT09PSIsKDE8PGkpLTEsIil7Y29udGludWV9c3dpdGNoKE0peyIpO2Zvcih2YXIgcz1uW2ktMV0sbD0wO2w8cy5sZW5ndGg7KytsKWMucHVzaCgiY2FzZSAiLGwsIjoiKSxlKHNbbF0pLGMucHVzaCgiYnJlYWs7Iik7Yy5wdXNoKCJ9fSIpfWMucHVzaCgifXJldHVybiBSO307cmV0dXJuIGdldENvbnRvdXIiLHQsImQiKTt2YXIgaD1uZXcgRnVuY3Rpb24oInBvb2wiLGMuam9pbigiIikpO3JldHVybiBoKG8pfWZ1bmN0aW9uIGkodCl7dmFyIGU9c1t0XTtyZXR1cm4gZXx8KGU9c1t0XT1uKHQpKSxlfWUuZXhwb3J0cz1pO3ZhciBvPXQoInR5cGVkYXJyYXktcG9vbCIpLGE9dCgibWFyY2hpbmctc2ltcGxleC10YWJsZSIpLHM9e319LHsibWFyY2hpbmctc2ltcGxleC10YWJsZSI6MTEzLCJ0eXBlZGFycmF5LXBvb2wiOjIzNX1dLDExMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtmb3IodmFyIG49bmV3IEFycmF5KHQpLGk9MDt0Pmk7KytpKW5baV09MCxpPT09ZSYmKG5baV0rPS41KSxpPT09ciYmKG5baV0rPS41KTtyZXR1cm4gbn1mdW5jdGlvbiBpKHQsZSl7aWYoMD09PWV8fGU9PT0oMTw8dCsxKS0xKXJldHVybltdO2Zvcih2YXIgcj1bXSxpPVtdLG89MDt0Pj1vOysrbylpZihlJjE8PG8pe3IucHVzaChuKHQsby0xLG8tMSkpLGkucHVzaChudWxsKTtmb3IodmFyIHM9MDt0Pj1zOysrcyl+ZSYxPDxzJiYoci5wdXNoKG4odCxvLTEscy0xKSksaS5wdXNoKFtvLHNdKSl9dmFyIGw9YShyKSxjPVtdO3Q6Zm9yKHZhciBvPTA7bzxsLmxlbmd0aDsrK28pe2Zvcih2YXIgdT1sW29dLGg9W10scz0wO3M8dS5sZW5ndGg7KytzKXtpZighaVt1W3NdXSljb250aW51ZSB0O2gucHVzaChpW3Vbc11dLnNsaWNlKCkpfWMucHVzaChoKX1yZXR1cm4gY31mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT0xPDx0KzEscj1uZXcgQXJyYXkoZSksbj0wO2U+bjsrK24pcltuXT1pKHQsbik7cmV0dXJuIHJ9ZS5leHBvcnRzPW87dmFyIGE9dCgiY29udmV4LWh1bGwiKX0seyJjb252ZXgtaHVsbCI6NjB9XSwxMTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtzd2l0Y2godCl7Y2FzZSJ1aW50OCI6cmV0dXJuW2wubWFsbG9jVWludDgsbC5mcmVlVWludDhdO2Nhc2UidWludDE2IjpyZXR1cm5bbC5tYWxsb2NVaW50MTYsbC5mcmVlVWludDE2XTtjYXNlInVpbnQzMiI6cmV0dXJuW2wubWFsbG9jVWludDMyLGwuZnJlZVVpbnQzMl07Y2FzZSJpbnQ4IjpyZXR1cm5bbC5tYWxsb2NJbnQ4LGwuZnJlZUludDhdO2Nhc2UiaW50MTYiOnJldHVybltsLm1hbGxvY0ludDE2LGwuZnJlZUludDE2XTtjYXNlImludDMyIjpyZXR1cm5bbC5tYWxsb2NJbnQzMixsLmZyZWVJbnQzMl07Y2FzZSJmbG9hdDMyIjpyZXR1cm5bbC5tYWxsb2NGbG9hdCxsLmZyZWVGbG9hdF07Y2FzZSJmbG9hdDY0IjpyZXR1cm5bbC5tYWxsb2NEb3VibGUsbC5mcmVlRG91YmxlXTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1bXSxyPTA7dD5yOysrcillLnB1c2goInMiK3IpO2Zvcih2YXIgcj0wO3Q+cjsrK3IpZS5wdXNoKCJuIityKTtmb3IodmFyIHI9MTt0PnI7KytyKWUucHVzaCgiZCIrcik7Zm9yKHZhciByPTE7dD5yOysrcillLnB1c2goImUiK3IpO2Zvcih2YXIgcj0xO3Q+cjsrK3IpZS5wdXNoKCJmIityKTtyZXR1cm4gZX1mdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4iZ2VuZXJpYyI9PT1lP1siZGF0YS5nZXQoIix0LCIpIl0uam9pbigiIik6WyJkYXRhWyIsdCwiXSJdLmpvaW4oIiIpfWZ1bmN0aW9uIG8odCxyKXtyZXR1cm4iZ2VuZXJpYyI9PT1lP1siZGF0YS5zZXQoIix0LCIsIixyLCIpIl0uam9pbigiIik6WyJkYXRhWyIsdCwiXT0iLHJdLmpvaW4oIiIpfXZhciBhPVsiJ3VzZSBzdHJpY3QnIl0scz1bIm5kYXJyYXlJbnNlcnRpb25Tb3J0Iix0LmpvaW4oImQiKSxlXS5qb2luKCIiKSxsPVsibGVmdCIsInJpZ2h0IiwiZGF0YSIsIm9mZnNldCJdLmNvbmNhdChpKHQubGVuZ3RoKSksYz1uKGUpLHU9WyJpLGosY3B0cixwdHI9bGVmdCpzMCtvZmZzZXQiXTtpZih0Lmxlbmd0aD4xKXtmb3IodmFyIGg9W10sZj0xO2Y8dC5sZW5ndGg7KytmKXUucHVzaCgiaSIrZiksaC5wdXNoKCJuIitmKTtjP3UucHVzaCgic2NyYXRjaD1tYWxsb2MoIitoLmpvaW4oIioiKSsiKSIpOnUucHVzaCgic2NyYXRjaD1uZXcgQXJyYXkoIitoLmpvaW4oIioiKSsiKSIpLHUucHVzaCgiZHB0ciIsInNwdHIiLCJhIiwiYiIpfWVsc2UgdS5wdXNoKCJzY3JhdGNoIik7aWYoYS5wdXNoKFsiZnVuY3Rpb24gIixzLCIoIixsLmpvaW4oIiwiKSwiKXt2YXIgIix1LmpvaW4oIiwiKV0uam9pbigiIiksImZvcihpPWxlZnQrMTtpPD1yaWdodDsrK2kpeyIsImo9aTtwdHIrPXMwIiwiY3B0cj1wdHIiKSx0Lmxlbmd0aD4xKXthLnB1c2goImRwdHI9MDtzcHRyPXB0ciIpO2Zvcih2YXIgZj10Lmxlbmd0aC0xO2Y+PTA7LS1mKXt2YXIgZD10W2ZdOzAhPT1kJiZhLnB1c2goWyJmb3IoaSIsZCwiPTA7aSIsZCwiPG4iLGQsIjsrK2kiLGQsIil7Il0uam9pbigiIikpfWEucHVzaCgic2NyYXRjaFtkcHRyKytdPSIscigic3B0ciIpKTtmb3IodmFyIGY9MDtmPHQubGVuZ3RoOysrZil7dmFyIGQ9dFtmXTswIT09ZCYmYS5wdXNoKCJzcHRyKz1kIitkLCJ9Iil9YS5wdXNoKCJfX2c6d2hpbGUoai0tPmxlZnQpeyIsImRwdHI9MCIsInNwdHI9Y3B0ci1zMCIpO2Zvcih2YXIgZj0xO2Y8dC5sZW5ndGg7KytmKTE9PT1mJiZhLnB1c2goIl9fbDoiKSxhLnB1c2goWyJmb3IoaSIsZiwiPTA7aSIsZiwiPG4iLGYsIjsrK2kiLGYsIil7Il0uam9pbigiIikpO2EucHVzaChbImE9IixyKCJzcHRyIiksIlxuYj1zY3JhdGNoW2RwdHJdXG5pZihhPGIpe2JyZWFrIF9fZ31cbmlmKGE+Yil7YnJlYWsgX19sfSJdLmpvaW4oIiIpKTtmb3IodmFyIGY9dC5sZW5ndGgtMTtmPj0xOy0tZilhLnB1c2goInNwdHIrPWUiK2YsImRwdHIrPWYiK2YsIn0iKTthLnB1c2goImRwdHI9Y3B0cjtzcHRyPWNwdHItczAiKTtmb3IodmFyIGY9dC5sZW5ndGgtMTtmPj0wOy0tZil7dmFyIGQ9dFtmXTswIT09ZCYmYS5wdXNoKFsiZm9yKGkiLGQsIj0wO2kiLGQsIjxuIixkLCI7KytpIixkLCIpeyJdLmpvaW4oIiIpKX1hLnB1c2gobygiZHB0ciIscigic3B0ciIpKSk7Zm9yKHZhciBmPTA7Zjx0Lmxlbmd0aDsrK2Ype3ZhciBkPXRbZl07MCE9PWQmJmEucHVzaChbImRwdHIrPWQiLGQsIjtzcHRyKz1kIixkXS5qb2luKCIiKSwifSIpfWEucHVzaCgiY3B0ci09czBcbn0iKSxhLnB1c2goImRwdHI9Y3B0cjtzcHRyPTAiKTtmb3IodmFyIGY9dC5sZW5ndGgtMTtmPj0wOy0tZil7dmFyIGQ9dFtmXTswIT09ZCYmYS5wdXNoKFsiZm9yKGkiLGQsIj0wO2kiLGQsIjxuIixkLCI7KytpIixkLCIpeyJdLmpvaW4oIiIpKX1hLnB1c2gobygiZHB0ciIsInNjcmF0Y2hbc3B0cisrXSIpKTtmb3IodmFyIGY9MDtmPHQubGVuZ3RoOysrZil7dmFyIGQ9dFtmXTswIT09ZCYmYS5wdXNoKCJkcHRyKz1kIitkLCJ9Iil9fWVsc2UgYS5wdXNoKCJzY3JhdGNoPSIrcigicHRyIiksIndoaWxlKChqLS0+bGVmdCkmJigiK3IoImNwdHItczAiKSsiPnNjcmF0Y2gpKXsiLG8oImNwdHIiLHIoImNwdHItczAiKSksImNwdHItPXMwIiwifSIsbygiY3B0ciIsInNjcmF0Y2giKSk7aWYoYS5wdXNoKCJ9IiksdC5sZW5ndGg+MSYmYyYmYS5wdXNoKCJmcmVlKHNjcmF0Y2gpIiksYS5wdXNoKCJ9IHJldHVybiAiK3MpLGMpe3ZhciBwPW5ldyBGdW5jdGlvbigibWFsbG9jIiwiZnJlZSIsYS5qb2luKCJcbiIpKTtyZXR1cm4gcChjWzBdLGNbMV0pfXZhciBwPW5ldyBGdW5jdGlvbihhLmpvaW4oIlxuIikpO3JldHVybiBwKCl9ZnVuY3Rpb24gYSh0LGUscil7ZnVuY3Rpb24gbyh0KXtyZXR1cm5bIihvZmZzZXQrIix0LCIqczApIl0uam9pbigiIil9ZnVuY3Rpb24gYSh0KXtyZXR1cm4iZ2VuZXJpYyI9PT1lP1siZGF0YS5nZXQoIix0LCIpIl0uam9pbigiIik6WyJkYXRhWyIsdCwiXSJdLmpvaW4oIiIpfWZ1bmN0aW9uIHModCxyKXtyZXR1cm4iZ2VuZXJpYyI9PT1lP1siZGF0YS5zZXQoIix0LCIsIixyLCIpIl0uam9pbigiIik6WyJkYXRhWyIsdCwiXT0iLHJdLmpvaW4oIiIpfWZ1bmN0aW9uIGwoZSxyLG4pe2lmKDE9PT1lLmxlbmd0aClfLnB1c2goInB0cjA9IitvKGVbMF0pKTtlbHNlIGZvcih2YXIgaT0wO2k8ZS5sZW5ndGg7KytpKV8ucHVzaChbImJfcHRyIixpLCI9czAqIixlW2ldXS5qb2luKCIiKSk7ciYmXy5wdXNoKCJwaXZvdF9wdHI9MCIpLF8ucHVzaCgicHRyX3NoaWZ0PW9mZnNldCIpO2Zvcih2YXIgaT10Lmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10W2ldOzAhPT1hJiZfLnB1c2goWyJmb3IoaSIsYSwiPTA7aSIsYSwiPG4iLGEsIjsrK2kiLGEsIil7Il0uam9pbigiIikpfWlmKGUubGVuZ3RoPjEpZm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpXy5wdXNoKFsicHRyIixpLCI9Yl9wdHIiLGksIitwdHJfc2hpZnQiXS5qb2luKCIiKSk7Xy5wdXNoKG4pLHImJl8ucHVzaCgiKytwaXZvdF9wdHIiKTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoOysraSl7dmFyIGE9dFtpXTswIT09YSYmKGUubGVuZ3RoPjE/Xy5wdXNoKCJwdHJfc2hpZnQrPWQiK2EpOl8ucHVzaCgicHRyMCs9ZCIrYSksXy5wdXNoKCJ9IikpfX1mdW5jdGlvbiB1KGUscixuLGkpe2lmKDE9PT1yLmxlbmd0aClfLnB1c2goInB0cjA9IitvKHJbMF0pKTtlbHNle2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7KythKV8ucHVzaChbImJfcHRyIixhLCI9czAqIixyW2FdXS5qb2luKCIiKSk7Xy5wdXNoKCJwdHJfc2hpZnQ9b2Zmc2V0Iil9biYmXy5wdXNoKCJwaXZvdF9wdHI9MCIpLGUmJl8ucHVzaChlKyI6Iik7Zm9yKHZhciBhPTE7YTx0Lmxlbmd0aDsrK2EpXy5wdXNoKFsiZm9yKGkiLGEsIj0wO2kiLGEsIjxuIixhLCI7KytpIixhLCIpeyJdLmpvaW4oIiIpKTtpZihyLmxlbmd0aD4xKWZvcih2YXIgYT0wO2E8ci5sZW5ndGg7KythKV8ucHVzaChbInB0ciIsYSwiPWJfcHRyIixhLCIrcHRyX3NoaWZ0Il0uam9pbigiIikpO18ucHVzaChpKTtmb3IodmFyIGE9dC5sZW5ndGgtMTthPj0xOy0tYSluJiZfLnB1c2goInBpdm90X3B0cis9ZiIrYSksci5sZW5ndGg+MT9fLnB1c2goInB0cl9zaGlmdCs9ZSIrYSk6Xy5wdXNoKCJwdHIwKz1lIithKSxfLnB1c2goIn0iKX1mdW5jdGlvbiBoKCl7dC5sZW5ndGg+MSYmayYmXy5wdXNoKCJmcmVlKHBpdm90MSkiLCJmcmVlKHBpdm90MikiKX1mdW5jdGlvbiBmKGUscil7dmFyIG49ImVsIitlLGk9ImVsIityO2lmKHQubGVuZ3RoPjEpe3ZhciBzPSJfX2wiKyArK007dShzLFtuLGldLCExLFsiY29tcD0iLGEoInB0cjAiKSwiLSIsYSgicHRyMSIpLCJcbiIsImlmKGNvbXA+MCl7dG1wMD0iLG4sIjsiLG4sIj0iLGksIjsiLGksIj10bXAwO2JyZWFrICIscywifVxuIiwiaWYoY29tcDwwKXticmVhayAiLHMsIn0iXS5qb2luKCIiKSl9ZWxzZSBfLnB1c2goWyJpZigiLGEobyhuKSksIj4iLGEobyhpKSksIil7dG1wMD0iLG4sIjsiLG4sIj0iLGksIjsiLGksIj10bXAwfSJdLmpvaW4oIiIpKX1mdW5jdGlvbiBkKGUscil7dC5sZW5ndGg+MT9sKFtlLHJdLCExLHMoInB0cjAiLGEoInB0cjEiKSkpOl8ucHVzaChzKG8oZSksYShvKHIpKSkpfWZ1bmN0aW9uIHAoZSxyLG4pe2lmKHQubGVuZ3RoPjEpe3ZhciBpPSJfX2wiKyArK007dShpLFtyXSwhMCxbZSwiPSIsYSgicHRyMCIpLCItcGl2b3QiLG4sIltwaXZvdF9wdHJdXG4iLCJpZigiLGUsIiE9PTApe2JyZWFrICIsaSwifSJdLmpvaW4oIiIpKX1lbHNlIF8ucHVzaChbZSwiPSIsYShvKHIpKSwiLXBpdm90IixuXS5qb2luKCIiKSl9ZnVuY3Rpb24gZyhlLHIpe3QubGVuZ3RoPjE/bChbZSxyXSwhMSxbInRtcD0iLGEoInB0cjAiKSwiXG4iLHMoInB0cjAiLGEoInB0cjEiKSksIlxuIixzKCJwdHIxIiwidG1wIildLmpvaW4oIiIpKTpfLnB1c2goWyJwdHIwPSIsbyhlKSwiXG4iLCJwdHIxPSIsbyhyKSwiXG4iLCJ0bXA9IixhKCJwdHIwIiksIlxuIixzKCJwdHIwIixhKCJwdHIxIikpLCJcbiIscygicHRyMSIsInRtcCIpXS5qb2luKCIiKSl9ZnVuY3Rpb24gdihlLHIsbil7dC5sZW5ndGg+MT8obChbZSxyLG5dLCExLFsidG1wPSIsYSgicHRyMCIpLCJcbiIscygicHRyMCIsYSgicHRyMSIpKSwiXG4iLHMoInB0cjEiLGEoInB0cjIiKSksIlxuIixzKCJwdHIyIiwidG1wIildLmpvaW4oIiIpKSxfLnB1c2goIisrIityLCItLSIrbikpOl8ucHVzaChbInB0cjA9IixvKGUpLCJcbiIsInB0cjE9IixvKHIpLCJcbiIsInB0cjI9IixvKG4pLCJcbiIsIisrIixyLCJcbiIsIi0tIixuLCJcbiIsInRtcD0iLGEoInB0cjAiKSwiXG4iLHMoInB0cjAiLGEoInB0cjEiKSksIlxuIixzKCJwdHIxIixhKCJwdHIyIikpLCJcbiIscygicHRyMiIsInRtcCIpXS5qb2luKCIiKSl9ZnVuY3Rpb24gbSh0LGUpe2codCxlKSxfLnB1c2goIi0tIitlKX1mdW5jdGlvbiB5KGUscixuKXt0Lmxlbmd0aD4xP2woW2Uscl0sITAsW3MoInB0cjAiLGEoInB0cjEiKSksIlxuIixzKCJwdHIxIixbInBpdm90IixuLCJbcGl2b3RfcHRyXSJdLmpvaW4oIiIpKV0uam9pbigiIikpOl8ucHVzaChzKG8oZSksYShvKHIpKSkscyhvKHIpLCJwaXZvdCIrbikpfWZ1bmN0aW9uIGIoZSxyKXtfLnB1c2goWyJpZigoIixyLCItIixlLCIpPD0iLGMsIil7XG4iLCJpbnNlcnRpb25Tb3J0KCIsZSwiLCIsciwiLGRhdGEsb2Zmc2V0LCIsaSh0Lmxlbmd0aCkuam9pbigiLCIpLCIpXG4iLCJ9ZWxzZXtcbiIsdywiKCIsZSwiLCIsciwiLGRhdGEsb2Zmc2V0LCIsaSh0Lmxlbmd0aCkuam9pbigiLCIpLCIpXG4iLCJ9Il0uam9pbigiIikpfWZ1bmN0aW9uIHgoZSxyLG4pe3QubGVuZ3RoPjE/KF8ucHVzaChbIl9fbCIsKytNLCI6d2hpbGUodHJ1ZSl7Il0uam9pbigiIikpLGwoW2VdLCEwLFsiaWYoIixhKCJwdHIwIiksIiE9PXBpdm90IixyLCJbcGl2b3RfcHRyXSl7YnJlYWsgX19sIixNLCJ9Il0uam9pbigiIikpLF8ucHVzaChuLCJ9IikpOl8ucHVzaChbIndoaWxlKCIsYShvKGUpKSwiPT09cGl2b3QiLHIsIil7IixuLCJ9Il0uam9pbigiIikpfXZhciBfPVsiJ3VzZSBzdHJpY3QnIl0sdz1bIm5kYXJyYXlRdWlja1NvcnQiLHQuam9pbigiZCIpLGVdLmpvaW4oIiIpLEE9WyJsZWZ0IiwicmlnaHQiLCJkYXRhIiwib2Zmc2V0Il0uY29uY2F0KGkodC5sZW5ndGgpKSxrPW4oZSksTT0wO18ucHVzaChbImZ1bmN0aW9uICIsdywiKCIsQS5qb2luKCIsIiksIil7Il0uam9pbigiIikpO3ZhciBUPVsic2l4dGg9KChyaWdodC1sZWZ0KzEpLzYpfDAiLCJpbmRleDE9bGVmdCtzaXh0aCIsImluZGV4NT1yaWdodC1zaXh0aCIsImluZGV4Mz0obGVmdCtyaWdodCk+PjEiLCJpbmRleDI9aW5kZXgzLXNpeHRoIiwiaW5kZXg0PWluZGV4MytzaXh0aCIsImVsMT1pbmRleDEiLCJlbDI9aW5kZXgyIiwiZWwzPWluZGV4MyIsImVsND1pbmRleDQiLCJlbDU9aW5kZXg1IiwibGVzcz1sZWZ0KzEiLCJncmVhdD1yaWdodC0xIiwicGl2b3RzX2FyZV9lcXVhbD10cnVlIiwidG1wIiwidG1wMCIsIngiLCJ5IiwieiIsImsiLCJwdHIwIiwicHRyMSIsInB0cjIiLCJjb21wX3Bpdm90MT0wIiwiY29tcF9waXZvdDI9MCIsImNvbXA9MCJdO2lmKHQubGVuZ3RoPjEpe2Zvcih2YXIgRT1bXSxMPTE7TDx0Lmxlbmd0aDsrK0wpRS5wdXNoKCJuIitMKSxULnB1c2goImkiK0wpO2Zvcih2YXIgTD0wOzg+TDsrK0wpVC5wdXNoKCJiX3B0ciIrTCk7VC5wdXNoKCJwdHIzIiwicHRyNCIsInB0cjUiLCJwdHI2IiwicHRyNyIsInBpdm90X3B0ciIsInB0cl9zaGlmdCIsImVsZW1lbnRTaXplPSIrRS5qb2luKCIqIikpLGs/VC5wdXNoKCJwaXZvdDE9bWFsbG9jKGVsZW1lbnRTaXplKSIsInBpdm90Mj1tYWxsb2MoZWxlbWVudFNpemUpIik6VC5wdXNoKCJwaXZvdDE9bmV3IEFycmF5KGVsZW1lbnRTaXplKSxwaXZvdDI9bmV3IEFycmF5KGVsZW1lbnRTaXplKSIpfWVsc2UgVC5wdXNoKCJwaXZvdDEiLCJwaXZvdDIiKTtpZihfLnB1c2goInZhciAiK1Quam9pbigiLCIpKSxmKDEsMiksZig0LDUpLGYoMSwzKSxmKDIsMyksZigxLDQpLGYoMyw0KSxmKDIsNSksZigyLDMpLGYoNCw1KSx0Lmxlbmd0aD4xP2woWyJlbDEiLCJlbDIiLCJlbDMiLCJlbDQiLCJlbDUiLCJpbmRleDEiLCJpbmRleDMiLCJpbmRleDUiXSwhMCxbInBpdm90MVtwaXZvdF9wdHJdPSIsYSgicHRyMSIpLCJcbiIsInBpdm90MltwaXZvdF9wdHJdPSIsYSgicHRyMyIpLCJcbiIsInBpdm90c19hcmVfZXF1YWw9cGl2b3RzX2FyZV9lcXVhbCYmKHBpdm90MVtwaXZvdF9wdHJdPT09cGl2b3QyW3Bpdm90X3B0cl0pXG4iLCJ4PSIsYSgicHRyMCIpLCJcbiIsInk9IixhKCJwdHIyIiksIlxuIiwiej0iLGEoInB0cjQiKSwiXG4iLHMoInB0cjUiLCJ4IiksIlxuIixzKCJwdHI2IiwieSIpLCJcbiIscygicHRyNyIsInoiKV0uam9pbigiIikpOl8ucHVzaChbInBpdm90MT0iLGEobygiZWwyIikpLCJcbiIsInBpdm90Mj0iLGEobygiZWw0IikpLCJcbiIsInBpdm90c19hcmVfZXF1YWw9cGl2b3QxPT09cGl2b3QyXG4iLCJ4PSIsYShvKCJlbDEiKSksIlxuIiwieT0iLGEobygiZWwzIikpLCJcbiIsIno9IixhKG8oImVsNSIpKSwiXG4iLHMobygiaW5kZXgxIiksIngiKSwiXG4iLHMobygiaW5kZXgzIiksInkiKSwiXG4iLHMobygiaW5kZXg1IiksInoiKV0uam9pbigiIikpLGQoImluZGV4MiIsImxlZnQiKSxkKCJpbmRleDQiLCJyaWdodCIpLF8ucHVzaCgiaWYocGl2b3RzX2FyZV9lcXVhbCl7IiksXy5wdXNoKCJmb3Ioaz1sZXNzO2s8PWdyZWF0Oysrayl7IikscCgiY29tcCIsImsiLDEpLF8ucHVzaCgiaWYoY29tcD09PTApe2NvbnRpbnVlfSIpLF8ucHVzaCgiaWYoY29tcDwwKXsiKSxfLnB1c2goImlmKGshPT1sZXNzKXsiKSxnKCJrIiwibGVzcyIpLF8ucHVzaCgifSIpLF8ucHVzaCgiKytsZXNzIiksXy5wdXNoKCJ9ZWxzZXsiKSxfLnB1c2goIndoaWxlKHRydWUpeyIpLHAoImNvbXAiLCJncmVhdCIsMSksXy5wdXNoKCJpZihjb21wPjApeyIpLF8ucHVzaCgiZ3JlYXQtLSIpLF8ucHVzaCgifWVsc2UgaWYoY29tcDwwKXsiKSx2KCJrIiwibGVzcyIsImdyZWF0IiksXy5wdXNoKCJicmVhayIpLF8ucHVzaCgifWVsc2V7IiksbSgiayIsImdyZWF0IiksXy5wdXNoKCJicmVhayIpLF8ucHVzaCgifSIpLF8ucHVzaCgifSIpLF8ucHVzaCgifSIpLF8ucHVzaCgifSIpLF8ucHVzaCgifWVsc2V7IiksXy5wdXNoKCJmb3Ioaz1sZXNzO2s8PWdyZWF0Oysrayl7IikscCgiY29tcF9waXZvdDEiLCJrIiwxKSxfLnB1c2goImlmKGNvbXBfcGl2b3QxPDApeyIpLF8ucHVzaCgiaWYoayE9PWxlc3MpeyIpLGcoImsiLCJsZXNzIiksXy5wdXNoKCJ9IiksXy5wdXNoKCIrK2xlc3MiKSxfLnB1c2goIn1lbHNleyIpLHAoImNvbXBfcGl2b3QyIiwiayIsMiksXy5wdXNoKCJpZihjb21wX3Bpdm90Mj4wKXsiKSxfLnB1c2goIndoaWxlKHRydWUpeyIpLHAoImNvbXAiLCJncmVhdCIsMiksXy5wdXNoKCJpZihjb21wPjApeyIpLF8ucHVzaCgiaWYoLS1ncmVhdDxrKXticmVha30iKSxfLnB1c2goImNvbnRpbnVlIiksXy5wdXNoKCJ9ZWxzZXsiKSxwKCJjb21wIiwiZ3JlYXQiLDEpLF8ucHVzaCgiaWYoY29tcDwwKXsiKSx2KCJrIiwibGVzcyIsImdyZWF0IiksXy5wdXNoKCJ9ZWxzZXsiKSxtKCJrIiwiZ3JlYXQiKSxfLnB1c2goIn0iKSxfLnB1c2goImJyZWFrIiksXy5wdXNoKCJ9IiksXy5wdXNoKCJ9IiksXy5wdXNoKCJ9IiksXy5wdXNoKCJ9IiksXy5wdXNoKCJ9IiksXy5wdXNoKCJ9IikseSgibGVmdCIsIihsZXNzLTEpIiwxKSx5KCJyaWdodCIsIihncmVhdCsxKSIsMiksYigibGVmdCIsIihsZXNzLTIpIiksYigiKGdyZWF0KzIpIiwicmlnaHQiKSxfLnB1c2goImlmKHBpdm90c19hcmVfZXF1YWwpeyIpLGgoKSxfLnB1c2goInJldHVybiIpLF8ucHVzaCgifSIpLF8ucHVzaCgiaWYobGVzczxpbmRleDEmJmdyZWF0PmluZGV4NSl7IikseCgibGVzcyIsMSwiKytsZXNzIikseCgiZ3JlYXQiLDIsIi0tZ3JlYXQiKSxfLnB1c2goImZvcihrPWxlc3M7azw9Z3JlYXQ7KytrKXsiKSxwKCJjb21wX3Bpdm90MSIsImsiLDEpLF8ucHVzaCgiaWYoY29tcF9waXZvdDE9PT0wKXsiKSxfLnB1c2goImlmKGshPT1sZXNzKXsiKSxnKCJrIiwibGVzcyIpLF8ucHVzaCgifSIpLF8ucHVzaCgiKytsZXNzIiksXy5wdXNoKCJ9ZWxzZXsiKSxwKCJjb21wX3Bpdm90MiIsImsiLDIpLF8ucHVzaCgiaWYoY29tcF9waXZvdDI9PT0wKXsiKSxfLnB1c2goIndoaWxlKHRydWUpeyIpLHAoImNvbXAiLCJncmVhdCIsMiksXy5wdXNoKCJpZihjb21wPT09MCl7IiksXy5wdXNoKCJpZigtLWdyZWF0PGspe2JyZWFrfSIpLF8ucHVzaCgiY29udGludWUiKSxfLnB1c2goIn1lbHNleyIpLHAoImNvbXAiLCJncmVhdCIsMSksXy5wdXNoKCJpZihjb21wPDApeyIpLHYoImsiLCJsZXNzIiwiZ3JlYXQiKSxfLnB1c2goIn1lbHNleyIpLG0oImsiLCJncmVhdCIpLF8ucHVzaCgifSIpLF8ucHVzaCgiYnJlYWsiKSxfLnB1c2goIn0iKSxfLnB1c2goIn0iKSxfLnB1c2goIn0iKSxfLnB1c2goIn0iKSxfLnB1c2goIn0iKSxfLnB1c2goIn0iKSxoKCksYigibGVzcyIsImdyZWF0IiksXy5wdXNoKCJ9cmV0dXJuICIrdyksdC5sZW5ndGg+MSYmayl7dmFyIFM9bmV3IEZ1bmN0aW9uKCJpbnNlcnRpb25Tb3J0IiwibWFsbG9jIiwiZnJlZSIsXy5qb2luKCJcbiIpKTtyZXR1cm4gUyhyLGtbMF0sa1sxXSl9dmFyIFM9bmV3IEZ1bmN0aW9uKCJpbnNlcnRpb25Tb3J0IixfLmpvaW4oIlxuIikpO3JldHVybiBTKHIpfWZ1bmN0aW9uIHModCxlKXt2YXIgcj1bIid1c2Ugc3RyaWN0JyJdLG49WyJuZGFycmF5U29ydFdyYXBwZXIiLHQuam9pbigiZCIpLGVdLmpvaW4oIiIpLHM9WyJhcnJheSJdO3IucHVzaChbImZ1bmN0aW9uICIsbiwiKCIscy5qb2luKCIsIiksIil7Il0uam9pbigiIikpO2Zvcih2YXIgbD1bImRhdGE9YXJyYXkuZGF0YSxvZmZzZXQ9YXJyYXkub2Zmc2V0fDAsc2hhcGU9YXJyYXkuc2hhcGUsc3RyaWRlPWFycmF5LnN0cmlkZSJdLHU9MDt1PHQubGVuZ3RoOysrdSlsLnB1c2goWyJzIix1LCI9c3RyaWRlWyIsdSwiXXwwLG4iLHUsIj1zaGFwZVsiLHUsIl18MCJdLmpvaW4oIiIpKTtmb3IodmFyIGg9bmV3IEFycmF5KHQubGVuZ3RoKSxmPVtdLHU9MDt1PHQubGVuZ3RoOysrdSl7dmFyIGQ9dFt1XTswIT09ZCYmKDA9PT1mLmxlbmd0aD9oW2RdPSIxIjpoW2RdPWYuam9pbigiKiIpLGYucHVzaCgibiIrZCkpfWZvcih2YXIgcD0tMSxnPS0xLHU9MDt1PHQubGVuZ3RoOysrdSl7dmFyIHY9dFt1XTswIT09diYmKHA+MD9sLnB1c2goWyJkIix2LCI9cyIsdiwiLWQiLHAsIipuIixwXS5qb2luKCIiKSk6bC5wdXNoKFsiZCIsdiwiPXMiLHZdLmpvaW4oIiIpKSxwPXYpO3ZhciBkPXQubGVuZ3RoLTEtdTswIT09ZCYmKGc+MD9sLnB1c2goWyJlIixkLCI9cyIsZCwiLWUiLGcsIipuIixnLCIsZiIsZCwiPSIsaFtkXSwiLWYiLGcsIipuIixnXS5qb2luKCIiKSk6bC5wdXNoKFsiZSIsZCwiPXMiLGQsIixmIixkLCI9IixoW2RdXS5qb2luKCIiKSksZz1kKX1yLnB1c2goInZhciAiK2wuam9pbigiLCIpKTt2YXIgbT1bIjAiLCJuMC0xIiwiZGF0YSIsIm9mZnNldCJdLmNvbmNhdChpKHQubGVuZ3RoKSk7ci5wdXNoKFsiaWYobjA8PSIsYywiKXsiLCJpbnNlcnRpb25Tb3J0KCIsbS5qb2luKCIsIiksIil9ZWxzZXsiLCJxdWlja1NvcnQoIixtLmpvaW4oIiwiKSwiKX0iXS5qb2luKCIiKSksci5wdXNoKCJ9cmV0dXJuICIrbik7dmFyIHk9bmV3IEZ1bmN0aW9uKCJpbnNlcnRpb25Tb3J0IiwicXVpY2tTb3J0IixyLmpvaW4oIlxuIikpLGI9byh0LGUpLHg9YSh0LGUsYik7cmV0dXJuIHkoYix4KX12YXIgbD10KCJ0eXBlZGFycmF5LXBvb2wiKSxjPTMyO2UuZXhwb3J0cz1zfSx7InR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5vcmRlcixyPXQuZHR5cGUsbj1bZSxyXSxhPW4uam9pbigiOiIpLHM9b1thXTtyZXR1cm4gc3x8KG9bYV09cz1pKGUscikpLHModCksdH12YXIgaT10KCIuL2xpYi9jb21waWxlX3NvcnQuanMiKSxvPXt9O2UuZXhwb3J0cz1ufSx7Ii4vbGliL2NvbXBpbGVfc29ydC5qcyI6MTE0fV0sMTE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMucGxvdD10LHRoaXMudmJvPWUsdGhpcy5zaGFkZXI9cn1mdW5jdGlvbiBpKHQpe3ZhciBlPXQuZ2wscj1vKGUsWzAsMCwwLDEsMSwwLDEsMV0pLGk9YShlLHMuYm94VmVydCxzLmxpbmVGcmFnKTtyZXR1cm4gbmV3IG4odCxyLGkpfWUuZXhwb3J0cz1pO3ZhciBvPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtc2hhZGVyIikscz10KCIuL3NoYWRlcnMiKSxsPW4ucHJvdG90eXBlO2wuYmluZD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc2hhZGVyO3RoaXMudmJvLmJpbmQoKSx0aGlzLnNoYWRlci5iaW5kKCksdC5hdHRyaWJ1dGVzLmNvb3JkLnBvaW50ZXIoKSx0LnVuaWZvcm1zLnNjcmVlbkJveD10aGlzLnBsb3Quc2NyZWVuQm94fSxsLmRyYXdCb3g9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXSxlPVswLDBdO3JldHVybiBmdW5jdGlvbihyLG4saSxvLGEpe3ZhciBzPXRoaXMucGxvdCxsPXRoaXMuc2hhZGVyLGM9cy5nbDt0WzBdPXIsdFsxXT1uLGVbMF09aSxlWzFdPW8sbC51bmlmb3Jtcy5sbz10LGwudW5pZm9ybXMuaGk9ZSxsLnVuaWZvcm1zLmNvbG9yPWEsYy5kcmF3QXJyYXlzKGMuVFJJQU5HTEVfU1RSSVAsMCw0KX19KCksbC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52Ym8uZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzIjoxMTksImdsLWJ1ZmZlciI6NzUsImdsLXNoYWRlciI6MTU0fV0sMTE3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yLHRoaXMudGlja1NoYWRlcj1uLHRoaXMudGlja3M9W1tdLFtdXX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiBvKHQpe3ZhciBlPXQuZ2wscj1hKGUpLGk9cyhlLGMuZ3JpZFZlcnQsYy5ncmlkRnJhZyksbz1zKGUsYy50aWNrVmVydCxjLmdyaWRGcmFnKSxsPW5ldyBuKHQscixpLG8pO3JldHVybiBsfWUuZXhwb3J0cz1vO3ZhciBhPXQoImdsLWJ1ZmZlciIpLHM9dCgiZ2wtc2hhZGVyIiksbD10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGM9dCgiLi9zaGFkZXJzIiksdT1uLnByb3RvdHlwZTt1LmRyYXc9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXSxlPVswLDBdLHI9WzAsMF07cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPXRoaXMucGxvdCxpPXRoaXMudmJvLG89dGhpcy5zaGFkZXIsYT10aGlzLnRpY2tzLHM9bi5nbCxsPW4uX3RpY2tCb3VuZHMsYz1uLmRhdGFCb3gsdT1uLnZpZXdCb3gsaD1uLmdyaWRMaW5lV2lkdGgsZj1uLmdyaWRMaW5lQ29sb3IsZD1uLmdyaWRMaW5lRW5hYmxlLHA9bi5waXhlbFJhdGlvLGc9MDsyPmc7KytnKXt2YXIgdj1sW2ddLG09bFtnKzJdLHk9bS12LGI9LjUqKGNbZysyXStjW2ddKSx4PWNbZysyXS1jW2ddO2VbZ109Mip5L3gsdFtnXT0yKih2LWIpL3h9by5iaW5kKCksaS5iaW5kKCksby5hdHRyaWJ1dGVzLmRhdGFDb29yZC5wb2ludGVyKCksby51bmlmb3Jtcy5kYXRhU2hpZnQ9dCxvLnVuaWZvcm1zLmRhdGFTY2FsZT1lO2Zvcih2YXIgXz0wLGc9MDsyPmc7KytnKXtyWzBdPXJbMV09MCxyW2ddPTEsby51bmlmb3Jtcy5kYXRhQXhpcz1yLG8udW5pZm9ybXMubGluZVdpZHRoPWhbZ10vKHVbZysyXS11W2ddKSpwLG8udW5pZm9ybXMuY29sb3I9ZltnXTt2YXIgdz02KmFbZ10ubGVuZ3RoO2RbZ10mJncmJnMuZHJhd0FycmF5cyhzLlRSSUFOR0xFUyxfLHcpLF8rPXd9fX0oKSx1LmRyYXdUaWNrTWFya3M9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXSxlPVswLDBdLHI9WzEsMF0sbj1bMCwxXSxvPVswLDBdLGE9WzAsMF07cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBzPXRoaXMucGxvdCxjPXRoaXMudmJvLHU9dGhpcy50aWNrU2hhZGVyLGg9dGhpcy50aWNrcyxmPXMuZ2wsZD1zLl90aWNrQm91bmRzLHA9cy5kYXRhQm94LGc9cy52aWV3Qm94LHY9cy5waXhlbFJhdGlvLG09cy5zY3JlZW5Cb3gseT1tWzJdLW1bMF0sYj1tWzNdLW1bMV0seD1nWzJdLWdbMF0sXz1nWzNdLWdbMV0sdz0wOzI+dzsrK3cpe3ZhciBBPWRbd10saz1kW3crMl0sTT1rLUEsVD0uNSoocFt3KzJdK3Bbd10pLEU9cFt3KzJdLXBbd107ZVt3XT0yKk0vRSx0W3ddPTIqKEEtVCkvRX1lWzBdKj14L3ksdFswXSo9eC95LGVbMV0qPV8vYix0WzFdKj1fL2IsdS5iaW5kKCksYy5iaW5kKCksdS5hdHRyaWJ1dGVzLmRhdGFDb29yZC5wb2ludGVyKCk7dmFyIEw9dS51bmlmb3JtcztMLmRhdGFTaGlmdD10LEwuZGF0YVNjYWxlPWU7dmFyIFM9cy50aWNrTWFya0xlbmd0aCxDPXMudGlja01hcmtXaWR0aCxQPXMudGlja01hcmtDb2xvcix6PTAsUj02KmhbMF0ubGVuZ3RoLE89TWF0aC5taW4obC5nZShoWzBdLChwWzBdLWRbMF0pLyhkWzJdLWRbMF0pLGkpLGhbMF0ubGVuZ3RoKSxJPU1hdGgubWluKGwuZ3QoaFswXSwocFsyXS1kWzBdKS8oZFsyXS1kWzBdKSxpKSxoWzBdLmxlbmd0aCksTj16KzYqTyxqPTYqTWF0aC5tYXgoMCxJLU8pLEY9TWF0aC5taW4obC5nZShoWzFdLChwWzFdLWRbMV0pLyhkWzNdLWRbMV0pLGkpLGhbMV0ubGVuZ3RoKSxEPU1hdGgubWluKGwuZ3QoaFsxXSwocFszXS1kWzFdKS8oZFszXS1kWzFdKSxpKSxoWzFdLmxlbmd0aCksQj1SKzYqRixVPTYqTWF0aC5tYXgoMCxELUYpO29bMF09MiooZ1swXS1TWzFdKS95LTEsb1sxXT0oZ1szXStnWzFdKS9iLTEsYVswXT1TWzFdKnYveSxhWzFdPUNbMV0qdi9iLFUmJihMLmNvbG9yPVBbMV0sTC50aWNrU2NhbGU9YSxMLmRhdGFBeGlzPW4sTC5zY3JlZW5PZmZzZXQ9byxmLmRyYXdBcnJheXMoZi5UUklBTkdMRVMsQixVKSksb1swXT0oZ1syXStnWzBdKS95LTEsb1sxXT0yKihnWzFdLVNbMF0pL2ItMSxhWzBdPUNbMF0qdi95LGFbMV09U1swXSp2L2IsaiYmKEwuY29sb3I9UFswXSxMLnRpY2tTY2FsZT1hLEwuZGF0YUF4aXM9cixMLnNjcmVlbk9mZnNldD1vLGYuZHJhd0FycmF5cyhmLlRSSUFOR0xFUyxOLGopKSxvWzBdPTIqKGdbMl0rU1szXSkveS0xLG9bMV09KGdbM10rZ1sxXSkvYi0xLGFbMF09U1szXSp2L3ksYVsxXT1DWzNdKnYvYixVJiYoTC5jb2xvcj1QWzNdLEwudGlja1NjYWxlPWEsTC5kYXRhQXhpcz1uLEwuc2NyZWVuT2Zmc2V0PW8sZi5kcmF3QXJyYXlzKGYuVFJJQU5HTEVTLEIsVSkpLG9bMF09KGdbMl0rZ1swXSkveS0xLG9bMV09MiooZ1szXStTWzJdKS9iLTEsYVswXT1DWzJdKnYveSxhWzFdPVNbMl0qdi9iLGomJihMLmNvbG9yPVBbMl0sTC50aWNrU2NhbGU9YSxMLmRhdGFBeGlzPXIsTC5zY3JlZW5PZmZzZXQ9byxmLmRyYXdBcnJheXMoZi5UUklBTkdMRVMsTixqKSl9fSgpLHUudXBkYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMSwtMSwtMSwxLC0xXSxlPVsxLC0xLDEsMSwtMSwtMV07cmV0dXJuIGZ1bmN0aW9uKHIpe2Zvcih2YXIgbj1yLnRpY2tzLGk9ci5ib3VuZHMsbz1uZXcgRmxvYXQzMkFycmF5KDE4KihuWzBdLmxlbmd0aCtuWzFdLmxlbmd0aCkpLGE9KHRoaXMucGxvdC56ZXJvTGluZUVuYWJsZSwwKSxzPVtbXSxbXV0sbD0wOzI+bDsrK2wpZm9yKHZhciBjPXNbbF0sdT1uW2xdLGg9aVtsXSxmPWlbbCsyXSxkPTA7ZDx1Lmxlbmd0aDsrK2Qpe3ZhciBwPSh1W2RdLngtaCkvKGYtaCk7Yy5wdXNoKHApO2Zvcih2YXIgZz0wOzY+ZzsrK2cpb1thKytdPXAsb1thKytdPXRbZ10sb1thKytdPWVbZ119dGhpcy50aWNrcz1zLHRoaXMudmJvLnVwZGF0ZShvKX19KCksdS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52Ym8uZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnRpY2tTaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjExOSwiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjEyMSwiZ2wtYnVmZmVyIjo3NSwiZ2wtc2hhZGVyIjoxNTR9XSwxMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yfWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5nbCxyPW8oZSxbLTEsLTEsLTEsMSwxLC0xLDEsMV0pLGk9YShlLHMubGluZVZlcnQscy5saW5lRnJhZyksbD1uZXcgbih0LHIsaSk7cmV0dXJuIGx9ZS5leHBvcnRzPWk7dmFyIG89dCgiZ2wtYnVmZmVyIiksYT10KCJnbC1zaGFkZXIiKSxzPXQoIi4vc2hhZGVycyIpLGw9bi5wcm90b3R5cGU7bC5iaW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zaGFkZXI7dGhpcy52Ym8uYmluZCgpLHRoaXMuc2hhZGVyLmJpbmQoKSx0LmF0dHJpYnV0ZXMuY29vcmQucG9pbnRlcigpLHQudW5pZm9ybXMuc2NyZWVuQm94PXRoaXMucGxvdC5zY3JlZW5Cb3h9LGwuZHJhd0xpbmU9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXSxlPVswLDBdO3JldHVybiBmdW5jdGlvbihyLG4saSxvLGEscyl7dmFyIGw9dGhpcy5wbG90LGM9dGhpcy5zaGFkZXIsdT1sLmdsO3RbMF09cix0WzFdPW4sZVswXT1pLGVbMV09byxjLnVuaWZvcm1zLnN0YXJ0PXQsYy51bmlmb3Jtcy5lbmQ9ZSxjLnVuaWZvcm1zLndpZHRoPWEqbC5waXhlbFJhdGlvLGMudW5pZm9ybXMuY29sb3I9cyx1LmRyYXdBcnJheXModS5UUklBTkdMRV9TVFJJUCwwLDQpfX0oKSxsLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZiby5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjExOSwiZ2wtYnVmZmVyIjo3NSwiZ2wtc2hhZGVyIjoxNTR9XSwxMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49InByZWNpc2lvbiBsb3dwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbnVuaWZvcm0gdmVjNCBjb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci54eXogKiBjb2xvci53LCBjb2xvci53KTtcbn1cbiI7ZS5leHBvcnRzPXtsaW5lVmVydDoicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBjb29yZDtcblxudW5pZm9ybSB2ZWM0IHNjcmVlbkJveDtcbnVuaWZvcm0gdmVjMiBzdGFydCwgZW5kO1xudW5pZm9ybSBmbG9hdCB3aWR0aDtcblxudmVjMiBwZXJwKHZlYzIgdikge1xuICByZXR1cm4gdmVjMih2LnksIC12LngpO1xufVxuXG52ZWMyIHNjcmVlbih2ZWMyIHYpIHtcbiAgcmV0dXJuIDIuMCAqICh2IC0gc2NyZWVuQm94Lnh5KSAvIChzY3JlZW5Cb3guencgLSBzY3JlZW5Cb3gueHkpIC0gMS4wO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgZGVsdGEgPSBub3JtYWxpemUocGVycChzdGFydCAtIGVuZCkpO1xuICB2ZWMyIG9mZnNldCA9IG1peChzdGFydCwgZW5kLCAwLjUgKiAoY29vcmQueSsxLjApKTtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHNjcmVlbihvZmZzZXQgKyAwLjUgKiB3aWR0aCAqIGRlbHRhICogY29vcmQueCksIDAsIDEpO1xufVxuIixsaW5lRnJhZzpuLHRleHRWZXJ0OiIjZGVmaW5lIEdMU0xJRlkgMVxuYXR0cmlidXRlIHZlYzMgdGV4dENvb3JkaW5hdGU7XG5cbnVuaWZvcm0gdmVjMiBkYXRhU2NhbGUsIGRhdGFTaGlmdCwgZGF0YUF4aXMsIHNjcmVlbk9mZnNldCwgdGV4dFNjYWxlO1xudW5pZm9ybSBmbG9hdCBhbmdsZTtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkYXRhT2Zmc2V0ICA9IHRleHRDb29yZGluYXRlLno7XG4gIHZlYzIgZ2x5cGhPZmZzZXQgID0gdGV4dENvb3JkaW5hdGUueHk7XG4gIG1hdDIgZ2x5cGhNYXRyaXggPSBtYXQyKGNvcyhhbmdsZSksIHNpbihhbmdsZSksIC1zaW4oYW5nbGUpLCBjb3MoYW5nbGUpKTtcbiAgdmVjMiBzY3JlZW5Db29yZGluYXRlID0gZGF0YUF4aXMgKiAoZGF0YVNjYWxlICogZGF0YU9mZnNldCArIGRhdGFTaGlmdCkgK1xuICAgIGdseXBoTWF0cml4ICogZ2x5cGhPZmZzZXQgKiB0ZXh0U2NhbGUgKyBzY3JlZW5PZmZzZXQ7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChzY3JlZW5Db29yZGluYXRlLCAwLCAxKTtcbn1cbiIsdGV4dEZyYWc6bixncmlkVmVydDoicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBkYXRhQ29vcmQ7XG5cbnVuaWZvcm0gdmVjMiBkYXRhQXhpcywgZGF0YVNoaWZ0LCBkYXRhU2NhbGU7XG51bmlmb3JtIGZsb2F0IGxpbmVXaWR0aDtcblxudm9pZCBtYWluKCkge1xuICB2ZWMyIHBvcyA9IGRhdGFBeGlzICogKGRhdGFTY2FsZSAqIGRhdGFDb29yZC54ICsgZGF0YVNoaWZ0KTtcbiAgcG9zICs9IDEwLjAgKiBkYXRhQ29vcmQueSAqIHZlYzIoZGF0YUF4aXMueSwgLWRhdGFBeGlzLngpICsgZGF0YUNvb3JkLnogKiBsaW5lV2lkdGg7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEpO1xufVxuIixncmlkRnJhZzpuLGJveFZlcnQ6InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgY29vcmQ7XG5cbnVuaWZvcm0gdmVjNCBzY3JlZW5Cb3g7XG51bmlmb3JtIHZlYzIgbG8sIGhpO1xuXG52ZWMyIHNjcmVlbih2ZWMyIHYpIHtcbiAgcmV0dXJuIDIuMCAqICh2IC0gc2NyZWVuQm94Lnh5KSAvIChzY3JlZW5Cb3guencgLSBzY3JlZW5Cb3gueHkpIC0gMS4wO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChzY3JlZW4obWl4KGxvLCBoaSwgY29vcmQpKSwgMCwgMSk7XG59XG4iLHRpY2tWZXJ0OiJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIGRhdGFDb29yZDtcblxudW5pZm9ybSB2ZWMyIGRhdGFBeGlzLCBkYXRhU2hpZnQsIGRhdGFTY2FsZSwgc2NyZWVuT2Zmc2V0LCB0aWNrU2NhbGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMiBwb3MgPSBkYXRhQXhpcyAqIChkYXRhU2NhbGUgKiBkYXRhQ29vcmQueCArIGRhdGFTaGlmdCk7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MgKyB0aWNrU2NhbGUqZGF0YUNvb3JkLnl6ICsgc2NyZWVuT2Zmc2V0LCAwLCAxKTtcbn1cbiJ9fSx7fV0sMTIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMucGxvdD10LHRoaXMudmJvPWUsdGhpcy5zaGFkZXI9cix0aGlzLnRpY2tPZmZzZXQ9W1tdLFtdXSx0aGlzLnRpY2tYPVtbXSxbXV0sdGhpcy5sYWJlbE9mZnNldD1bMCwwXSx0aGlzLmxhYmVsQ291bnQ9WzAsMF19ZnVuY3Rpb24gaSh0KXt2YXIgZT10LmdsLHI9byhlKSxpPWEoZSxjLnRleHRWZXJ0LGMudGV4dEZyYWcpLHM9bmV3IG4odCxyLGkpO3JldHVybiBzfWUuZXhwb3J0cz1pO3ZhciBvPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtc2hhZGVyIikscz10KCJ0ZXh0LWNhY2hlIiksbD10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGM9dCgiLi9zaGFkZXJzIiksdT1uLnByb3RvdHlwZTt1LmRyYXdUaWNrcz1mdW5jdGlvbigpe3ZhciB0PVswLDBdLGU9WzAsMF0scj1bMCwwXTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9dGhpcy5wbG90LG89dGhpcy5zaGFkZXIsYT10aGlzLnRpY2tYW25dLHM9dGhpcy50aWNrT2Zmc2V0W25dLGM9aS5nbCx1PWkudmlld0JveCxoPWkuZGF0YUJveCxmPWkuc2NyZWVuQm94LGQ9aS5waXhlbFJhdGlvLHA9aS50aWNrRW5hYmxlLGc9aS50aWNrUGFkLHY9aS50aWNrQ29sb3IsbT1pLnRpY2tBbmdsZSx5PShpLnRpY2tNYXJrTGVuZ3RoLGkubGFiZWxFbmFibGUpLGI9aS5sYWJlbFBhZCx4PWkubGFiZWxDb2xvcixfPWkubGFiZWxBbmdsZSx3PXRoaXMubGFiZWxPZmZzZXRbbl0sQT10aGlzLmxhYmVsQ291bnRbbl0saz1sLmx0KGEsaFtuXSksTT1sLmxlKGEsaFtuKzJdKTt0WzBdPXRbMV09MCx0W25dPTEsZVtuXT0odVsyK25dK3Vbbl0pLyhmWzIrbl0tZltuXSktMTt2YXIgVD0yL2ZbMisoMV5uKV0tZlsxXm5dO2VbMV5uXT1UKnVbMV5uXS0xLHBbbl0mJihlWzFebl0tPVQqZCpnW25dLE0+ayYmc1tNXT5zW2tdJiYoby51bmlmb3Jtcy5kYXRhQXhpcz10LG8udW5pZm9ybXMuc2NyZWVuT2Zmc2V0PWUsby51bmlmb3Jtcy5jb2xvcj12W25dLG8udW5pZm9ybXMuYW5nbGU9bVtuXSxjLmRyYXdBcnJheXMoYy5UUklBTkdMRVMsc1trXSxzW01dLXNba10pKSkseVtuXSYmQSYmKGVbMV5uXS09VCpkKmJbbl0sby51bmlmb3Jtcy5kYXRhQXhpcz1yLG8udW5pZm9ybXMuc2NyZWVuT2Zmc2V0PWUsby51bmlmb3Jtcy5jb2xvcj14W25dLG8udW5pZm9ybXMuYW5nbGU9X1tuXSxjLmRyYXdBcnJheXMoYy5UUklBTkdMRVMsdyxBKSksZVsxXm5dPVQqdVsyKygxXm4pXS0xLHBbbisyXSYmKGVbMV5uXSs9VCpkKmdbbisyXSxNPmsmJnNbTV0+c1trXSYmKG8udW5pZm9ybXMuZGF0YUF4aXM9dCxvLnVuaWZvcm1zLnNjcmVlbk9mZnNldD1lLG8udW5pZm9ybXMuY29sb3I9dltuKzJdLG8udW5pZm9ybXMuYW5nbGU9bVtuKzJdLGMuZHJhd0FycmF5cyhjLlRSSUFOR0xFUyxzW2tdLHNbTV0tc1trXSkpKSx5W24rMl0mJkEmJihlWzFebl0rPVQqZCpiW24rMl0sby51bmlmb3Jtcy5kYXRhQXhpcz1yLG8udW5pZm9ybXMuc2NyZWVuT2Zmc2V0PWUsby51bmlmb3Jtcy5jb2xvcj14W24rMl0sby51bmlmb3Jtcy5hbmdsZT1fW24rMl0sYy5kcmF3QXJyYXlzKGMuVFJJQU5HTEVTLHcsQSkpfX0oKSx1LmRyYXdUaXRsZT1mdW5jdGlvbigpe3ZhciB0PVswLDBdLGU9WzAsMF07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wbG90LG49dGhpcy5zaGFkZXIsaT1yLmdsLG89ci5zY3JlZW5Cb3gsYT1yLnRpdGxlQ2VudGVyLHM9ci50aXRsZUFuZ2xlLGw9ci50aXRsZUNvbG9yLGE9ci50aXRsZUNlbnRlcixjPXIucGl4ZWxSYXRpbztpZih0aGlzLnRpdGxlQ291bnQpe2Zvcih2YXIgdT0wOzI+dTsrK3UpZVt1XT0yKihhW3VdKmMtb1t1XSkvKG9bMit1XS1vW3VdKS0xO24uYmluZCgpLG4udW5pZm9ybXMuZGF0YUF4aXM9dCxuLnVuaWZvcm1zLnNjcmVlbk9mZnNldD1lLG4udW5pZm9ybXMuYW5nbGU9cyxuLnVuaWZvcm1zLmNvbG9yPWwsaS5kcmF3QXJyYXlzKGkuVFJJQU5HTEVTLHRoaXMudGl0bGVPZmZzZXQsdGhpcy50aXRsZUNvdW50KX19fSgpLHUuYmluZD1mdW5jdGlvbigpe3ZhciB0PVswLDBdLGU9WzAsMF0scj1bMCwwXTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLnBsb3QsaT10aGlzLnNoYWRlcixvPW4uX3RpY2tCb3VuZHMsYT1uLmRhdGFCb3gscz1uLnNjcmVlbkJveCxsPW4udmlld0JveDtpLmJpbmQoKTtmb3IodmFyIGM9MDsyPmM7KytjKXt2YXIgdT1vW2NdLGg9b1tjKzJdLGY9aC11LGQ9LjUqKGFbYysyXSthW2NdKSxwPWFbYysyXS1hW2NdLGc9bFtjXSx2PWxbYysyXSxtPXYtZyx5PXNbY10sYj1zW2MrMl0seD1iLXk7ZVtjXT0yKmYvcCptL3gsdFtjXT0yKih1LWQpL3AqbS94fXJbMV09MipuLnBpeGVsUmF0aW8vKHNbM10tc1sxXSksclswXT1yWzFdKihzWzNdLXNbMV0pLyhzWzJdLXNbMF0pLGkudW5pZm9ybXMuZGF0YVNjYWxlPWUsaS51bmlmb3Jtcy5kYXRhU2hpZnQ9dCxpLnVuaWZvcm1zLnRleHRTY2FsZT1yLHRoaXMudmJvLmJpbmQoKSxpLmF0dHJpYnV0ZXMudGV4dENvb3JkaW5hdGUucG9pbnRlcigpfX0oKSx1LnVwZGF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj10LnRpY2tzLG49dC5ib3VuZHMsaT0wOzI+aTsrK2kpe2Zvcih2YXIgbz1bTWF0aC5mbG9vcihlLmxlbmd0aC8zKV0sYT1bLSgxLzApXSxsPXJbaV0sYz0wO2M8bC5sZW5ndGg7KytjKXtmb3IodmFyIHU9bFtjXSxoPXUueCxmPXUudGV4dCxkPXUuZm9udHx8InNhbnMtc2VyaWYiLHA9dS5mb250U2l6ZXx8MTIsZz1zKGQsZikuZGF0YSx2PTEvKG5baSsyXS1uW2ldKSxtPW5baV0seT0wO3k8Zy5sZW5ndGg7eSs9MillLnB1c2goZ1t5XSpwLC1nW3krMV0qcCwoaC1tKSp2KTtvLnB1c2goTWF0aC5mbG9vcihlLmxlbmd0aC8zKSksYS5wdXNoKGgpfXRoaXMudGlja09mZnNldFtpXT1vLHRoaXMudGlja1hbaV09YX1mb3IodmFyIGk9MDsyPmk7KytpKXt0aGlzLmxhYmVsT2Zmc2V0W2ldPU1hdGguZmxvb3IoZS5sZW5ndGgvMyk7Zm9yKHZhciBnPXModC5sYWJlbEZvbnRbaV0sdC5sYWJlbHNbaV0pLmRhdGEscD10LmxhYmVsU2l6ZVtpXSxjPTA7YzxnLmxlbmd0aDtjKz0yKWUucHVzaChnW2NdKnAsLWdbYysxXSpwLDApO3RoaXMubGFiZWxDb3VudFtpXT1NYXRoLmZsb29yKGUubGVuZ3RoLzMpLXRoaXMubGFiZWxPZmZzZXRbaV19dGhpcy50aXRsZU9mZnNldD1NYXRoLmZsb29yKGUubGVuZ3RoLzMpO2Zvcih2YXIgZz1zKHQudGl0bGVGb250LHQudGl0bGUpLmRhdGEscD10LnRpdGxlU2l6ZSxjPTA7YzxnLmxlbmd0aDtjKz0yKWUucHVzaChnW2NdKnAsLWdbYysxXSpwLDApO3RoaXMudGl0bGVDb3VudD1NYXRoLmZsb29yKGUubGVuZ3RoLzMpLXRoaXMudGl0bGVPZmZzZXQsdGhpcy52Ym8udXBkYXRlKGUpfSx1LmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZiby5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjExOSwiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjEyMSwiZ2wtYnVmZmVyIjo3NSwiZ2wtc2hhZGVyIjoxNTQsInRleHQtY2FjaGUiOjIzMH1dLDEyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSl7dmFyIG89WyJmdW5jdGlvbiAiLHQsIihhLGwsaCwiLG4uam9pbigiLCIpLCIpeyIsaT8iIjoidmFyIGk9IixyPyJsLTEiOiJoKzEiLCI7d2hpbGUobDw9aCl7dmFyIG09KGwraCk+Pj4xLHg9YVttXSJdO3JldHVybiBpP2UuaW5kZXhPZigiYyIpPDA/by5wdXNoKCI7aWYoeD09PXkpe3JldHVybiBtfWVsc2UgaWYoeDw9eSl7Iik6by5wdXNoKCI7dmFyIHA9Yyh4LHkpO2lmKHA9PT0wKXtyZXR1cm4gbX1lbHNlIGlmKHA8PTApeyIpOm8ucHVzaCgiO2lmKCIsZSwiKXtpPW07Iikscj9vLnB1c2goImw9bSsxfWVsc2V7aD1tLTF9Iik6by5wdXNoKCJoPW0tMX1lbHNle2w9bSsxfSIpLG8ucHVzaCgifSIpLGk/by5wdXNoKCJyZXR1cm4gLTF9OyIpOm8ucHVzaCgicmV0dXJuIGl9OyIpLG8uam9pbigiIil9ZnVuY3Rpb24gaSh0LGUscixpKXt2YXIgbz1uZXcgRnVuY3Rpb24oW24oIkEiLCJ4Iit0KyJ5IixlLFsieSJdLGkpLG4oIlAiLCJjKHgseSkiK3QrIjAiLGUsWyJ5IiwiYyJdLGkpLCJmdW5jdGlvbiBkaXNwYXRjaEJzZWFyY2giLHIsIihhLHksYyxsLGgpe2lmKHR5cGVvZihjKT09PSdmdW5jdGlvbicpe3JldHVybiBQKGEsKGw9PT12b2lkIDApPzA6bHwwLChoPT09dm9pZCAwKT9hLmxlbmd0aC0xOmh8MCx5LGMpfWVsc2V7cmV0dXJuIEEoYSwoYz09PXZvaWQgMCk/MDpjfDAsKGw9PT12b2lkIDApP2EubGVuZ3RoLTE6bHwwLHkpfX1yZXR1cm4gZGlzcGF0Y2hCc2VhcmNoIixyXS5qb2luKCIiKSk7cmV0dXJuIG8oKX1lLmV4cG9ydHM9e2dlOmkoIj49IiwhMSwiR0UiKSxndDppKCI+IiwhMSwiR1QiKSxsdDppKCI8IiwhMCwiTFQiKSxsZTppKCI8PSIsITAsIkxFIiksZXE6aSgiLSIsITAsIkVRIiwhMCl9fSx7fV0sMTIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt0aGlzLmdsPXQsdGhpcy5waWNrQnVmZmVyPWUsdGhpcy5zY3JlZW5Cb3g9WzAsMCx0LmRyYXdpbmdCdWZmZXJXaWR0aCx0LmRyYXdpbmdCdWZmZXJIZWlnaHRdLHRoaXMudmlld0JveD1bMCwwLDAsMF0sdGhpcy5kYXRhQm94PVstMTAsLTEwLDEwLDEwXSx0aGlzLmdyaWRMaW5lRW5hYmxlPVshMCwhMF0sdGhpcy5ncmlkTGluZVdpZHRoPVsxLDFdLHRoaXMuZ3JpZExpbmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5waXhlbFJhdGlvPTEsdGhpcy50aWNrTWFya0xlbmd0aD1bMCwwLDAsMF0sdGhpcy50aWNrTWFya1dpZHRoPVswLDAsMCwwXSx0aGlzLnRpY2tNYXJrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aWNrUGFkPVsxNSwxNSwxNSwxNV0sdGhpcy50aWNrQW5nbGU9WzAsMCwwLDBdLHRoaXMudGlja0VuYWJsZT1bITAsITAsITAsITBdLHRoaXMudGlja0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMubGFiZWxQYWQ9WzE1LDE1LDE1LDE1XSx0aGlzLmxhYmVsQW5nbGU9WzAsTWF0aC5QSS8yLDAsMypNYXRoLlBJLzJdLHRoaXMubGFiZWxFbmFibGU9WyEwLCEwLCEwLCEwXSx0aGlzLmxhYmVsQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aXRsZUNlbnRlcj1bMCwwXSx0aGlzLnRpdGxlRW5hYmxlPSEwLHRoaXMudGl0bGVBbmdsZT0wLHRoaXMudGl0bGVDb2xvcj1bMCwwLDAsMV0sdGhpcy5ib3JkZXJDb2xvcj1bMCwwLDAsMF0sdGhpcy5iYWNrZ3JvdW5kQ29sb3I9WzAsMCwwLDBdLHRoaXMuemVyb0xpbmVFbmFibGU9WyEwLCEwXSx0aGlzLnplcm9MaW5lV2lkdGg9WzQsNF0sdGhpcy56ZXJvTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmJvcmRlckxpbmVFbmFibGU9WyEwLCEwLCEwLCEwXSx0aGlzLmJvcmRlckxpbmVXaWR0aD1bMiwyLDIsMl0sdGhpcy5ib3JkZXJMaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5ncmlkPW51bGwsdGhpcy50ZXh0PW51bGwsdGhpcy5saW5lPW51bGwsdGhpcy5ib3g9bnVsbCx0aGlzLm9iamVjdHM9W10sdGhpcy5vdmVybGF5cz1bXSx0aGlzLl90aWNrQm91bmRzPVsxLzAsMS8wLC0oMS8wKSwtKDEvMCldLHRoaXMuZGlydHk9ITEsdGhpcy5waWNrRGlydHk9ITEsdGhpcy5waWNrRGVsYXk9MTIwLHRoaXMucGlja1JhZGl1cz0xMCx0aGlzLl9waWNrVGltZW91dD1udWxsLHRoaXMuX2RyYXdQaWNrPXRoaXMuZHJhd1BpY2suYmluZCh0aGlzKSx0aGlzLl9kZXB0aENvdW50ZXI9MH1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT10LnNsaWNlKCkscj0wO3I8ZS5sZW5ndGg7KytyKWVbcl09ZVtyXS5zbGljZSgpO3JldHVybiBlfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gdC54LWUueH1mdW5jdGlvbiBhKHQpe3ZhciBlPXQuZ2wscj1zKGUsW2UuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF0pLGk9bmV3IG4oZSxyKTtyZXR1cm4gaS5ncmlkPWwoaSksaS50ZXh0PWMoaSksaS5saW5lPXUoaSksaS5ib3g9aChpKSxpLnVwZGF0ZSh0KSxpfWUuZXhwb3J0cz1hO3ZhciBzPXQoImdsLXNlbGVjdC1zdGF0aWMiKSxsPXQoIi4vbGliL2dyaWQiKSxjPXQoIi4vbGliL3RleHQiKSx1PXQoIi4vbGliL2xpbmUiKSxoPXQoIi4vbGliL2JveCIpLGY9bi5wcm90b3R5cGU7Zi5zZXREaXJ0eT1mdW5jdGlvbigpe3RoaXMuZGlydHk9dGhpcy5waWNrRGlydHk9ITB9LGYuc2V0T3ZlcmxheURpcnR5PWZ1bmN0aW9uKCl7dGhpcy5kaXJ0eT0hMH0sZi5uZXh0RGVwdGhWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXB0aENvdW50ZXIrKy82NTUzNn0sZi5kcmF3PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nbCxlPXRoaXMuc2NyZWVuQm94LHI9dGhpcy52aWV3Qm94LG49dGhpcy5kYXRhQm94LGk9dGhpcy5waXhlbFJhdGlvLG89dGhpcy5ncmlkLGE9dGhpcy5saW5lLHM9dGhpcy50ZXh0LGw9dGhpcy5vYmplY3RzO2lmKHRoaXMuX2RlcHRoQ291bnRlcj0wLHRoaXMucGlja0RpcnR5JiYodGhpcy5fcGlja1RpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9waWNrVGltZW91dCksdGhpcy5waWNrRGlydHk9ITEsdGhpcy5fcGlja1RpbWVvdXQ9c2V0VGltZW91dCh0aGlzLl9kcmF3UGljayx0aGlzLnBpY2tEZWxheSkpLHRoaXMuZGlydHkpe3RoaXMuZGlydHk9ITEsdC5iaW5kRnJhbWVidWZmZXIodC5GUkFNRUJVRkZFUixudWxsKSx0LmVuYWJsZSh0LlNDSVNTT1JfVEVTVCksdC5kaXNhYmxlKHQuREVQVEhfVEVTVCksdC5kZXB0aEZ1bmModC5MRVNTKSx0LmRlcHRoTWFzayghMSksdC5lbmFibGUodC5CTEVORCksdC5ibGVuZEVxdWF0aW9uKHQuRlVOQ19BREQsdC5GVU5DX0FERCksdC5ibGVuZEZ1bmModC5PTkUsdC5PTkVfTUlOVVNfU1JDX0FMUEhBKSx0LnNjaXNzb3IoZVswXSxlWzFdLGVbMl0tZVswXSxlWzNdLWVbMV0pO3ZhciBjPXRoaXMuYm9yZGVyQ29sb3I7dC5jbGVhckNvbG9yKGNbMF0qY1szXSxjWzFdKmNbM10sY1syXSpjWzNdLGNbM10pLHQuY2xlYXIodC5DT0xPUl9CVUZGRVJfQklUfHQuREVQVEhfQlVGRkVSX0JJVCksdC5zY2lzc29yKHJbMF0sclsxXSxyWzJdLXJbMF0sclszXS1yWzFdKSx0LnZpZXdwb3J0KHJbMF0sclsxXSxyWzJdLXJbMF0sclszXS1yWzFdKTt2YXIgdT10aGlzLmJhY2tncm91bmRDb2xvcjt0LmNsZWFyQ29sb3IodVswXSp1WzNdLHVbMV0qdVszXSx1WzJdKnVbM10sdVszXSksdC5jbGVhcih0LkNPTE9SX0JVRkZFUl9CSVQpLG8uZHJhdygpO3ZhciBoPXRoaXMuemVyb0xpbmVFbmFibGUsZj10aGlzLnplcm9MaW5lQ29sb3IsZD10aGlzLnplcm9MaW5lV2lkdGg7aWYoaFswXXx8aFsxXSl7YS5iaW5kKCk7Zm9yKHZhciBwPTA7Mj5wOysrcClpZihoW3BdJiZuW3BdPD0wJiZuW3ArMl0+PTApe3ZhciBnPWVbcF0tbltwXSooZVtwKzJdLWVbcF0pLyhuW3ArMl0tbltwXSk7MD09PXA/YS5kcmF3TGluZShnLGVbMV0sZyxlWzNdLGRbcF0sZltwXSk6YS5kcmF3TGluZShlWzBdLGcsZVsyXSxnLGRbcF0sZltwXSl9fWZvcih2YXIgcD0wO3A8bC5sZW5ndGg7KytwKWxbcF0uZHJhdygpO3Qudmlld3BvcnQoZVswXSxlWzFdLGVbMl0tZVswXSxlWzNdLWVbMV0pLHQuc2Npc3NvcihlWzBdLGVbMV0sZVsyXS1lWzBdLGVbM10tZVsxXSksdGhpcy5ncmlkLmRyYXdUaWNrTWFya3MoKSxhLmJpbmQoKTt2YXIgdj10aGlzLmJvcmRlckxpbmVFbmFibGUsbT10aGlzLmJvcmRlckxpbmVXaWR0aCx5PXRoaXMuYm9yZGVyTGluZUNvbG9yO3ZbMV0mJmEuZHJhd0xpbmUoclswXSxyWzFdLS41Km1bMV0qaSxyWzBdLHJbM10rLjUqbVszXSppLG1bMV0seVsxXSksdlswXSYmYS5kcmF3TGluZShyWzBdLS41Km1bMF0qaSxyWzFdLHJbMl0rLjUqbVsyXSppLHJbMV0sbVswXSx5WzBdKSx2WzNdJiZhLmRyYXdMaW5lKHJbMl0sclsxXS0uNSptWzFdKmksclsyXSxyWzNdKy41Km1bM10qaSxtWzNdLHlbM10pLHZbMl0mJmEuZHJhd0xpbmUoclswXS0uNSptWzBdKmksclszXSxyWzJdKy41Km1bMl0qaSxyWzNdLG1bMl0seVsyXSkscy5iaW5kKCk7Zm9yKHZhciBwPTA7Mj5wOysrcClzLmRyYXdUaWNrcyhwKTt0aGlzLnRpdGxlRW5hYmxlJiZzLmRyYXdUaXRsZSgpO2Zvcih2YXIgYj10aGlzLm92ZXJsYXlzLHA9MDtwPGIubGVuZ3RoOysrcCliW3BdLmRyYXcoKTt0LmRpc2FibGUodC5TQ0lTU09SX1RFU1QpLHQuZGlzYWJsZSh0LkJMRU5EKSx0LmRlcHRoTWFzayghMCl9fX0oKSxmLmRyYXdQaWNrPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5waWNrQnVmZmVyO3RoaXMuZ2w7dGhpcy5fcGlja1RpbWVvdXQ9bnVsbCx0LmJlZ2luKCk7Zm9yKHZhciBlPTEscj10aGlzLm9iamVjdHMsbj0wO248ci5sZW5ndGg7KytuKWU9cltuXS5kcmF3UGljayhlKTt0LmVuZCgpfX0oKSxmLnBpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnBpeGVsUmF0aW8sbj10aGlzLnBpY2tQaXhlbFJhdGlvLGk9dGhpcy52aWV3Qm94LG89MHxNYXRoLnJvdW5kKCh0LWlbMF0vcikqbiksYT0wfE1hdGgucm91bmQoKGUtaVsxXS9yKSpuKSxzPXRoaXMucGlja0J1ZmZlci5xdWVyeShvLGEsdGhpcy5waWNrUmFkaXVzKTtpZighcylyZXR1cm4gbnVsbDtmb3IodmFyIGw9cy5pZCsocy52YWx1ZVswXTw8OCkrKHMudmFsdWVbMV08PDE2KSsocy52YWx1ZVsyXTw8MjQpLGM9dGhpcy5vYmplY3RzLHU9MDt1PGMubGVuZ3RoOysrdSl7dmFyIGg9Y1t1XS5waWNrKG8sYSxsKTtpZihoKXJldHVybiBofXJldHVybiBudWxsfX0oKSxmLnNldFNjcmVlbkJveD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjcmVlbkJveCxyPXRoaXMucGl4ZWxSYXRpbztlWzBdPTB8TWF0aC5yb3VuZCh0WzBdKnIpLGVbMV09MHxNYXRoLnJvdW5kKHRbMV0qciksZVsyXT0wfE1hdGgucm91bmQodFsyXSpyKSxlWzNdPTB8TWF0aC5yb3VuZCh0WzNdKnIpLHRoaXMuc2V0RGlydHkoKX0sZi5zZXREYXRhQm94PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGF0YUJveCxyPWVbMF0hPT10WzBdfHxlWzFdIT09dFsxXXx8ZVsyXSE9PXRbMl18fGVbM10hPT10WzNdO3ImJihlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sdGhpcy5zZXREaXJ0eSgpKX0sZi5zZXRWaWV3Qm94PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGl4ZWxSYXRpbyxyPXRoaXMudmlld0JveDtyWzBdPTB8TWF0aC5yb3VuZCh0WzBdKmUpLHJbMV09MHxNYXRoLnJvdW5kKHRbMV0qZSksclsyXT0wfE1hdGgucm91bmQodFsyXSplKSxyWzNdPTB8TWF0aC5yb3VuZCh0WzNdKmUpO3ZhciBuPXRoaXMucGlja1BpeGVsUmF0aW87dGhpcy5waWNrQnVmZmVyLnNoYXBlPVswfE1hdGgucm91bmQoKHRbMl0tdFswXSkqbiksMHxNYXRoLnJvdW5kKCh0WzNdLXRbMV0pKm4pXSx0aGlzLnNldERpcnR5KCl9LGYudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDt0aGlzLnBpeGVsUmF0aW89dC5waXhlbFJhdGlvfHwxO3ZhciByPXRoaXMucGl4ZWxSYXRpbzt0aGlzLnBpY2tQaXhlbFJhdGlvPU1hdGgubWF4KHIsMSksdGhpcy5zZXRTY3JlZW5Cb3godC5zY3JlZW5Cb3h8fFswLDAsZS5kcmF3aW5nQnVmZmVyV2lkdGgvcixlLmRyYXdpbmdCdWZmZXJIZWlnaHQvcl0pO3RoaXMuc2NyZWVuQm94O3RoaXMuc2V0Vmlld0JveCh0LnZpZXdCb3h8fFsuMTI1Kih0aGlzLnNjcmVlbkJveFsyXS10aGlzLnNjcmVlbkJveFswXSkvciwuMTI1Kih0aGlzLnNjcmVlbkJveFszXS10aGlzLnNjcmVlbkJveFsxXSkvciwuODc1Kih0aGlzLnNjcmVlbkJveFsyXS10aGlzLnNjcmVlbkJveFswXSkvciwuODc1Kih0aGlzLnNjcmVlbkJveFszXS10aGlzLnNjcmVlbkJveFsxXSkvcl0pO3ZhciBuPXRoaXMudmlld0JveCxhPShuWzJdLW5bMF0pLyhuWzNdLW5bMV0pO3RoaXMuc2V0RGF0YUJveCh0LmRhdGFCb3h8fFstMTAsLTEwL2EsMTAsMTAvYV0pLHRoaXMuYm9yZGVyQ29sb3I9KHQuYm9yZGVyQ29sb3J8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLmJhY2tncm91bmRDb2xvcj0odC5iYWNrZ3JvdW5kQ29sb3J8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLmdyaWRMaW5lRW5hYmxlPSh0LmdyaWRMaW5lRW5hYmxlfHxbITAsITBdKS5zbGljZSgpLHRoaXMuZ3JpZExpbmVXaWR0aD0odC5ncmlkTGluZVdpZHRofHxbMSwxXSkuc2xpY2UoKSx0aGlzLmdyaWRMaW5lQ29sb3I9aSh0LmdyaWRMaW5lQ29sb3J8fFtbLjUsLjUsLjUsMV0sWy41LC41LC41LDFdXSksdGhpcy56ZXJvTGluZUVuYWJsZT0odC56ZXJvTGluZUVuYWJsZXx8WyEwLCEwXSkuc2xpY2UoKSx0aGlzLnplcm9MaW5lV2lkdGg9KHQuemVyb0xpbmVXaWR0aHx8WzQsNF0pLnNsaWNlKCksdGhpcy56ZXJvTGluZUNvbG9yPWkodC56ZXJvTGluZUNvbG9yfHxbWzAsMCwwLDFdLFswLDAsMCwxXV0pLHRoaXMudGlja01hcmtMZW5ndGg9KHQudGlja01hcmtMZW5ndGh8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLnRpY2tNYXJrV2lkdGg9KHQudGlja01hcmtXaWR0aHx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMudGlja01hcmtDb2xvcj1pKHQudGlja01hcmtDb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0pLHRoaXMudGl0bGVDZW50ZXI9KHQudGl0bGVDZW50ZXJ8fFsuNSooblswXStuWzJdKS9yLChuWzNdKzEyMCkvcl0pLnNsaWNlKCksdGhpcy50aXRsZUVuYWJsZT0hKCJ0aXRsZUVuYWJsZSJpbiB0JiYhdC50aXRsZUVuYWJsZSksdGhpcy50aXRsZUFuZ2xlPXQudGl0bGVBbmdsZXx8MCx0aGlzLnRpdGxlQ29sb3I9KHQudGl0bGVDb2xvcnx8WzAsMCwwLDFdKS5zbGljZSgpLHRoaXMubGFiZWxQYWQ9KHQubGFiZWxQYWR8fFsxNSwxNSwxNSwxNV0pLnNsaWNlKCksdGhpcy5sYWJlbEFuZ2xlPSh0LmxhYmVsQW5nbGV8fFswLE1hdGguUEkvMiwwLDMqTWF0aC5QSS8yXSkuc2xpY2UoKSx0aGlzLmxhYmVsRW5hYmxlPSh0LmxhYmVsRW5hYmxlfHxbITAsITAsITAsITBdKS5zbGljZSgpLHRoaXMubGFiZWxDb2xvcj1pKHQubGFiZWxDb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0pLHRoaXMudGlja1BhZD0odC50aWNrUGFkfHxbMTUsMTUsMTUsMTVdKS5zbGljZSgpLHRoaXMudGlja0FuZ2xlPSh0LnRpY2tBbmdsZXx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMudGlja0VuYWJsZT0odC50aWNrRW5hYmxlfHxbITAsITAsITAsITBdKS5zbGljZSgpLHRoaXMudGlja0NvbG9yPWkodC50aWNrQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dKSx0aGlzLmJvcmRlckxpbmVFbmFibGU9KHQuYm9yZGVyTGluZUVuYWJsZXx8WyEwLCEwLCEwLCEwXSkuc2xpY2UoKSx0aGlzLmJvcmRlckxpbmVXaWR0aD0odC5ib3JkZXJMaW5lV2lkdGh8fFsyLDIsMiwyXSkuc2xpY2UoKSx0aGlzLmJvcmRlckxpbmVDb2xvcj1pKHQuYm9yZGVyTGluZUNvbG9yfHxbWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSk7dmFyIHM9dC50aWNrc3x8W1tdLFtdXSxsPXRoaXMuX3RpY2tCb3VuZHM7bFswXT1sWzFdPTEvMCxsWzJdPWxbM109LSgxLzApO2Zvcih2YXIgYz0wOzI+YzsrK2Mpe3ZhciB1PXNbY10uc2xpY2UoMCk7MCE9PXUubGVuZ3RoJiYodS5zb3J0KG8pLGxbY109TWF0aC5taW4obFtjXSx1WzBdLngpLGxbYysyXT1NYXRoLm1heChsW2MrMl0sdVt1Lmxlbmd0aC0xXS54KSl9dGhpcy5ncmlkLnVwZGF0ZSh7Ym91bmRzOmwsdGlja3M6c30pLHRoaXMudGV4dC51cGRhdGUoe2JvdW5kczpsLHRpY2tzOnMsbGFiZWxzOnQubGFiZWxzfHxbIngiLCJ5Il0sbGFiZWxTaXplOnQubGFiZWxTaXplfHxbMTIsMTJdLGxhYmVsRm9udDp0LmxhYmVsRm9udHx8WyJzYW5zLXNlcmlmIiwic2Fucy1zZXJpZiJdLHRpdGxlOnQudGl0bGV8fCIiLHRpdGxlU2l6ZTp0LnRpdGxlU2l6ZXx8MTgsdGl0bGVGb250OnQudGl0bGVGb250fHwic2Fucy1zZXJpZiJ9KSx0aGlzLnNldERpcnR5KCl9LGYuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuYm94LmRpc3Bvc2UoKSx0aGlzLmdyaWQuZGlzcG9zZSgpLHRoaXMudGV4dC5kaXNwb3NlKCksdGhpcy5saW5lLmRpc3Bvc2UoKTtmb3IodmFyIHQ9dGhpcy5vYmplY3RzLmxlbmd0aC0xO3Q+PTA7LS10KXRoaXMub2JqZWN0c1t0XS5kaXNwb3NlKCk7dGhpcy5vYmplY3RzLmxlbmd0aD0wO2Zvcih2YXIgdD10aGlzLm92ZXJsYXlzLmxlbmd0aC0xO3Q+PTA7LS10KXRoaXMub3ZlcmxheXNbdF0uZGlzcG9zZSgpO3RoaXMub3ZlcmxheXMubGVuZ3RoPTAsdGhpcy5nbD1udWxsfSxmLmFkZE9iamVjdD1mdW5jdGlvbih0KXt0aGlzLm9iamVjdHMuaW5kZXhPZih0KTwwJiYodGhpcy5vYmplY3RzLnB1c2godCksdGhpcy5zZXREaXJ0eSgpKX0sZi5yZW1vdmVPYmplY3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMub2JqZWN0cyxyPTA7cjxlLmxlbmd0aDsrK3IpaWYoZVtyXT09PXQpe2Uuc3BsaWNlKHIsMSksdGhpcy5zZXREaXJ0eSgpO2JyZWFrfX0sZi5hZGRPdmVybGF5PWZ1bmN0aW9uKHQpe3RoaXMub3ZlcmxheXMuaW5kZXhPZih0KTwwJiYodGhpcy5vdmVybGF5cy5wdXNoKHQpLHRoaXMuc2V0T3ZlcmxheURpcnR5KCkpfSxmLnJlbW92ZU92ZXJsYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMub3ZlcmxheXMscj0wO3I8ZS5sZW5ndGg7KytyKWlmKGVbcl09PT10KXtlLnNwbGljZShyLDEpLHRoaXMuc2V0T3ZlcmxheURpcnR5KCk7YnJlYWt9fX0seyIuL2xpYi9ib3giOjExNiwiLi9saWIvZ3JpZCI6MTE3LCIuL2xpYi9saW5lIjoxMTgsIi4vbGliL3RleHQiOjEyMCwiZ2wtc2VsZWN0LXN0YXRpYyI6MTUzfV0sMTIzOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2wtc2hhZGVyIiksaT0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG52YXJ5aW5nIHZlYzIgdXY7XG52b2lkIG1haW4oKSB7XG4gIHV2ID0gcG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG59IixvPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gc2FtcGxlcjJEIGFjY3VtQnVmZmVyO1xudmFyeWluZyB2ZWMyIHV2O1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzQgYWNjdW0gPSB0ZXh0dXJlMkQoYWNjdW1CdWZmZXIsIDAuNSAqICh1diArIDEuMCkpO1xuICBnbF9GcmFnQ29sb3IgPSBtaW4odmVjNCgxLDEsMSwxKSwgYWNjdW0pO1xufSI7CmUuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbih0LGksbyxudWxsLFt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzIifV0pfX0seyJnbC1zaGFkZXIiOjE1NH1dLDEyNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dD10fHxkb2N1bWVudC5ib2R5LGU9ZXx8e307dmFyIHI9Wy4wMSwxLzBdOyJkaXN0YW5jZUxpbWl0cyJpbiBlJiYoclswXT1lLmRpc3RhbmNlTGltaXRzWzBdLHJbMV09ZS5kaXN0YW5jZUxpbWl0c1sxXSksInpvb21NaW4iaW4gZSYmKHJbMF09ZS56b29tTWluKSwiem9vbU1heCJpbiBlJiYoclsxXT1lLnpvb21NYXgpO3ZhciBuPW8oe2NlbnRlcjplLmNlbnRlcnx8WzAsMCwwXSx1cDplLnVwfHxbMCwxLDBdLGV5ZTplLmV5ZXx8WzAsMCwxMF0sbW9kZTplLm1vZGV8fCJvcmJpdCIsZGlzdGFuY2VMaW1pdHM6cn0pLGw9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLGM9MCx1PXQuY2xpZW50V2lkdGgsaD10LmNsaWVudEhlaWdodCxmPXt2aWV3Om4sZWxlbWVudDp0LGRlbGF5OmUuZGVsYXl8fDE2LHJvdGF0ZVNwZWVkOmUucm90YXRlU3BlZWR8fDEsem9vbVNwZWVkOmUuem9vbVNwZWVkfHwxLHRyYW5zbGF0ZVNwZWVkOmUudHJhbnNsYXRlU3BlZWR8fDEsZmxpcFg6ISFlLmZsaXBYLGZsaXBZOiEhZS5mbGlwWSxtb2RlczpuLm1vZGVzLHRpY2s6ZnVuY3Rpb24oKXt2YXIgZT1pKCkscj10aGlzLmRlbGF5O24uaWRsZShlLXIpLG4uZmx1c2goZS0oMTAwKzIqcikpO3ZhciBvPWUtMipyO24ucmVjYWxjTWF0cml4KG8pO2Zvcih2YXIgYT0hMCxzPW4uY29tcHV0ZWRNYXRyaXgsZj0wOzE2PmY7KytmKWE9YSYmbFtmXT09PXNbZl0sbFtmXT1zW2ZdO3ZhciBkPXQuY2xpZW50V2lkdGg9PT11JiZ0LmNsaWVudEhlaWdodD09PWg7cmV0dXJuIHU9dC5jbGllbnRXaWR0aCxoPXQuY2xpZW50SGVpZ2h0LGE/IWQ6KGM9TWF0aC5leHAobi5jb21wdXRlZFJhZGl1c1swXSksITApfSxsb29rQXQ6ZnVuY3Rpb24odCxlLHIpe24ubG9va0F0KG4ubGFzdFQoKSx0LGUscil9LHJvdGF0ZTpmdW5jdGlvbih0LGUscil7bi5yb3RhdGUobi5sYXN0VCgpLHQsZSxyKX0scGFuOmZ1bmN0aW9uKHQsZSxyKXtuLnBhbihuLmxhc3RUKCksdCxlLHIpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlLHIpe24udHJhbnNsYXRlKG4ubGFzdFQoKSx0LGUscil9fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhmLHttYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmNvbXB1dGVkTWF0cml4fSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4uc2V0TWF0cml4KG4ubGFzdFQoKSx0KSxuLmNvbXB1dGVkTWF0cml4fSxlbnVtZXJhYmxlOiEwfSxtb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRNb2RlKCl9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbi5zZXRNb2RlKHQpLG4uZ2V0TW9kZSgpfSxlbnVtZXJhYmxlOiEwfSxjZW50ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmNvbXB1dGVkQ2VudGVyfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4ubG9va0F0KG4ubGFzdFQoKSx0KSxuLmNvbXB1dGVkQ2VudGVyfSxlbnVtZXJhYmxlOiEwfSxleWU6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmNvbXB1dGVkRXllfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4ubG9va0F0KG4ubGFzdFQoKSxudWxsLHQpLG4uY29tcHV0ZWRFeWV9LGVudW1lcmFibGU6ITB9LHVwOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wdXRlZFVwfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4ubG9va0F0KG4ubGFzdFQoKSxudWxsLG51bGwsdCksbi5jb21wdXRlZFVwfSxlbnVtZXJhYmxlOiEwfSxkaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbi5zZXREaXN0YW5jZShuLmxhc3RUKCksdCksdH0sZW51bWVyYWJsZTohMH0sZGlzdGFuY2VMaW1pdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmdldERpc3RhbmNlTGltaXRzKHIpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4uc2V0RGlzdGFuY2VMaW1pdHModCksdH0sZW51bWVyYWJsZTohMH19KSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLCExfSk7dmFyIGQ9MCxwPTA7cmV0dXJuIGEodCxmdW5jdGlvbihlLHIsbyxhKXt2YXIgcz0xL3QuY2xpZW50SGVpZ2h0LGw9cyooci1kKSx1PXMqKG8tcCksaD1mLmZsaXBYPzE6LTEsZz1mLmZsaXBZPzE6LTEsdj1NYXRoLlBJKmYucm90YXRlU3BlZWQsbT1pKCk7aWYoMSZlKWEuc2hpZnQ/bi5yb3RhdGUobSwwLDAsLWwqdik6bi5yb3RhdGUobSxoKnYqbCwtZyp2KnUsMCk7ZWxzZSBpZigyJmUpbi5wYW4obSwtZi50cmFuc2xhdGVTcGVlZCpsKmMsZi50cmFuc2xhdGVTcGVlZCp1KmMsMCk7ZWxzZSBpZig0JmUpe3ZhciB5PWYuem9vbVNwZWVkKnUvd2luZG93LmlubmVySGVpZ2h0KihtLW4ubGFzdFQoKSkqNTA7bi5wYW4obSwwLDAsYyooTWF0aC5leHAoeSktMSkpfWQ9cixwPW99KSxzKHQsZnVuY3Rpb24odCxlLHIpe3ZhciBvPWYuZmxpcFg/MTotMSxhPWYuZmxpcFk/MTotMSxzPWkoKTtpZihNYXRoLmFicyh0KT5NYXRoLmFicyhlKSluLnJvdGF0ZShzLDAsMCwtdCpvKk1hdGguUEkqZi5yb3RhdGVTcGVlZC93aW5kb3cuaW5uZXJXaWR0aCk7ZWxzZXt2YXIgbD1mLnpvb21TcGVlZCphKmUvd2luZG93LmlubmVySGVpZ2h0KihzLW4ubGFzdFQoKSkvMTAwO24ucGFuKHMsMCwwLGMqKE1hdGguZXhwKGwpLTEpKX19LCEwKSxmfWUuZXhwb3J0cz1uO3ZhciBpPXQoInJpZ2h0LW5vdyIpLG89dCgiM2QtdmlldyIpLGE9dCgibW91c2UtY2hhbmdlIikscz10KCJtb3VzZS13aGVlbCIpfSx7IjNkLXZpZXciOjM4LCJtb3VzZS1jaGFuZ2UiOjE5OCwibW91c2Utd2hlZWwiOjIwMiwicmlnaHQtbm93IjoyMTJ9XSwxMjU6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtlLnBlcm1pdEhvc3RPYmplY3RzX19fJiZlLnBlcm1pdEhvc3RPYmplY3RzX19fKHQpfWZ1bmN0aW9uIHIodCl7cmV0dXJuISh0LnN1YnN0cigwLGQubGVuZ3RoKT09ZCYmIl9fXyI9PT10LnN1YnN0cih0Lmxlbmd0aC0zKSl9ZnVuY3Rpb24gbih0KXtpZih0IT09T2JqZWN0KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIk5vdCBhbiBvYmplY3Q6ICIrdCk7dmFyIGU9dFtwXTtpZihlJiZlLmtleT09PXQpcmV0dXJuIGU7aWYoZih0KSl7ZT17a2V5OnR9O3RyeXtyZXR1cm4gaCh0LHAse3ZhbHVlOmUsd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITF9KSxlfWNhdGNoKHIpe3JldHVybn19fWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucHJvdG90eXBlPW51bGwsT2JqZWN0LmZyZWV6ZSh0KX1mdW5jdGlvbiBvKCl7eXx8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwoeT0hMCxjb25zb2xlLndhcm4oIldlYWtNYXAgc2hvdWxkIGJlIGludm9rZWQgYXMgbmV3IFdlYWtNYXAoKSwgbm90IFdlYWtNYXAoKS4gVGhpcyB3aWxsIGJlIGFuIGVycm9yIGluIHRoZSBmdXR1cmUuIikpfWlmKCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VzfHwhc2VzLm9rfHxzZXMub2soKSl7InVuZGVmaW5lZCIhPXR5cGVvZiBzZXMmJihzZXMud2Vha01hcFBlcm1pdEhvc3RPYmplY3RzPXQpO3ZhciBhPSExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBXZWFrTWFwKXt2YXIgcz1XZWFrTWFwO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYvRmlyZWZveC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSk7ZWxzZXt2YXIgbD1uZXcgcyxjPU9iamVjdC5mcmVlemUoe30pO2lmKGwuc2V0KGMsMSksMT09PWwuZ2V0KGMpKXJldHVybiB2b2lkKGUuZXhwb3J0cz1XZWFrTWFwKTthPSEwfX12YXIgdT0oT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyksaD1PYmplY3QuZGVmaW5lUHJvcGVydHksZj1PYmplY3QuaXNFeHRlbnNpYmxlLGQ9IndlYWttYXA6IixwPWQrImlkZW50OiIrTWF0aC5yYW5kb20oKSsiX19fIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byYmImZ1bmN0aW9uIj09dHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMmJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkpe3ZhciBnPW5ldyBBcnJheUJ1ZmZlcigyNSksdj1uZXcgVWludDhBcnJheShnKTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHYpLHA9ZCsicmFuZDoiK0FycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh2LGZ1bmN0aW9uKHQpe3JldHVybih0JTM2KS50b1N0cmluZygzNil9KS5qb2luKCIiKSsiX19fIn1pZihoKE9iamVjdCwiZ2V0T3duUHJvcGVydHlOYW1lcyIse3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1KHQpLmZpbHRlcihyKX19KSwiZ2V0UHJvcGVydHlOYW1lcyJpbiBPYmplY3Qpe3ZhciBtPU9iamVjdC5nZXRQcm9wZXJ0eU5hbWVzO2goT2JqZWN0LCJnZXRQcm9wZXJ0eU5hbWVzIix7dmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkuZmlsdGVyKHIpfX0pfSFmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5mcmVlemU7aChPYmplY3QsImZyZWV6ZSIse3ZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuKGUpLHQoZSl9fSk7dmFyIGU9T2JqZWN0LnNlYWw7aChPYmplY3QsInNlYWwiLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbih0KSxlKHQpfX0pO3ZhciByPU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztoKE9iamVjdCwicHJldmVudEV4dGVuc2lvbnMiLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbih0KSxyKHQpfX0pfSgpO3ZhciB5PSExLGI9MCx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciByLGk9bih0KTtyZXR1cm4gaT9jIGluIGk/aVtjXTplOihyPXMuaW5kZXhPZih0KSxyPj0wP2xbcl06ZSl9ZnVuY3Rpb24gZSh0KXt2YXIgZT1uKHQpO3JldHVybiBlP2MgaW4gZTpzLmluZGV4T2YodCk+PTB9ZnVuY3Rpb24gcih0LGUpe3ZhciByLGk9bih0KTtyZXR1cm4gaT9pW2NdPWU6KHI9cy5pbmRleE9mKHQpLHI+PTA/bFtyXT1lOihyPXMubGVuZ3RoLGxbcl09ZSxzW3JdPXQpKSx0aGlzfWZ1bmN0aW9uIGEodCl7dmFyIGUscixpPW4odCk7cmV0dXJuIGk/YyBpbiBpJiZkZWxldGUgaVtjXTooZT1zLmluZGV4T2YodCksMD5lPyExOihyPXMubGVuZ3RoLTEsc1tlXT12b2lkIDAsbFtlXT1sW3JdLHNbZV09c1tyXSxzLmxlbmd0aD1yLGwubGVuZ3RoPXIsITApKX10aGlzIGluc3RhbmNlb2YgeHx8bygpO3ZhciBzPVtdLGw9W10sYz1iKys7cmV0dXJuIE9iamVjdC5jcmVhdGUoeC5wcm90b3R5cGUse2dldF9fXzp7dmFsdWU6aSh0KX0saGFzX19fOnt2YWx1ZTppKGUpfSxzZXRfX186e3ZhbHVlOmkocil9LGRlbGV0ZV9fXzp7dmFsdWU6aShhKX19KX07eC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShPYmplY3QucHJvdG90eXBlLHtnZXQ6e3ZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0X19fKHQsZSl9LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0saGFzOnt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNfX18odCl9LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc2V0Ont2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNldF9fXyh0LGUpfSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9LCJkZWxldGUiOnt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxldGVfX18odCl9LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSwiZnVuY3Rpb24iPT10eXBlb2Ygcz8hZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7ZnVuY3Rpb24gZSh0LGUpe3JldHVybiB1P2MuaGFzKHQpP2MuZ2V0KHQpOnUuZ2V0X19fKHQsZSk6Yy5nZXQodCxlKX1mdW5jdGlvbiByKHQpe3JldHVybiBjLmhhcyh0KXx8KHU/dS5oYXNfX18odCk6ITEpfWZ1bmN0aW9uIG4odCl7dmFyIGU9ISFjLmRlbGV0ZSh0KTtyZXR1cm4gdT91LmRlbGV0ZV9fXyh0KXx8ZTplfXRoaXMgaW5zdGFuY2VvZiB4fHxvKCk7dmFyIGwsYz1uZXcgcyx1PXZvaWQgMCxoPSExO3JldHVybiBsPWE/ZnVuY3Rpb24odCxlKXtyZXR1cm4gYy5zZXQodCxlKSxjLmhhcyh0KXx8KHV8fCh1PW5ldyB4KSx1LnNldCh0LGUpKSx0aGlzfTpmdW5jdGlvbih0LGUpe2lmKGgpdHJ5e2Muc2V0KHQsZSl9Y2F0Y2gocil7dXx8KHU9bmV3IHgpLHUuc2V0X19fKHQsZSl9ZWxzZSBjLnNldCh0LGUpO3JldHVybiB0aGlzfSxPYmplY3QuY3JlYXRlKHgucHJvdG90eXBlLHtnZXRfX186e3ZhbHVlOmkoZSl9LGhhc19fXzp7dmFsdWU6aShyKX0sc2V0X19fOnt2YWx1ZTppKGwpfSxkZWxldGVfX186e3ZhbHVlOmkobil9LHBlcm1pdEhvc3RPYmplY3RzX19fOnt2YWx1ZTppKGZ1bmN0aW9uKGUpe2lmKGUhPT10KXRocm93IG5ldyBFcnJvcigiYm9ndXMgY2FsbCB0byBwZXJtaXRIb3N0T2JqZWN0c19fXyIpO2g9ITB9KX19KX1hJiYidW5kZWZpbmVkIiE9dHlwZW9mIFByb3h5JiYoUHJveHk9dm9pZCAwKSxyLnByb3RvdHlwZT14LnByb3RvdHlwZSxlLmV4cG9ydHM9cixPYmplY3QuZGVmaW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsImNvbnN0cnVjdG9yIix7dmFsdWU6V2Vha01hcCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfSgpOigidW5kZWZpbmVkIiE9dHlwZW9mIFByb3h5JiYoUHJveHk9dm9pZCAwKSxlLmV4cG9ydHM9eCl9fSgpfSx7fV0sMTI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9cy5nZXQodCk7aWYoIWV8fCF0LmlzQnVmZmVyKGUuX3RyaWFuZ2xlQnVmZmVyLmJ1ZmZlcikpe3ZhciByPW8odCxuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwtMSw0LDQsLTFdKSk7ZT1hKHQsW3tidWZmZXI6cix0eXBlOnQuRkxPQVQsc2l6ZToyfV0pLGUuX3RyaWFuZ2xlQnVmZmVyPXIscy5zZXQodCxlKX1lLmJpbmQoKSx0LmRyYXdBcnJheXModC5UUklBTkdMRVMsMCwzKSxlLnVuYmluZCgpfXZhciBpPSJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD90KCJ3ZWFrLW1hcCIpOldlYWtNYXAsbz10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLHM9bmV3IGk7ZS5leHBvcnRzPW59LHsiZ2wtYnVmZmVyIjo3NSwiZ2wtdmFvIjoxODQsIndlYWstbWFwIjoxMjV9XSwxMjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0fWZ1bmN0aW9uIGkodCl7dGhpcy5nbD10LHRoaXMucGl4ZWxSYXRpbz0xLHRoaXMuYm91bmRzPVtbLTEwLC0xMCwtMTBdLFsxMCwxMCwxMF1dLHRoaXMudGlja3M9W1tdLFtdLFtdXSx0aGlzLmF1dG9UaWNrcz0hMCx0aGlzLnRpY2tTcGFjaW5nPVsxLDEsMV0sdGhpcy50aWNrRW5hYmxlPVshMCwhMCwhMF0sdGhpcy50aWNrRm9udD1bInNhbnMtc2VyaWYiLCJzYW5zLXNlcmlmIiwic2Fucy1zZXJpZiJdLHRoaXMudGlja1NpemU9WzEyLDEyLDEyXSx0aGlzLnRpY2tBbmdsZT1bMCwwLDBdLHRoaXMudGlja0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aWNrUGFkPVsxMCwxMCwxMF0sdGhpcy5sYXN0Q3ViZVByb3BzPXtjdWJlRWRnZXM6WzAsMCwwXSxheGlzOlswLDAsMF19LHRoaXMubGFiZWxzPVsieCIsInkiLCJ6Il0sdGhpcy5sYWJlbEVuYWJsZT1bITAsITAsITBdLHRoaXMubGFiZWxGb250PSJzYW5zLXNlcmlmIix0aGlzLmxhYmVsU2l6ZT1bMjAsMjAsMjBdLHRoaXMubGFiZWxBbmdsZT1bMCwwLDBdLHRoaXMubGFiZWxDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMubGFiZWxQYWQ9WzEwLDEwLDEwXSx0aGlzLmxpbmVFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmxpbmVNaXJyb3I9WyExLCExLCExXSx0aGlzLmxpbmVXaWR0aD1bMSwxLDFdLHRoaXMubGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5saW5lVGlja0VuYWJsZT1bITAsITAsITBdLHRoaXMubGluZVRpY2tNaXJyb3I9WyExLCExLCExXSx0aGlzLmxpbmVUaWNrTGVuZ3RoPVswLDAsMF0sdGhpcy5saW5lVGlja1dpZHRoPVsxLDEsMV0sdGhpcy5saW5lVGlja0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5ncmlkRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5ncmlkV2lkdGg9WzEsMSwxXSx0aGlzLmdyaWRDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuemVyb0VuYWJsZT1bITAsITAsITBdLHRoaXMuemVyb0xpbmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuemVyb0xpbmVXaWR0aD1bMiwyLDJdLHRoaXMuYmFja2dyb3VuZEVuYWJsZT1bITEsITEsITFdLHRoaXMuYmFja2dyb3VuZENvbG9yPVtbLjgsLjgsLjgsLjVdLFsuOCwuOCwuOCwuNV0sWy44LC44LC44LC41XV0sdGhpcy5fZmlyc3RJbml0PSEwLHRoaXMuX3RleHQ9bnVsbCx0aGlzLl9saW5lcz1udWxsLHRoaXMuX2JhY2tncm91bmQ9dSh0KX1mdW5jdGlvbiBvKCl7dGhpcy5wcmltYWxPZmZzZXQ9WzAsMCwwXSx0aGlzLnByaW1hbE1pbm9yPVswLDAsMF0sdGhpcy5taXJyb3JPZmZzZXQ9WzAsMCwwXSx0aGlzLm1pcnJvck1pbm9yPVswLDAsMF19ZnVuY3Rpb24gYSh0LGUscixuLGkpe2Zvcih2YXIgbz10LnByaW1hbE9mZnNldCxhPXQucHJpbWFsTWlub3Iscz10Lm1pcnJvck9mZnNldCxsPXQubWlycm9yTWlub3IsYz1uW2VdLHU9MDszPnU7Kyt1KWlmKGUhPT11KXt2YXIgaD1vLGY9cyxkPWEscD1sO2MmMTw8dSYmKGg9cyxmPW8sZD1sLHA9YSksaFt1XT1yWzBdW3VdLGZbdV09clsxXVt1XSxpW3VdPjA/KGRbdV09LTEscFt1XT0wKTooZFt1XT0wLHBbdV09MSl9fWZ1bmN0aW9uIHModCxlKXt2YXIgcj1uZXcgaSh0KTtyZXR1cm4gci51cGRhdGUoZSkscn1lLmV4cG9ydHM9czt2YXIgbD10KCIuL2xpYi90ZXh0LmpzIiksYz10KCIuL2xpYi9saW5lcy5qcyIpLHU9dCgiLi9saWIvYmFja2dyb3VuZC5qcyIpLGg9dCgiLi9saWIvY3ViZS5qcyIpLGY9dCgiLi9saWIvdGlja3MuanMiKSxkPW5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdKSxwPWkucHJvdG90eXBlO3AudXBkYXRlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLG4pe2lmKG4gaW4gdCl7dmFyIGksbz10W25dLGE9dGhpc1tuXTsoZT9BcnJheS5pc0FycmF5KG8pJiZBcnJheS5pc0FycmF5KG9bMF0pOkFycmF5LmlzQXJyYXkobykpP3RoaXNbbl09aT1bcihvWzBdKSxyKG9bMV0pLHIob1syXSldOnRoaXNbbl09aT1bcihvKSxyKG8pLHIobyldO2Zvcih2YXIgcz0wOzM+czsrK3MpaWYoaVtzXSE9PWFbc10pcmV0dXJuITB9cmV0dXJuITF9dD10fHx7fTt2YXIgcixuPWUuYmluZCh0aGlzLCExLE51bWJlciksaT1lLmJpbmQodGhpcywhMSxCb29sZWFuKSxvPWUuYmluZCh0aGlzLCExLFN0cmluZyksYT1lLmJpbmQodGhpcywhMCxmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZigzPT09dC5sZW5ndGgpcmV0dXJuWyt0WzBdLCt0WzFdLCt0WzJdLDFdO2lmKDQ9PT10Lmxlbmd0aClyZXR1cm5bK3RbMF0sK3RbMV0sK3RbMl0sK3RbM11dfXJldHVyblswLDAsMCwxXX0pLHM9ITEsdT0hMTtpZigiYm91bmRzImluIHQpZm9yKHZhciBoPXQuYm91bmRzLGQ9MDsyPmQ7KytkKWZvcih2YXIgcD0wOzM+cDsrK3ApaFtkXVtwXSE9PXRoaXMuYm91bmRzW2RdW3BdJiYodT0hMCksdGhpcy5ib3VuZHNbZF1bcF09aFtkXVtwXTtpZigidGlja3MiaW4gdCl7cj10LnRpY2tzLHM9ITAsdGhpcy5hdXRvVGlja3M9ITE7Zm9yKHZhciBkPTA7Mz5kOysrZCl0aGlzLnRpY2tTcGFjaW5nW2RdPTB9ZWxzZSBuKCJ0aWNrU3BhY2luZyIpJiYodGhpcy5hdXRvVGlja3M9ITAsdT0hMCk7aWYodGhpcy5fZmlyc3RJbml0JiYoInRpY2tzImluIHR8fCJ0aWNrU3BhY2luZyJpbiB0fHwodGhpcy5hdXRvVGlja3M9ITApLHU9ITAscz0hMCx0aGlzLl9maXJzdEluaXQ9ITEpLHUmJnRoaXMuYXV0b1RpY2tzJiYocj1mLmNyZWF0ZSh0aGlzLmJvdW5kcyx0aGlzLnRpY2tTcGFjaW5nKSxzPSEwKSxzKXtmb3IodmFyIGQ9MDszPmQ7KytkKXJbZF0uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LngtZS54fSk7Zi5lcXVhbChyLHRoaXMudGlja3MpP3M9ITE6dGhpcy50aWNrcz1yfWkoInRpY2tFbmFibGUiKSxvKCJ0aWNrRm9udCIpJiYocz0hMCksbigidGlja1NpemUiKSxuKCJ0aWNrQW5nbGUiKSxuKCJ0aWNrUGFkIiksYSgidGlja0NvbG9yIik7dmFyIGc9bygibGFiZWxzIik7bygibGFiZWxGb250IikmJihnPSEwKSxpKCJsYWJlbEVuYWJsZSIpLG4oImxhYmVsU2l6ZSIpLG4oImxhYmVsUGFkIiksYSgibGFiZWxDb2xvciIpLGkoImxpbmVFbmFibGUiKSxpKCJsaW5lTWlycm9yIiksbigibGluZVdpZHRoIiksYSgibGluZUNvbG9yIiksaSgibGluZVRpY2tFbmFibGUiKSxpKCJsaW5lVGlja01pcnJvciIpLG4oImxpbmVUaWNrTGVuZ3RoIiksbigibGluZVRpY2tXaWR0aCIpLGEoImxpbmVUaWNrQ29sb3IiKSxpKCJncmlkRW5hYmxlIiksbigiZ3JpZFdpZHRoIiksYSgiZ3JpZENvbG9yIiksaSgiemVyb0VuYWJsZSIpLGEoInplcm9MaW5lQ29sb3IiKSxuKCJ6ZXJvTGluZVdpZHRoIiksaSgiYmFja2dyb3VuZEVuYWJsZSIpLGEoImJhY2tncm91bmRDb2xvciIpLHRoaXMuX3RleHQ/dGhpcy5fdGV4dCYmKGd8fHMpJiZ0aGlzLl90ZXh0LnVwZGF0ZSh0aGlzLmJvdW5kcyx0aGlzLmxhYmVscyx0aGlzLmxhYmVsRm9udCx0aGlzLnRpY2tzLHRoaXMudGlja0ZvbnQpOnRoaXMuX3RleHQ9bCh0aGlzLmdsLHRoaXMuYm91bmRzLHRoaXMubGFiZWxzLHRoaXMubGFiZWxGb250LHRoaXMudGlja3MsdGhpcy50aWNrRm9udCksdGhpcy5fbGluZXMmJnMmJih0aGlzLl9saW5lcy5kaXNwb3NlKCksdGhpcy5fbGluZXM9bnVsbCksdGhpcy5fbGluZXN8fCh0aGlzLl9saW5lcz1jKHRoaXMuZ2wsdGhpcy5ib3VuZHMsdGhpcy50aWNrcykpfTt2YXIgZz1bbmV3IG8sbmV3IG8sbmV3IG9dLHY9WzAsMCwwXSxtPXttb2RlbDpkLHZpZXc6ZCxwcm9qZWN0aW9uOmR9O3AuaXNPcGFxdWU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0scC5pc1RyYW5zcGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuITF9LHAuZHJhd1RyYW5zcGFyZW50PWZ1bmN0aW9uKHQpe307dmFyIHk9WzAsMCwwXSxiPVswLDAsMF0seD1bMCwwLDBdO3AuZHJhdz1mdW5jdGlvbih0KXt0PXR8fG07Zm9yKHZhciBlPXRoaXMuZ2wscj10Lm1vZGVsfHxkLGk9dC52aWV3fHxkLG89dC5wcm9qZWN0aW9ufHxkLHM9dGhpcy5ib3VuZHMsbD1oKHIsaSxvLHMpLGM9bC5jdWJlRWRnZXMsdT1sLmF4aXMsZj1pWzEyXSxwPWlbMTNdLF89aVsxNF0sdz1pWzE1XSxBPXRoaXMucGl4ZWxSYXRpbyoob1szXSpmK29bN10qcCtvWzExXSpfK29bMTVdKncpL2UuZHJhd2luZ0J1ZmZlckhlaWdodCxrPTA7Mz5rOysrayl0aGlzLmxhc3RDdWJlUHJvcHMuY3ViZUVkZ2VzW2tdPWNba10sdGhpcy5sYXN0Q3ViZVByb3BzLmF4aXNba109dVtrXTtmb3IodmFyIE09ZyxrPTA7Mz5rOysraylhKGdba10sayx0aGlzLmJvdW5kcyxjLHUpO2Zvcih2YXIgZT10aGlzLmdsLFQ9dixrPTA7Mz5rOysrayl0aGlzLmJhY2tncm91bmRFbmFibGVba10/VFtrXT11W2tdOlRba109MDt0aGlzLl9iYWNrZ3JvdW5kLmRyYXcocixpLG8scyxULHRoaXMuYmFja2dyb3VuZENvbG9yKSx0aGlzLl9saW5lcy5iaW5kKHIsaSxvLHRoaXMpO2Zvcih2YXIgaz0wOzM+azsrK2spe3ZhciBFPVswLDAsMF07dVtrXT4wP0Vba109c1sxXVtrXTpFW2tdPXNbMF1ba107Zm9yKHZhciBMPTA7Mj5MOysrTCl7dmFyIFM9KGsrMStMKSUzLEM9KGsrMSsoMV5MKSklMzt0aGlzLmdyaWRFbmFibGVbU10mJnRoaXMuX2xpbmVzLmRyYXdHcmlkKFMsQyx0aGlzLmJvdW5kcyxFLHRoaXMuZ3JpZENvbG9yW1NdLHRoaXMuZ3JpZFdpZHRoW1NdKnRoaXMucGl4ZWxSYXRpbyl9Zm9yKHZhciBMPTA7Mj5MOysrTCl7dmFyIFM9KGsrMStMKSUzLEM9KGsrMSsoMV5MKSklMzt0aGlzLnplcm9FbmFibGVbQ10mJnNbMF1bQ108PTAmJnNbMV1bQ10+PTAmJnRoaXMuX2xpbmVzLmRyYXdaZXJvKFMsQyx0aGlzLmJvdW5kcyxFLHRoaXMuemVyb0xpbmVDb2xvcltDXSx0aGlzLnplcm9MaW5lV2lkdGhbQ10qdGhpcy5waXhlbFJhdGlvKX19Zm9yKHZhciBrPTA7Mz5rOysrayl7dGhpcy5saW5lRW5hYmxlW2tdJiZ0aGlzLl9saW5lcy5kcmF3QXhpc0xpbmUoayx0aGlzLmJvdW5kcyxNW2tdLnByaW1hbE9mZnNldCx0aGlzLmxpbmVDb2xvcltrXSx0aGlzLmxpbmVXaWR0aFtrXSp0aGlzLnBpeGVsUmF0aW8pLHRoaXMubGluZU1pcnJvcltrXSYmdGhpcy5fbGluZXMuZHJhd0F4aXNMaW5lKGssdGhpcy5ib3VuZHMsTVtrXS5taXJyb3JPZmZzZXQsdGhpcy5saW5lQ29sb3Jba10sdGhpcy5saW5lV2lkdGhba10qdGhpcy5waXhlbFJhdGlvKTtmb3IodmFyIFA9bih5LE1ba10ucHJpbWFsTWlub3IpLHo9bihiLE1ba10ubWlycm9yTWlub3IpLFI9dGhpcy5saW5lVGlja0xlbmd0aCxMPTA7Mz5MOysrTCl7dmFyIE89QS9yWzUqTF07UFtMXSo9UltMXSpPLHpbTF0qPVJbTF0qT310aGlzLmxpbmVUaWNrRW5hYmxlW2tdJiZ0aGlzLl9saW5lcy5kcmF3QXhpc1RpY2tzKGssTVtrXS5wcmltYWxPZmZzZXQsUCx0aGlzLmxpbmVUaWNrQ29sb3Jba10sdGhpcy5saW5lVGlja1dpZHRoW2tdKnRoaXMucGl4ZWxSYXRpbyksdGhpcy5saW5lVGlja01pcnJvcltrXSYmdGhpcy5fbGluZXMuZHJhd0F4aXNUaWNrcyhrLE1ba10ubWlycm9yT2Zmc2V0LHosdGhpcy5saW5lVGlja0NvbG9yW2tdLHRoaXMubGluZVRpY2tXaWR0aFtrXSp0aGlzLnBpeGVsUmF0aW8pfXRoaXMuX3RleHQuYmluZChyLGksbyx0aGlzLnBpeGVsUmF0aW8pO2Zvcih2YXIgaz0wOzM+azsrK2spe2Zvcih2YXIgST1NW2tdLnByaW1hbE1pbm9yLE49bih4LE1ba10ucHJpbWFsT2Zmc2V0KSxMPTA7Mz5MOysrTCl0aGlzLmxpbmVUaWNrRW5hYmxlW2tdJiYoTltMXSs9QSpJW0xdKk1hdGgubWF4KHRoaXMubGluZVRpY2tMZW5ndGhbTF0sMCkvcls1KkxdKTtpZih0aGlzLnRpY2tFbmFibGVba10pe2Zvcih2YXIgTD0wOzM+TDsrK0wpTltMXSs9QSpJW0xdKnRoaXMudGlja1BhZFtMXS9yWzUqTF07dGhpcy5fdGV4dC5kcmF3VGlja3Moayx0aGlzLnRpY2tTaXplW2tdLHRoaXMudGlja0FuZ2xlW2tdLE4sdGhpcy50aWNrQ29sb3Jba10pfWlmKHRoaXMubGFiZWxFbmFibGVba10pe2Zvcih2YXIgTD0wOzM+TDsrK0wpTltMXSs9QSpJW0xdKnRoaXMubGFiZWxQYWRbTF0vcls1KkxdO05ba10rPS41KihzWzBdW2tdK3NbMV1ba10pLHRoaXMuX3RleHQuZHJhd0xhYmVsKGssdGhpcy5sYWJlbFNpemVba10sdGhpcy5sYWJlbEFuZ2xlW2tdLE4sdGhpcy5sYWJlbENvbG9yW2tdKX19fSxwLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl90ZXh0LmRpc3Bvc2UoKSx0aGlzLl9saW5lcy5kaXNwb3NlKCksdGhpcy5fYmFja2dyb3VuZC5kaXNwb3NlKCksdGhpcy5fbGluZXM9bnVsbCx0aGlzLl90ZXh0PW51bGwsdGhpcy5fYmFja2dyb3VuZD1udWxsLHRoaXMuZ2w9bnVsbH19LHsiLi9saWIvYmFja2dyb3VuZC5qcyI6MTI4LCIuL2xpYi9jdWJlLmpzIjoxMjksIi4vbGliL2xpbmVzLmpzIjoxMzAsIi4vbGliL3RleHQuanMiOjEzMiwiLi9saWIvdGlja3MuanMiOjEzM31dLDEyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4pe3RoaXMuZ2w9dCx0aGlzLmJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5zaGFkZXI9bn1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1bXSxyPVtdLGk9MCxsPTA7Mz5sOysrbClmb3IodmFyIGM9KGwrMSklMyx1PShsKzIpJTMsaD1bMCwwLDBdLGY9WzAsMCwwXSxkPS0xOzE+PWQ7ZCs9Mil7ci5wdXNoKGksaSsyLGkrMSxpKzEsaSsyLGkrMyksaFtsXT1kLGZbbF09ZDtmb3IodmFyIHA9LTE7MT49cDtwKz0yKXtoW2NdPXA7Zm9yKHZhciBnPS0xOzE+PWc7Zys9MiloW3VdPWcsZS5wdXNoKGhbMF0saFsxXSxoWzJdLGZbMF0sZlsxXSxmWzJdKSxpKz0xfXZhciB2PWM7Yz11LHU9dn12YXIgbT1vKHQsbmV3IEZsb2F0MzJBcnJheShlKSkseT1vKHQsbmV3IFVpbnQxNkFycmF5KHIpLHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIpLGI9YSh0LFt7YnVmZmVyOm0sdHlwZTp0LkZMT0FULHNpemU6MyxvZmZzZXQ6MCxzdHJpZGU6MjR9LHtidWZmZXI6bSx0eXBlOnQuRkxPQVQsc2l6ZTozLG9mZnNldDoxMixzdHJpZGU6MjR9XSx5KSx4PXModCk7cmV0dXJuIHguYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLHguYXR0cmlidXRlcy5ub3JtYWwubG9jYXRpb249MSxuZXcgbih0LG0sYix4KX1lLmV4cG9ydHM9aTt2YXIgbz10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLHM9dCgiLi9zaGFkZXJzIikuYmcsbD1uLnByb3RvdHlwZTtsLmRyYXc9ZnVuY3Rpb24odCxlLHIsbixpLG8pe2Zvcih2YXIgYT0hMSxzPTA7Mz5zOysrcylhPWF8fGlbc107aWYoYSl7dmFyIGw9dGhpcy5nbDtsLmVuYWJsZShsLlBPTFlHT05fT0ZGU0VUX0ZJTEwpLGwucG9seWdvbk9mZnNldCgxLDIpLHRoaXMuc2hhZGVyLmJpbmQoKSx0aGlzLnNoYWRlci51bmlmb3Jtcz17bW9kZWw6dCx2aWV3OmUscHJvamVjdGlvbjpyLGJvdW5kczpuLGVuYWJsZTppLGNvbG9yczpvfSx0aGlzLnZhby5iaW5kKCksdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUywzNiksbC5kaXNhYmxlKGwuUE9MWUdPTl9PRkZTRVRfRklMTCl9fSxsLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzIjoxMzEsImdsLWJ1ZmZlciI6NzUsImdsLXZhbyI6MTg0fV0sMTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe2Zvcih2YXIgbj0wOzQ+bjsrK24pe3Rbbl09clsxMituXTtmb3IodmFyIGk9MDszPmk7KytpKXRbbl0rPWVbaV0qcls0Kmkrbl19fWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBlPTA7ZTxnLmxlbmd0aDsrK2UpaWYodD1sLnBvc2l0aXZlKHQsZ1tlXSksdC5sZW5ndGg8MylyZXR1cm4gMDtmb3IodmFyIHI9dFswXSxuPXJbMF0vclszXSxpPXJbMV0vclszXSxvPTAsZT0xO2UrMTx0Lmxlbmd0aDsrK2Upe3ZhciBhPXRbZV0scz10W2UrMV0sYz1hWzBdL2FbM10sdT1hWzFdL2FbM10saD1zWzBdL3NbM10sZj1zWzFdL3NbM10sZD1jLW4scD11LWksdj1oLW4sbT1mLWk7bys9TWF0aC5hYnMoZCptLXAqdil9cmV0dXJuIG99ZnVuY3Rpb24gbyh0LGUscixvKXtzKHUsZSx0KSxzKHUscix1KTtmb3IodmFyIGw9MCxnPTA7Mj5nOysrZyl7ZFsyXT1vW2ddWzJdO2Zvcih2YXIgYj0wOzI+YjsrK2Ipe2RbMV09b1tiXVsxXTtmb3IodmFyIHg9MDsyPng7Kyt4KWRbMF09b1t4XVswXSxuKGhbbF0sZCx1KSxsKz0xfX1mb3IodmFyIF89LTEsZz0wOzg+ZzsrK2cpe2Zvcih2YXIgdz1oW2ddWzNdLEE9MDszPkE7KytBKWZbZ11bQV09aFtnXVtBXS93OzA+dyYmKDA+Xz9fPWc6ZltnXVsyXTxmW19dWzJdJiYoXz1nKSl9aWYoMD5fKXtfPTA7Zm9yKHZhciBrPTA7Mz5rOysrayl7Zm9yKHZhciBNPShrKzIpJTMsVD0oaysxKSUzLEU9LTEsTD0tMSxTPTA7Mj5TOysrUyl7dmFyIEM9Uzw8ayxQPUMrKFM8PE0pKygxLVM8PFQpLHo9QysoMS1TPDxNKSsoUzw8VCk7YyhmW0NdLGZbUF0sZlt6XSxwKTwwfHwoUz9FPTE6TD0xKX1pZigwPkV8fDA+TClMPkUmJihffD0xPDxrKTtlbHNle2Zvcih2YXIgUz0wOzI+UzsrK1Mpe3ZhciBDPVM8PGssUD1DKyhTPDxNKSsoMS1TPDxUKSx6PUMrKDEtUzw8TSkrKFM8PFQpLFI9aShbaFtDXSxoW1BdLGhbel0saFtDKygxPDxNKSsoMTw8VCldXSk7Uz9FPVI6TD1SfUw+RSYmKF98PTE8PGspfX19Zm9yKHZhciBPPTdeXyxJPS0xLGc9MDs4Pmc7KytnKWchPT1fJiZnIT09TyYmKDA+ST9JPWc6ZltJXVsxXT5mW2ddWzFdJiYoST1nKSk7Zm9yKHZhciBOPS0xLGc9MDszPmc7KytnKXt2YXIgaj1JXjE8PGc7aWYoaiE9PV8mJmohPT1PKXswPk4mJihOPWopO3ZhciBUPWZbal07VFswXTxmW05dWzBdJiYoTj1qKX19Zm9yKHZhciBGPS0xLGc9MDszPmc7KytnKXt2YXIgaj1JXjE8PGc7aWYoaiE9PV8mJmohPT1PJiZqIT09Til7MD5GJiYoRj1qKTt2YXIgVD1mW2pdO1RbMF0+ZltGXVswXSYmKEY9ail9fXZhciBEPXY7RFswXT1EWzFdPURbMl09MCxEW2EubG9nMihOXkkpXT1JJk4sRFthLmxvZzIoSV5GKV09SSZGO3ZhciBCPTdeRjtCPT09X3x8Qj09PU8/KEI9N15OLERbYS5sb2cyKEZeQildPUImRik6RFthLmxvZzIoTl5CKV09QiZOO2Zvcih2YXIgVT1tLFY9XyxrPTA7Mz5rOysraylWJjE8PGs/VVtrXT0tMTpVW2tdPTE7cmV0dXJuIHl9ZS5leHBvcnRzPW87dmFyIGE9dCgiYml0LXR3aWRkbGUiKSxzPXQoImdsLW1hdDQvbXVsdGlwbHkiKSxsPSh0KCJnbC1tYXQ0L2ludmVydCIpLHQoInNwbGl0LXBvbHlnb24iKSksYz10KCJyb2J1c3Qtb3JpZW50YXRpb24iKSx1PW5ldyBBcnJheSgxNiksaD0obmV3IEFycmF5KDE2KSxuZXcgQXJyYXkoOCkpLGY9bmV3IEFycmF5KDgpLGQ9bmV3IEFycmF5KDMpLHA9WzAsMCwwXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDs4PnQ7Kyt0KWhbdF09WzEsMSwxLDFdLGZbdF09WzEsMSwxXX0oKTt2YXIgZz1bWzAsMCwxLDAsMF0sWzAsMCwtMSwxLDBdLFswLC0xLDAsMSwwXSxbMCwxLDAsMSwwXSxbLTEsMCwwLDEsMF0sWzEsMCwwLDEsMF1dLHY9WzEsMSwxXSxtPVswLDAsMF0seT17Y3ViZUVkZ2VzOnYsYXhpczptfX0seyJiaXQtdHdpZGRsZSI6NDksImdsLW1hdDQvaW52ZXJ0Ijo5NCwiZ2wtbWF0NC9tdWx0aXBseSI6OTYsInJvYnVzdC1vcmllbnRhdGlvbiI6MjE2LCJzcGxpdC1wb2x5Z29uIjoxMzV9XSwxMzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdFswXT10WzFdPXRbMl09MCx0fWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0sdH1mdW5jdGlvbiBvKHQsZSxyLG4saSxvLGEscyl7dGhpcy5nbD10LHRoaXMudmVydEJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5zaGFkZXI9bix0aGlzLnRpY2tDb3VudD1pLHRoaXMudGlja09mZnNldD1vLHRoaXMuZ3JpZENvdW50PWEsdGhpcy5ncmlkT2Zmc2V0PXN9ZnVuY3Rpb24gYSh0LGUscil7dmFyIG49W10saT1bMCwwLDBdLGE9WzAsMCwwXSx1PVswLDAsMF0saD1bMCwwLDBdO24ucHVzaCgwLDAsMSwwLDEsMSwwLDAsLTEsMCwwLC0xLDAsMSwxLDAsMSwtMSk7Zm9yKHZhciBmPTA7Mz5mOysrZil7Zm9yKHZhciBkPW4ubGVuZ3RoLzN8MCxwPTA7cDxyW2ZdLmxlbmd0aDsrK3Ape3ZhciBnPStyW2ZdW3BdLng7bi5wdXNoKGcsMCwxLGcsMSwxLGcsMCwtMSxnLDAsLTEsZywxLDEsZywxLC0xKX12YXIgdj1uLmxlbmd0aC8zfDA7aVtmXT1kLGFbZl09di1kO2Zvcih2YXIgZD1uLmxlbmd0aC8zfDAsbT0wO208cltmXS5sZW5ndGg7KyttKXt2YXIgZz0rcltmXVttXS54O24ucHVzaChnLDAsMSxnLDEsMSxnLDAsLTEsZywwLC0xLGcsMSwxLGcsMSwtMSl9dmFyIHY9bi5sZW5ndGgvM3wwO3VbZl09ZCxoW2ZdPXYtZH12YXIgeT1zKHQsbmV3IEZsb2F0MzJBcnJheShuKSksYj1sKHQsW3tidWZmZXI6eSx0eXBlOnQuRkxPQVQsc2l6ZTozLHN0cmlkZTowLG9mZnNldDowfV0pLHg9Yyh0KTtyZXR1cm4geC5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsbmV3IG8odCx5LGIseCxhLGksaCx1KX1lLmV4cG9ydHM9YTt2YXIgcz10KCJnbC1idWZmZXIiKSxsPXQoImdsLXZhbyIpLGM9dCgiLi9zaGFkZXJzIikubGluZSx1PVswLDAsMF0saD1bMCwwLDBdLGY9WzAsMCwwXSxkPVswLDAsMF0scD1bMSwxXSxnPW8ucHJvdG90eXBlO2cuYmluZD1mdW5jdGlvbih0LGUscil7dGhpcy5zaGFkZXIuYmluZCgpLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1vZGVsPXQsdGhpcy5zaGFkZXIudW5pZm9ybXMudmlldz1lLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnByb2plY3Rpb249cixwWzBdPXRoaXMuZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLHBbMV09dGhpcy5nbC5kcmF3aW5nQnVmZmVySGVpZ2h0LHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjcmVlblNoYXBlPXAsdGhpcy52YW8uYmluZCgpfSxnLmRyYXdBeGlzTGluZT1mdW5jdGlvbih0LGUscixvLGEpe3ZhciBzPW4oaCk7dGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPWgsc1t0XT1lWzFdW3RdLWVbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlzPXM7dmFyIGw9aShkLHIpO2xbdF0rPWVbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PWwsdGhpcy5zaGFkZXIudW5pZm9ybXMubGluZVdpZHRoPWEsdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9bzt2YXIgYz1uKGYpO2NbKHQrMiklM109MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPWMsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyw2KTt2YXIgYz1uKGYpO2NbKHQrMSklM109MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPWMsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyw2KX0sZy5kcmF3QXhpc1RpY2tzPWZ1bmN0aW9uKHQsZSxyLGksbyl7aWYodGhpcy50aWNrQ291bnRbdF0pe3ZhciBhPW4odSk7YVt0XT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1ham9yQXhpcz1hLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm9mZnNldD1lLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1pbm9yQXhpcz1yLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPWksdGhpcy5zaGFkZXIudW5pZm9ybXMubGluZVdpZHRoPW87dmFyIHM9bihmKTtzW3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVuQXhpcz1zLHRoaXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMsdGhpcy50aWNrQ291bnRbdF0sdGhpcy50aWNrT2Zmc2V0W3RdKX19LGcuZHJhd0dyaWQ9ZnVuY3Rpb24odCxlLHIsbyxhLHMpe2lmKHRoaXMuZ3JpZENvdW50W3RdKXt2YXIgbD1uKGgpO2xbZV09clsxXVtlXS1yWzBdW2VdLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1pbm9yQXhpcz1sO3ZhciBjPWkoZCxvKTtjW2VdKz1yWzBdW2VdLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm9mZnNldD1jO3ZhciBwPW4odSk7cFt0XT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1ham9yQXhpcz1wO3ZhciBnPW4oZik7Z1t0XT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjcmVlbkF4aXM9Zyx0aGlzLnNoYWRlci51bmlmb3Jtcy5saW5lV2lkdGg9cyx0aGlzLnNoYWRlci51bmlmb3Jtcy5jb2xvcj1hLHRoaXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMsdGhpcy5ncmlkQ291bnRbdF0sdGhpcy5ncmlkT2Zmc2V0W3RdKX19LGcuZHJhd1plcm89ZnVuY3Rpb24odCxlLHIsbyxhLHMpe3ZhciBsPW4oaCk7dGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPWwsbFt0XT1yWzFdW3RdLXJbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlzPWw7dmFyIGM9aShkLG8pO2NbdF0rPXJbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PWM7dmFyIHU9bihmKTt1W2VdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVuQXhpcz11LHRoaXMuc2hhZGVyLnVuaWZvcm1zLmxpbmVXaWR0aD1zLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPWEsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyw2KX0sZy5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52YW8uZGlzcG9zZSgpLHRoaXMudmVydEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjEzMSwiZ2wtYnVmZmVyIjo3NSwiZ2wtdmFvIjoxODR9XSwxMzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtc2hhZGVyIiksaT0iI2RlZmluZSBHTFNMSUZZIDFcbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzMgb2Zmc2V0LCBtYWpvckF4aXMsIG1pbm9yQXhpcywgc2NyZWVuQXhpcztcbnVuaWZvcm0gZmxvYXQgbGluZVdpZHRoO1xudW5pZm9ybSB2ZWMyIHNjcmVlblNoYXBlO1xuXG52ZWMzIHByb2plY3QodmVjMyBwKSB7XG4gIHZlYzQgcHAgPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwLCAxLjApO1xuICByZXR1cm4gcHAueHl6IC8gbWF4KHBwLncsIDAuMDAwMSk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBtYWpvciA9IHBvc2l0aW9uLnggKiBtYWpvckF4aXM7XG4gIHZlYzMgbWlub3IgPSBwb3NpdGlvbi55ICogbWlub3JBeGlzO1xuXG4gIHZlYzMgdlBvc2l0aW9uID0gbWFqb3IgKyBtaW5vciArIG9mZnNldDtcbiAgdmVjMyBwUG9zaXRpb24gPSBwcm9qZWN0KHZQb3NpdGlvbik7XG4gIHZlYzMgb2Zmc2V0ID0gcHJvamVjdCh2UG9zaXRpb24gKyBzY3JlZW5BeGlzICogcG9zaXRpb24ueik7XG5cbiAgdmVjMiBzY3JlZW4gPSBub3JtYWxpemUoKG9mZnNldCAtIHBQb3NpdGlvbikueHkgKiBzY3JlZW5TaGFwZSkgLyBzY3JlZW5TaGFwZTtcblxuICBnbF9Qb3NpdGlvbiA9IHZlYzQocFBvc2l0aW9uICsgdmVjMygwLjUgKiBzY3JlZW4gKiBsaW5lV2lkdGgsIDApLCAxLjApO1xufVxuIixvPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG51bmlmb3JtIHZlYzQgY29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xufSI7ci5saW5lPWZ1bmN0aW9uKHQpe3JldHVybiBuKHQsaSxvLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9XSl9O3ZhciBhPSIjZGVmaW5lIEdMU0xJRlkgMVxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBvZmZzZXQsIGF4aXM7XG51bmlmb3JtIGZsb2F0IHNjYWxlLCBhbmdsZSwgcGl4ZWxTY2FsZTtcbnVuaWZvcm0gdmVjMiByZXNvbHV0aW9uO1xuXG52b2lkIG1haW4oKSB7ICBcbiAgLy9Db21wdXRlIHBsYW5lIG9mZnNldFxuICB2ZWMyIHBsYW5lQ29vcmQgPSBwb3NpdGlvbi54eSAqIHBpeGVsU2NhbGU7XG4gIG1hdDIgcGxhbmVYZm9ybSA9IHNjYWxlICogbWF0Mihjb3MoYW5nbGUpLCBzaW4oYW5nbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtc2luKGFuZ2xlKSwgY29zKGFuZ2xlKSk7XG4gIHZlYzIgdmlld09mZnNldCA9IDIuMCAqIHBsYW5lWGZvcm0gKiBwbGFuZUNvb3JkIC8gcmVzb2x1dGlvbjtcblxuICAvL0NvbXB1dGUgd29ybGQgb2Zmc2V0XG4gIGZsb2F0IGF4aXNEaXN0YW5jZSA9IHBvc2l0aW9uLno7XG4gIHZlYzMgZGF0YVBvc2l0aW9uID0gYXhpc0Rpc3RhbmNlICogYXhpcyArIG9mZnNldDtcbiAgdmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KGRhdGFQb3NpdGlvbiwgMSk7XG4gIFxuICAvL0NvbXB1dGUgY2xpcCBwb3NpdGlvblxuICB2ZWM0IHZpZXdQb3NpdGlvbiA9IHZpZXcgKiB3b3JsZFBvc2l0aW9uO1xuICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3UG9zaXRpb247XG4gIGNsaXBQb3NpdGlvbiAvPSBjbGlwUG9zaXRpb24udztcblxuICAvL0FwcGx5IHRleHQgb2Zmc2V0IGluIGNsaXAgY29vcmRpbmF0ZXNcbiAgY2xpcFBvc2l0aW9uICs9IHZlYzQodmlld09mZnNldCwgMCwgMCk7XG5cbiAgLy9Eb25lXG4gIGdsX1Bvc2l0aW9uID0gY2xpcFBvc2l0aW9uO1xufSIscz0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxudW5pZm9ybSB2ZWM0IGNvbG9yO1xudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbn0iO3IudGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gbih0LGEscyxudWxsLFt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifV0pfTt2YXIgbD0iI2RlZmluZSBHTFNMSUZZIDFcbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzMgbm9ybWFsO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzMgZW5hYmxlO1xudW5pZm9ybSB2ZWMzIGJvdW5kc1syXTtcblxudmFyeWluZyB2ZWMzIGNvbG9yQ2hhbm5lbDtcblxudm9pZCBtYWluKCkge1xuICBpZihkb3Qobm9ybWFsLCBlbmFibGUpID4gMC4wKSB7XG4gICAgdmVjMyBuUG9zaXRpb24gPSBtaXgoYm91bmRzWzBdLCBib3VuZHNbMV0sIDAuNSAqIChwb3NpdGlvbiArIDEuMCkpO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQoblBvc2l0aW9uLCAxLjApO1xuICB9IGVsc2Uge1xuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwwKTtcbiAgfVxuICBjb2xvckNoYW5uZWwgPSBhYnMobm9ybWFsKTtcbn0iLGM9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yc1szXTtcblxudmFyeWluZyB2ZWMzIGNvbG9yQ2hhbm5lbDtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvckNoYW5uZWwueCAqIGNvbG9yc1swXSArIFxuICAgICAgICAgICAgICAgICBjb2xvckNoYW5uZWwueSAqIGNvbG9yc1sxXSArXG4gICAgICAgICAgICAgICAgIGNvbG9yQ2hhbm5lbC56ICogY29sb3JzWzJdO1xufSI7ci5iZz1mdW5jdGlvbih0KXtyZXR1cm4gbih0LGwsYyxudWxsLFt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToibm9ybWFsIix0eXBlOiJ2ZWMzIn1dKX19LHsiZ2wtc2hhZGVyIjoxNTR9XSwxMzI6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbil7dGhpcy5nbD10LHRoaXMuc2hhZGVyPWUsdGhpcy5idWZmZXI9cix0aGlzLnZhbz1uLHRoaXMudGlja09mZnNldD10aGlzLnRpY2tDb3VudD10aGlzLmxhYmVsT2Zmc2V0PXRoaXMubGFiZWxDb3VudD1udWxsfWZ1bmN0aW9uIGkodCxlKXt0cnl7cmV0dXJuIGwodCxlKX1jYXRjaChyKXtyZXR1cm4gY29uc29sZS53YXJuKCJlcnJvciB2ZWN0b3JpemluZyB0ZXh0OiIscikse2NlbGxzOltdLHBvc2l0aW9uczpbXX19fWZ1bmN0aW9uIG8odCxlLHIsaSxvLGwpe3ZhciB1PWEodCksaD1zKHQsW3tidWZmZXI6dSxzaXplOjN9XSksZj1jKHQpO2YuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wO3ZhciBkPW5ldyBuKHQsZix1LGgpO3JldHVybiBkLnVwZGF0ZShlLHIsaSxvLGwpLGR9ZS5leHBvcnRzPW87dmFyIGE9dCgiZ2wtYnVmZmVyIikscz10KCJnbC12YW8iKSxsPXQoInZlY3Rvcml6ZS10ZXh0IiksYz10KCIuL3NoYWRlcnMiKS50ZXh0LHU9d2luZG93fHxyLmdsb2JhbHx8e30saD11Ll9fVEVYVF9DQUNIRXx8e307dS5fX1RFWFRfQ0FDSEU9e307dmFyIGY9MyxkPW4ucHJvdG90eXBlLHA9WzAsMF07ZC5iaW5kPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMudmFvLmJpbmQoKSx0aGlzLnNoYWRlci5iaW5kKCk7dmFyIGk9dGhpcy5zaGFkZXIudW5pZm9ybXM7aS5tb2RlbD10LGkudmlldz1lLGkucHJvamVjdGlvbj1yLGkucGl4ZWxTY2FsZT1uLHBbMF09dGhpcy5nbC5kcmF3aW5nQnVmZmVyV2lkdGgscFsxXT10aGlzLmdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsdGhpcy5zaGFkZXIudW5pZm9ybXMucmVzb2x1dGlvbj1wfSxkLnVwZGF0ZT1mdW5jdGlvbih0LGUscixuLG8pe2Z1bmN0aW9uIGEodCxlLHIsbil7dmFyIG89aFtyXTtvfHwobz1oW3JdPXt9KTt2YXIgYT1vW2VdO2F8fChhPW9bZV09aShlLHt0cmlhbmdsZXM6ITAsZm9udDpyLHRleHRBbGlnbjoiY2VudGVyIix0ZXh0QmFzZWxpbmU6Im1pZGRsZSJ9KSk7Zm9yKHZhciBsPShufHwxMikvMTIsYz1hLnBvc2l0aW9ucyx1PWEuY2VsbHMsZj0wLGQ9dS5sZW5ndGg7ZD5mOysrZilmb3IodmFyIHA9dVtmXSxnPTI7Zz49MDstLWcpe3ZhciB2PWNbcFtnXV07cy5wdXNoKGwqdlswXSwtbCp2WzFdLHQpfX1mb3IodmFyIHM9KHRoaXMuZ2wsW10pLGw9WzAsMCwwXSxjPVswLDAsMF0sdT1bMCwwLDBdLGQ9WzAsMCwwXSxwPTA7Mz5wOysrcCl7dVtwXT1zLmxlbmd0aC9mfDAsYSguNSoodFswXVtwXSt0WzFdW3BdKSxlW3BdLHIpLGRbcF09KHMubGVuZ3RoL2Z8MCktdVtwXSxsW3BdPXMubGVuZ3RoL2Z8MDtmb3IodmFyIGc9MDtnPG5bcF0ubGVuZ3RoOysrZyluW3BdW2ddLnRleHQmJmEobltwXVtnXS54LG5bcF1bZ10udGV4dCxuW3BdW2ddLmZvbnR8fG8sbltwXVtnXS5mb250U2l6ZXx8MTIpO2NbcF09KHMubGVuZ3RoL2Z8MCktbFtwXX10aGlzLmJ1ZmZlci51cGRhdGUocyksdGhpcy50aWNrT2Zmc2V0PWwsdGhpcy50aWNrQ291bnQ9Yyx0aGlzLmxhYmVsT2Zmc2V0PXUsdGhpcy5sYWJlbENvdW50PWR9O3ZhciBnPVswLDAsMF07ZC5kcmF3VGlja3M9ZnVuY3Rpb24odCxlLHIsbixpKXtpZih0aGlzLnRpY2tDb3VudFt0XSl7dmFyIG89ZztvWzBdPW9bMV09b1syXT0wLG9bdF09MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5heGlzPW8sdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9aSx0aGlzLnNoYWRlci51bmlmb3Jtcy5hbmdsZT1yLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjYWxlPWUsdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PW4sdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyx0aGlzLnRpY2tDb3VudFt0XSx0aGlzLnRpY2tPZmZzZXRbdF0pfX07dmFyIHY9WzAsMCwwXTtkLmRyYXdMYWJlbD1mdW5jdGlvbih0LGUscixuLGkpe3RoaXMubGFiZWxDb3VudFt0XSYmKHRoaXMuc2hhZGVyLnVuaWZvcm1zLmF4aXM9dix0aGlzLnNoYWRlci51bmlmb3Jtcy5jb2xvcj1pLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmFuZ2xlPXIsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NhbGU9ZSx0aGlzLnNoYWRlci51bmlmb3Jtcy5vZmZzZXQ9bix0aGlzLnZhby5kcmF3KHRoaXMuZ2wuVFJJQU5HTEVTLHRoaXMubGFiZWxDb3VudFt0XSx0aGlzLmxhYmVsT2Zmc2V0W3RdKSl9LGQuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpfX0pLmNhbGwodGhpcyx0KCJfcHJvY2VzcyIpKX0seyIuL3NoYWRlcnMiOjEzMSxfcHJvY2Vzczo1NSwiZ2wtYnVmZmVyIjo3NSwiZ2wtdmFvIjoxODQsInZlY3Rvcml6ZS10ZXh0IjoyMzd9XSwxMzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPXQrIiIsbj1yLmluZGV4T2YoIi4iKSxpPTA7bj49MCYmKGk9ci5sZW5ndGgtbi0xKTt2YXIgbz1NYXRoLnBvdygxMCxpKSxhPU1hdGgucm91bmQodCplKm8pLHM9YSsiIjtpZihzLmluZGV4T2YoImUiKT49MClyZXR1cm4gczt2YXIgbD1hL28sYz1hJW87MD5hPyhsPTB8LU1hdGguY2VpbChsKSxjPTB8LWMpOihsPTB8TWF0aC5mbG9vcihsKSxjPTB8Yyk7dmFyIHU9IiIrbDtpZigwPmEmJih1PSItIit1KSxpKXtmb3IodmFyIGg9IiIrYztoLmxlbmd0aDxpOyloPSIwIitoO3JldHVybiB1KyIuIitofXJldHVybiB1fWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9W10saT0wOzM+aTsrK2kpe2Zvcih2YXIgbz1bXSxhPSguNSoodFswXVtpXSt0WzFdW2ldKSwwKTthKmVbaV08PXRbMV1baV07KythKW8ucHVzaCh7eDphKmVbaV0sdGV4dDpuKGVbaV0sYSl9KTtmb3IodmFyIGE9LTE7YSplW2ldPj10WzBdW2ldOy0tYSlvLnB1c2goe3g6YSplW2ldLHRleHQ6bihlW2ldLGEpfSk7ci5wdXNoKG8pfXJldHVybiByfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIHI9MDszPnI7KytyKXtpZih0W3JdLmxlbmd0aCE9PWVbcl0ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dFtyXS5sZW5ndGg7KytuKXt2YXIgaT10W3JdW25dLG89ZVtyXVtuXTtpZihpLnghPT1vLnh8fGkudGV4dCE9PW8udGV4dClyZXR1cm4hMX19cmV0dXJuITB9ci5jcmVhdGU9aSxyLmVxdWFsPW99LHt9XSwxMzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZXx8MCxpPXJ8fDE7cmV0dXJuW1t0WzEyXSt0WzBdLHRbMTNdK3RbMV0sdFsxNF0rdFsyXSx0WzE1XSt0WzNdXSxbdFsxMl0tdFswXSx0WzEzXS10WzFdLHRbMTRdLXRbMl0sdFsxNV0tdFszXV0sW3RbMTJdK3RbNF0sdFsxM10rdFs1XSx0WzE0XSt0WzZdLHRbMTVdK3RbN11dLFt0WzEyXS10WzRdLHRbMTNdLXRbNV0sdFsxNF0tdFs2XSx0WzE1XS10WzddXSxbbip0WzEyXSt0WzhdLG4qdFsxM10rdFs5XSxuKnRbMTRdK3RbMTBdLG4qdFsxNV0rdFsxMV1dLFtpKnRbMTJdLXRbOF0saSp0WzEzXS10WzldLGkqdFsxNF0tdFsxMF0saSp0WzE1XS10WzExXV1dfWUuZXhwb3J0cz1ufSx7fV0sMTM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1jKGwodCxlKSxbZVtlLmxlbmd0aC0xXV0pO3JldHVybiByW3IubGVuZ3RoLTFdfWZ1bmN0aW9uIGkodCxlLHIsbil7dmFyIGk9bi1lLG89LWUvaTswPm8/bz0wOm8+MSYmKG89MSk7Zm9yKHZhciBhPTEtbyxzPXQubGVuZ3RoLGw9bmV3IEFycmF5KHMpLGM9MDtzPmM7KytjKWxbY109byp0W2NdK2EqcltjXTtyZXR1cm4gbH1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPVtdLG89W10sYT1uKHRbdC5sZW5ndGgtMV0sZSkscz10W3QubGVuZ3RoLTFdLGw9dFswXSxjPTA7Yzx0Lmxlbmd0aDsrK2Mscz1sKXtsPXRbY107dmFyIHU9bihsLGUpO2lmKDA+YSYmdT4wfHxhPjAmJjA+dSl7dmFyIGg9aShzLHUsbCxhKTtyLnB1c2goaCksby5wdXNoKGguc2xpY2UoKSl9MD51P28ucHVzaChsLnNsaWNlKCkpOnU+MD9yLnB1c2gobC5zbGljZSgpKTooci5wdXNoKGwuc2xpY2UoKSksby5wdXNoKGwuc2xpY2UoKSkpLGE9dX1yZXR1cm57cG9zaXRpdmU6cixuZWdhdGl2ZTpvfX1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPVtdLG89bih0W3QubGVuZ3RoLTFdLGUpLGE9dFt0Lmxlbmd0aC0xXSxzPXRbMF0sbD0wO2w8dC5sZW5ndGg7KytsLGE9cyl7cz10W2xdO3ZhciBjPW4ocyxlKTsoMD5vJiZjPjB8fG8+MCYmMD5jKSYmci5wdXNoKGkoYSxjLHMsbykpLGM+PTAmJnIucHVzaChzLnNsaWNlKCkpLG89Y31yZXR1cm4gcn1mdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciByPVtdLG89bih0W3QubGVuZ3RoLTFdLGUpLGE9dFt0Lmxlbmd0aC0xXSxzPXRbMF0sbD0wO2w8dC5sZW5ndGg7KytsLGE9cyl7cz10W2xdO3ZhciBjPW4ocyxlKTsoMD5vJiZjPjB8fG8+MCYmMD5jKSYmci5wdXNoKGkoYSxjLHMsbykpLDA+PWMmJnIucHVzaChzLnNsaWNlKCkpLG89Y31yZXR1cm4gcn12YXIgbD10KCJyb2J1c3QtZG90LXByb2R1Y3QiKSxjPXQoInJvYnVzdC1zdW0iKTtlLmV4cG9ydHM9byxlLmV4cG9ydHMucG9zaXRpdmU9YSxlLmV4cG9ydHMubmVnYXRpdmU9c30seyJyb2J1c3QtZG90LXByb2R1Y3QiOjEzNiwicm9idXN0LXN1bSI6MjE5fV0sMTM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmb3IodmFyIHI9aSh0WzBdLGVbMF0pLG49MTtuPHQubGVuZ3RoOysrbilyPW8ocixpKHRbbl0sZVtuXSkpO3JldHVybiByfXZhciBpPXQoInR3by1wcm9kdWN0Iiksbz10KCJyb2J1c3Qtc3VtIik7ZS5leHBvcnRzPW59LHsicm9idXN0LXN1bSI6MjE5LCJ0d28tcHJvZHVjdCI6MjMzfV0sMTM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMubG89dCx0aGlzLmhpPWUsdGhpcy5waXhlbHNQZXJEYXRhVW5pdD1yfWZ1bmN0aW9uIGkodCxlLHIsbixpKXtmb3IodmFyIG89MDszPm87KytvKXtmb3IodmFyIGE9cCxzPWcsbD0wOzM+bDsrK2wpc1tsXT1hW2xdPXJbbF07c1szXT1hWzNdPTEsc1tvXSs9MSxoKHMscyxlKSxzWzNdPDAmJih0W29dPTEvMCksYVtvXS09MSxoKGEsYSxlKSxhWzNdPDAmJih0W29dPTEvMCk7dmFyIGM9KGFbMF0vYVszXS1zWzBdL3NbM10pKm4sdT0oYVsxXS9hWzNdLXNbMV0vc1szXSkqaTt0W29dPS4yNSpNYXRoLnNxcnQoYypjK3UqdSl9cmV0dXJuIHR9ZnVuY3Rpb24gbyh0LGUscixuLG8pe3ZhciBoPWUubW9kZWx8fGYscD1lLnZpZXd8fGYsZz1lLnByb2plY3Rpb258fGYseT10LmJvdW5kcyxvPW98fGwoaCxwLGcseSksYj1vLmF4aXM7by5lZGdlcztjKGQscCxoKSxjKGQsZyxkKTtmb3IodmFyIHg9dixfPTA7Mz5fOysrXyl4W19dLmxvPTEvMCx4W19dLmhpPS0oMS8wKSx4W19dLnBpeGVsc1BlckRhdGFVbml0PTEvMDt2YXIgdz1hKHUoZCxkKSk7dShkLGQpO2Zvcih2YXIgQT0wOzM+QTsrK0Epe3ZhciBrPShBKzEpJTMsTT0oQSsyKSUzLFQ9bTt0OmZvcih2YXIgXz0wOzI+XzsrK18pe3ZhciBFPVtdO2lmKGJbQV08MCE9ISFfKXtUW0FdPXlbX11bQV07Zm9yKHZhciBMPTA7Mj5MOysrTCl7VFtrXT15W0xeX11ba107Zm9yKHZhciBTPTA7Mj5TOysrUylUW01dPXlbU15MXl9dW01dLEUucHVzaChULnNsaWNlKCkpfWZvcih2YXIgTD0wO0w8dy5sZW5ndGg7KytMKXtpZigwPT09RS5sZW5ndGgpY29udGludWUgdDtFPXMucG9zaXRpdmUoRSx3W0xdKX1mb3IodmFyIEw9MDtMPEUubGVuZ3RoOysrTClmb3IodmFyIE09RVtMXSxDPWkobSxkLE0scixuKSxTPTA7Mz5TOysrUyl4W1NdLmxvPU1hdGgubWluKHhbU10ubG8sTVtTXSkseFtTXS5oaT1NYXRoLm1heCh4W1NdLmhpLE1bU10pLFMhPT1BJiYoeFtTXS5waXhlbHNQZXJEYXRhVW5pdD1NYXRoLm1pbih4W1NdLnBpeGVsc1BlckRhdGFVbml0LE1hdGguYWJzKENbU10pKSl9fX1yZXR1cm4geH1lLmV4cG9ydHM9bzt2YXIgYT10KCJleHRyYWN0LWZydXN0dW0tcGxhbmVzIikscz10KCJzcGxpdC1wb2x5Z29uIiksbD10KCIuL2xpYi9jdWJlLmpzIiksYz10KCJnbC1tYXQ0L211bHRpcGx5IiksdT10KCJnbC1tYXQ0L3RyYW5zcG9zZSIpLGg9dCgiZ2wtdmVjNC90cmFuc2Zvcm1NYXQ0IiksZj1uZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSksZD1uZXcgRmxvYXQzMkFycmF5KDE2KSxwPVswLDAsMCwxXSxnPVswLDAsMCwxXSx2PVtuZXcgbigxLzAsLSgxLzApLDEvMCksbmV3IG4oMS8wLC0oMS8wKSwxLzApLG5ldyBuKDEvMCwtKDEvMCksMS8wKV0sbT1bMCwwLDBdfSx7Ii4vbGliL2N1YmUuanMiOjEyOSwiZXh0cmFjdC1mcnVzdHVtLXBsYW5lcyI6MTM0LCJnbC1tYXQ0L211bHRpcGx5Ijo5NiwiZ2wtbWF0NC90cmFuc3Bvc2UiOjEwNCwiZ2wtdmVjNC90cmFuc2Zvcm1NYXQ0IjoxODUsInNwbGl0LXBvbHlnb24iOjEzNX1dLDEzODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1zaGFkZXIiKSxpPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uLCBjb2xvcjtcbmF0dHJpYnV0ZSBmbG9hdCB3ZWlnaHQ7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBjb29yZGluYXRlc1szXTtcbnVuaWZvcm0gdmVjNCBjb2xvcnNbM107XG51bmlmb3JtIHZlYzIgc2NyZWVuU2hhcGU7XG51bmlmb3JtIGZsb2F0IGxpbmVXaWR0aDtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIHZlcnRleFBvc2l0aW9uID0gbWl4KGNvb3JkaW5hdGVzWzBdLFxuICAgIG1peChjb29yZGluYXRlc1syXSwgY29vcmRpbmF0ZXNbMV0sIDAuNSAqIChwb3NpdGlvbiArIDEuMCkpLCBhYnMocG9zaXRpb24pKTtcblxuICB2ZWM0IGNsaXBQb3MgPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTtcbiAgdmVjMiBjbGlwT2Zmc2V0ID0gKHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KGNvbG9yLCAwLjApKS54eTtcbiAgdmVjMiBkZWx0YSA9IHdlaWdodCAqIGNsaXBPZmZzZXQgKiBzY3JlZW5TaGFwZTtcbiAgdmVjMiBsaW5lT2Zmc2V0ID0gbm9ybWFsaXplKHZlYzIoZGVsdGEueSwgLWRlbHRhLngpKSAvIHNjcmVlblNoYXBlO1xuXG4gIGdsX1Bvc2l0aW9uICAgPSB2ZWM0KGNsaXBQb3MueHkgKyBjbGlwUG9zLncgKiAwLjUgKiBsaW5lV2lkdGggKiBsaW5lT2Zmc2V0LCBjbGlwUG9zLnosIGNsaXBQb3Mudyk7XG4gIGZyYWdDb2xvciAgICAgPSBjb2xvci54ICogY29sb3JzWzBdICsgY29sb3IueSAqIGNvbG9yc1sxXSArIGNvbG9yLnogKiBjb2xvcnNbMl07XG59XG4iLG89InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBmcmFnQ29sb3I7XG59IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCxpLG8sbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWMzIn0se25hbWU6IndlaWdodCIsdHlwZToiZmxvYXQifV0pfX0seyJnbC1zaGFkZXIiOjE1NH1dLDEzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4pe3RoaXMuZ2w9dCx0aGlzLmJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5zaGFkZXI9bix0aGlzLnBpeGVsUmF0aW89MSx0aGlzLmJvdW5kcz1bWy0xZTMsLTFlMywtMWUzXSxbMWUzLDFlMywxZTNdXSx0aGlzLnBvc2l0aW9uPVswLDAsMF0sdGhpcy5saW5lV2lkdGg9WzIsMiwyXSx0aGlzLmNvbG9ycz1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZW5hYmxlZD1bITAsITAsITBdLHRoaXMuZHJhd1NpZGVzPVshMCwhMCwhMF0sdGhpcy5heGVzPW51bGx9ZnVuY3Rpb24gaSh0LGUpe2Z1bmN0aW9uIHIodCxlLHIsbixvLGEpe3ZhciBzPVt0LGUsciwwLDAsMCwxXTtzW24rM109MSxzW25dPW8saS5wdXNoLmFwcGx5KGkscyksc1s2XT0tMSxpLnB1c2guYXBwbHkoaSxzKSxzW25dPWEsaS5wdXNoLmFwcGx5KGkscyksaS5wdXNoLmFwcGx5KGkscyksc1s2XT0xLGkucHVzaC5hcHBseShpLHMpLHNbbl09byxpLnB1c2guYXBwbHkoaSxzKX12YXIgaT1bXTtyKDAsMCwwLDAsMCwxKSxyKDAsMCwwLDEsMCwxKSxyKDAsMCwwLDIsMCwxKSxyKDEsMCwwLDEsLTEsMSkscigxLDAsMCwyLC0xLDEpLHIoMCwxLDAsMCwtMSwxKSxyKDAsMSwwLDIsLTEsMSkscigwLDAsMSwwLC0xLDEpLHIoMCwwLDEsMSwtMSwxKTt2YXIgbD1vKHQsaSksYz1hKHQsW3t0eXBlOnQuRkxPQVQsYnVmZmVyOmwsc2l6ZTozLG9mZnNldDowLHN0cmlkZToyOH0se3R5cGU6dC5GTE9BVCxidWZmZXI6bCxzaXplOjMsb2Zmc2V0OjEyLHN0cmlkZToyOH0se3R5cGU6dC5GTE9BVCxidWZmZXI6bCxzaXplOjEsb2Zmc2V0OjI0LHN0cmlkZToyOH1dKSx1PXModCk7dS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsdS5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTEsdS5hdHRyaWJ1dGVzLndlaWdodC5sb2NhdGlvbj0yO3ZhciBoPW5ldyBuKHQsbCxjLHUpO3JldHVybiBoLnVwZGF0ZShlKSxofXZhciBvPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtdmFvIikscz10KCIuL3NoYWRlcnMvaW5kZXgiKTtlLmV4cG9ydHM9aTt2YXIgbD1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYz1uLnByb3RvdHlwZSx1PVswLDAsMF0saD1bMCwwLDBdLGY9WzAsMF07Yy5pc1RyYW5zcGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGMuZHJhd1RyYW5zcGFyZW50PWZ1bmN0aW9uKHQpe30sYy5kcmF3PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnZhbyxuPXRoaXMuc2hhZGVyO3IuYmluZCgpLG4uYmluZCgpO3ZhciBpLG89dC5tb2RlbHx8bCxhPXQudmlld3x8bCxzPXQucHJvamVjdGlvbnx8bDt0aGlzLmF4ZXMmJihpPXRoaXMuYXhlcy5sYXN0Q3ViZVByb3BzLmF4aXMpO2Zvcih2YXIgYz11LGQ9aCxwPTA7Mz5wOysrcClpJiZpW3BdPDA/KGNbcF09dGhpcy5ib3VuZHNbMF1bcF0sZFtwXT10aGlzLmJvdW5kc1sxXVtwXSk6KGNbcF09dGhpcy5ib3VuZHNbMV1bcF0sZFtwXT10aGlzLmJvdW5kc1swXVtwXSk7ZlswXT1lLmRyYXdpbmdCdWZmZXJXaWR0aCxmWzFdPWUuZHJhd2luZ0J1ZmZlckhlaWdodCxuLnVuaWZvcm1zLm1vZGVsPW8sbi51bmlmb3Jtcy52aWV3PWEsbi51bmlmb3Jtcy5wcm9qZWN0aW9uPXMsbi51bmlmb3Jtcy5jb29yZGluYXRlcz1bdGhpcy5wb3NpdGlvbixjLGRdLApuLnVuaWZvcm1zLmNvbG9ycz10aGlzLmNvbG9ycyxuLnVuaWZvcm1zLnNjcmVlblNoYXBlPWY7Zm9yKHZhciBwPTA7Mz5wOysrcCluLnVuaWZvcm1zLmxpbmVXaWR0aD10aGlzLmxpbmVXaWR0aFtwXSp0aGlzLnBpeGVsUmF0aW8sdGhpcy5lbmFibGVkW3BdJiYoci5kcmF3KGUuVFJJQU5HTEVTLDYsNipwKSx0aGlzLmRyYXdTaWRlc1twXSYmci5kcmF3KGUuVFJJQU5HTEVTLDEyLDE4KzEyKnApKTtyLnVuYmluZCgpfSxjLnVwZGF0ZT1mdW5jdGlvbih0KXt0JiYoImJvdW5kcyJpbiB0JiYodGhpcy5ib3VuZHM9dC5ib3VuZHMpLCJwb3NpdGlvbiJpbiB0JiYodGhpcy5wb3NpdGlvbj10LnBvc2l0aW9uKSwibGluZVdpZHRoImluIHQmJih0aGlzLmxpbmVXaWR0aD10LmxpbmVXaWR0aCksImNvbG9ycyJpbiB0JiYodGhpcy5jb2xvcnM9dC5jb2xvcnMpLCJlbmFibGVkImluIHQmJih0aGlzLmVuYWJsZWQ9dC5lbmFibGVkKSwiZHJhd1NpZGVzImluIHQmJih0aGlzLmRyYXdTaWRlcz10LmRyYXdTaWRlcykpfSxjLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzL2luZGV4IjoxMzgsImdsLWJ1ZmZlciI6NzUsImdsLXZhbyI6MTg0fV0sMTQwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt0aGlzLm1vdXNlPVstMSwtMV0sdGhpcy5zY3JlZW49bnVsbCx0aGlzLmRpc3RhbmNlPTEvMCx0aGlzLmluZGV4PW51bGwsdGhpcy5kYXRhQ29vcmRpbmF0ZT1udWxsLHRoaXMuZGF0YVBvc2l0aW9uPW51bGwsdGhpcy5vYmplY3Q9bnVsbCx0aGlzLmRhdGE9bnVsbH1mdW5jdGlvbiBpKHQsZSl7dmFyIHI9bnVsbDt0cnl7cj10LmdldENvbnRleHQoIndlYmdsIixlKSxyfHwocj10LmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIsZSkpfWNhdGNoKG4pe3JldHVybiBudWxsfXJldHVybiByfWZ1bmN0aW9uIG8odCl7dmFyIGU9TWF0aC5yb3VuZChNYXRoLmxvZyhNYXRoLmFicyh0KSkvTWF0aC5sb2coMTApKTtpZigwPmUpe3ZhciByPU1hdGgucm91bmQoTWF0aC5wb3coMTAsLWUpKTtyZXR1cm4gTWF0aC5jZWlsKHQqcikvcn1pZihlPjApe3ZhciByPU1hdGgucm91bmQoTWF0aC5wb3coMTAsZSkpO3JldHVybiBNYXRoLmNlaWwodC9yKSpyfXJldHVybiBNYXRoLmNlaWwodCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0P3Q6ITB9ZnVuY3Rpb24gcyh0KXtmdW5jdGlvbiBlKCl7aWYoIV8mJkguYXV0b1Jlc2l6ZSl7dmFyIHQ9dy5wYXJlbnROb2RlLGU9MSxyPTE7dCYmdCE9PWRvY3VtZW50LmJvZHk/KGU9dC5jbGllbnRXaWR0aCxyPXQuY2xpZW50SGVpZ2h0KTooZT13aW5kb3cuaW5uZXJXaWR0aCxyPXdpbmRvdy5pbm5lckhlaWdodCk7dmFyIG49MHxNYXRoLmNlaWwoZSpILnBpeGVsUmF0aW8pLGk9MHxNYXRoLmNlaWwocipILnBpeGVsUmF0aW8pO2lmKG4hPT13LndpZHRofHxpIT09dy5oZWlnaHQpe3cud2lkdGg9bix3LmhlaWdodD1pO3ZhciBvPXcuc3R5bGU7by5wb3NpdGlvbj1vLnBvc2l0aW9ufHwiYWJzb2x1dGUiLG8ubGVmdD0iMHB4IixvLnRvcD0iMHB4IixvLndpZHRoPWUrInB4IixvLmhlaWdodD1yKyJweCIsRj0hMH19fWZ1bmN0aW9uIHIoKXtmb3IodmFyIHQ9Ty5sZW5ndGgsZT1qLmxlbmd0aCxyPTA7ZT5yOysrcilOW3JdPTA7dDpmb3IodmFyIHI9MDt0PnI7KytyKXt2YXIgbj1PW3JdLGk9bi5waWNrU2xvdHM7aWYoaSl7Zm9yKHZhciBvPTA7ZT5vOysrbylpZihOW29dK2k8MjU1KXtJW3JdPW8sbi5zZXRQaWNrQmFzZShOW29dKzEpLE5bb10rPWk7Y29udGludWUgdH12YXIgYT1mKGsscSk7SVtyXT1lLGoucHVzaChhKSxOLnB1c2goaSksbi5zZXRQaWNrQmFzZSgxKSxlKz0xfWVsc2UgSVtyXT0tMX1mb3IoO2U+MCYmMD09PU5bZS0xXTspTi5wb3AoKSxqLnBvcCgpLmRpc3Bvc2UoKX1mdW5jdGlvbiBzKCl7cmV0dXJuIEguY29udGV4dExvc3Q/ITA6dm9pZChrLmlzQ29udGV4dExvc3QoKSYmKEguY29udGV4dExvc3Q9ITAsSC5tb3VzZUxpc3RlbmVyLmVuYWJsZWQ9ITEsSC5zZWxlY3Rpb24ub2JqZWN0PW51bGwsSC5vbmNvbnRleHRsb3NzJiZILm9uY29udGV4dGxvc3MoKSkpfWZ1bmN0aW9uIHkoKXtpZighcygpKXtrLmNvbG9yTWFzayghMCwhMCwhMCwhMCksay5kZXB0aE1hc2soITApLGsuZGlzYWJsZShrLkJMRU5EKSxrLmVuYWJsZShrLkRFUFRIX1RFU1QpO2Zvcih2YXIgdD1PLmxlbmd0aCxlPWoubGVuZ3RoLHI9MDtlPnI7KytyKXt2YXIgbj1qW3JdO24uc2hhcGU9RyxuLmJlZ2luKCk7Zm9yKHZhciBpPTA7dD5pOysraSlpZihJW2ldPT09cil7dmFyIG89T1tpXTtvLmRyYXdQaWNrJiYoby5waXhlbFJhdGlvPTEsby5kcmF3UGljayhWKSl9bi5lbmQoKX19fWZ1bmN0aW9uIGIoKXtpZighcygpKXtlKCk7dmFyIHQ9SC5jYW1lcmEudGljaygpO1Yudmlldz1ILmNhbWVyYS5tYXRyaXgsRj1GfHx0LEQ9RHx8dCxQLnBpeGVsUmF0aW89SC5waXhlbFJhdGlvLFIucGl4ZWxSYXRpbz1ILnBpeGVsUmF0aW87dmFyIHI9Ty5sZW5ndGgsbj1XWzBdLGk9V1sxXTtuWzBdPW5bMV09blsyXT0xLzAsaVswXT1pWzFdPWlbMl09LSgxLzApO2Zvcih2YXIgYT0wO3I+YTsrK2Epe3ZhciBsPU9bYV07bC5waXhlbFJhdGlvPUgucGl4ZWxSYXRpbyxsLmF4ZXM9SC5heGVzLEY9Rnx8ISFsLmRpcnR5LEQ9RHx8ISFsLmRpcnR5O3ZhciBjPWwuYm91bmRzO2lmKGMpZm9yKHZhciBoPWNbMF0sZj1jWzFdLGQ9MDszPmQ7KytkKW5bZF09TWF0aC5taW4obltkXSxoW2RdKSxpW2RdPU1hdGgubWF4KGlbZF0sZltkXSl9dmFyIGc9SC5ib3VuZHM7aWYoSC5hdXRvQm91bmRzKWZvcih2YXIgZD0wOzM+ZDsrK2Qpe2lmKGlbZF08bltkXSluW2RdPS0xLGlbZF09MTtlbHNle25bZF09PT1pW2RdJiYobltkXS09MSxpW2RdKz0xKTt2YXIgbT0uMDUqKGlbZF0tbltkXSk7bltkXT1uW2RdLW0saVtkXT1pW2RdK219Z1swXVtkXT1uW2RdLGdbMV1bZF09aVtkXX1mb3IodmFyIGI9ITEsZD0wOzM+ZDsrK2QpYj1ifHxaWzBdW2RdIT09Z1swXVtkXXx8WlsxXVtkXSE9PWdbMV1bZF0sWlswXVtkXT1nWzBdW2RdLFpbMV1bZF09Z1sxXVtkXTtpZihiKXtmb3IodmFyIHg9WzAsMCwwXSxhPTA7Mz5hOysrYSl4W2FdPW8oKGdbMV1bYV0tZ1swXVthXSkvMTApO1AuYXV0b1RpY2tzP1AudXBkYXRlKHtib3VuZHM6Zyx0aWNrU3BhY2luZzp4fSk6UC51cGRhdGUoe2JvdW5kczpnfSl9RD1EfHxiLEY9Rnx8Yjt2YXIgXz1rLmRyYXdpbmdCdWZmZXJXaWR0aCx3PWsuZHJhd2luZ0J1ZmZlckhlaWdodDtxWzBdPV8scVsxXT13LEdbMF09MHxNYXRoLm1heChfL0gucGl4ZWxSYXRpbywxKSxHWzFdPTB8TWF0aC5tYXgody9ILnBpeGVsUmF0aW8sMSksdihCLEguZm92eSxfL3csSC56TmVhcixILnpGYXIpO2Zvcih2YXIgYT0wOzE2PmE7KythKVVbYV09MDtVWzE1XT0xO2Zvcih2YXIgQT0wLGE9MDszPmE7KythKUE9TWF0aC5tYXgoQSxnWzFdW2FdLWdbMF1bYV0pO2Zvcih2YXIgYT0wOzM+YTsrK2EpSC5hdXRvU2NhbGU/VVs1KmFdPUguYXNwZWN0W2FdLyhnWzFdW2FdLWdbMF1bYV0pOlVbNSphXT0xL0EsSC5hdXRvQ2VudGVyJiYoVVsxMithXT0uNSotVVs1KmFdKihnWzBdW2FdK2dbMV1bYV0pKTtmb3IodmFyIGE9MDtyPmE7KythKXt2YXIgbD1PW2FdO2wuYXhlc0JvdW5kcz1nLEguY2xpcFRvQm91bmRzJiYobC5jbGlwQm91bmRzPWcpfWlmKFQub2JqZWN0JiYoSC5zbmFwVG9EYXRhP1IucG9zaXRpb249VC5kYXRhQ29vcmRpbmF0ZTpSLnBvc2l0aW9uPVQuZGF0YVBvc2l0aW9uLFIuYm91bmRzPWcpLEQmJihEPSExLHkoKSksRil7SC5heGVzUGl4ZWxzPXUoSC5heGVzLFYsXyx3KSxILm9ucmVuZGVyJiZILm9ucmVuZGVyKCksay5iaW5kRnJhbWVidWZmZXIoay5GUkFNRUJVRkZFUixudWxsKSxrLnZpZXdwb3J0KDAsMCxfLHcpO3ZhciBNPUguY2xlYXJDb2xvcjtrLmNsZWFyQ29sb3IoTVswXSxNWzFdLE1bMl0sTVszXSksay5jbGVhcihrLkNPTE9SX0JVRkZFUl9CSVR8ay5ERVBUSF9CVUZGRVJfQklUKSxrLmRlcHRoTWFzayghMCksay5jb2xvck1hc2soITAsITAsITAsITApLGsuZW5hYmxlKGsuREVQVEhfVEVTVCksay5kZXB0aEZ1bmMoay5MRVFVQUwpLGsuZGlzYWJsZShrLkJMRU5EKSxrLmRpc2FibGUoay5DVUxMX0ZBQ0UpO3ZhciBTPSExO1AuZW5hYmxlJiYoUz1TfHxQLmlzVHJhbnNwYXJlbnQoKSxQLmRyYXcoVikpLFIuYXhlcz1QLFQub2JqZWN0JiZSLmRyYXcoViksay5kaXNhYmxlKGsuQ1VMTF9GQUNFKTtmb3IodmFyIGE9MDtyPmE7KythKXt2YXIgbD1PW2FdO2wuYXhlcz1QLGwucGl4ZWxSYXRpbz1ILnBpeGVsUmF0aW8sbC5pc09wYXF1ZSYmbC5pc09wYXF1ZSgpJiZsLmRyYXcoViksbC5pc1RyYW5zcGFyZW50JiZsLmlzVHJhbnNwYXJlbnQoKSYmKFM9ITApfWlmKFMpe0Uuc2hhcGU9cSxFLmJpbmQoKSxrLmNsZWFyKGsuREVQVEhfQlVGRkVSX0JJVCksay5jb2xvck1hc2soITEsITEsITEsITEpLGsuZGVwdGhNYXNrKCEwKSxrLmRlcHRoRnVuYyhrLkxFU1MpLFAuZW5hYmxlJiZQLmlzVHJhbnNwYXJlbnQoKSYmUC5kcmF3VHJhbnNwYXJlbnQoVik7Zm9yKHZhciBhPTA7cj5hOysrYSl7dmFyIGw9T1thXTtsLmlzT3BhcXVlJiZsLmlzT3BhcXVlKCkmJmwuZHJhdyhWKX1rLmVuYWJsZShrLkJMRU5EKSxrLmJsZW5kRXF1YXRpb24oay5GVU5DX0FERCksay5ibGVuZEZ1bmMoay5PTkUsay5PTkVfTUlOVVNfU1JDX0FMUEhBKSxrLmNvbG9yTWFzayghMCwhMCwhMCwhMCksay5kZXB0aE1hc2soITEpLGsuY2xlYXJDb2xvcigwLDAsMCwwKSxrLmNsZWFyKGsuQ09MT1JfQlVGRkVSX0JJVCksUC5pc1RyYW5zcGFyZW50KCkmJlAuZHJhd1RyYW5zcGFyZW50KFYpO2Zvcih2YXIgYT0wO3I+YTsrK2Epe3ZhciBsPU9bYV07bC5pc1RyYW5zcGFyZW50JiZsLmlzVHJhbnNwYXJlbnQoKSYmbC5kcmF3VHJhbnNwYXJlbnQoVil9ay5iaW5kRnJhbWVidWZmZXIoay5GUkFNRUJVRkZFUixudWxsKSxrLmJsZW5kRnVuYyhrLk9ORSxrLk9ORV9NSU5VU19TUkNfQUxQSEEpLGsuZGlzYWJsZShrLkRFUFRIX1RFU1QpLEwuYmluZCgpLEUuY29sb3JbMF0uYmluZCgwKSxMLnVuaWZvcm1zLmFjY3VtQnVmZmVyPTAscChrKSxrLmRpc2FibGUoay5CTEVORCl9Rj0hMTtmb3IodmFyIGE9MDtyPmE7KythKU9bYV0uZGlydHk9ITF9fX1mdW5jdGlvbiB4KCl7X3x8SC5jb250ZXh0TG9zdHx8KHJlcXVlc3RBbmltYXRpb25GcmFtZSh4KSxiKCkpfXQ9dHx8e307dmFyIF89ITEsdz0odC5waXhlbFJhdGlvfHxwYXJzZUZsb2F0KHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSx0LmNhbnZhcyk7aWYoIXcpaWYodz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0LmNvbnRhaW5lcil7dmFyIEE9dC5jb250YWluZXI7QS5hcHBlbmRDaGlsZCh3KX1lbHNlIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodyk7dmFyIGs9dC5nbDtpZihrfHwoaz1pKHcsdC5nbE9wdGlvbnN8fHtwcmVtdWx0aXBsaWVkQWxwaGE6ITAsYW50aWFsaWFzOiEwfSkpLCFrKXRocm93IG5ldyBFcnJvcigid2ViZ2wgbm90IHN1cHBvcnRlZCIpO3ZhciBNPXQuYm91bmRzfHxbWy0xMCwtMTAsLTEwXSxbMTAsMTAsMTBdXSxUPW5ldyBuLEU9ZChrLFtrLmRyYXdpbmdCdWZmZXJXaWR0aCxrLmRyYXdpbmdCdWZmZXJIZWlnaHRdLHtwcmVmZXJGbG9hdDohMH0pLEw9bShrKSxTPXQuY2FtZXJhfHx7ZXllOlsyLDAsMF0sY2VudGVyOlswLDAsMF0sdXA6WzAsMSwwXSx6b29tTWluOi4xLHpvb21NYXg6MTAwLG1vZGU6InR1cm50YWJsZSJ9LEM9dC5heGVzfHx7fSxQPWMoayxDKTtQLmVuYWJsZT0hQy5kaXNhYmxlO3ZhciB6PXQuc3Bpa2VzfHx7fSxSPWgoayx6KSxPPVtdLEk9W10sTj1bXSxqPVtdLEY9ITAsRD0hMCxCPW5ldyBBcnJheSgxNiksVT1uZXcgQXJyYXkoMTYpLFY9e3ZpZXc6bnVsbCxwcm9qZWN0aW9uOkIsbW9kZWw6VX0sRD0hMCxxPVtrLmRyYXdpbmdCdWZmZXJXaWR0aCxrLmRyYXdpbmdCdWZmZXJIZWlnaHRdLEg9e2dsOmssY29udGV4dExvc3Q6ITEscGl4ZWxSYXRpbzp0LnBpeGVsUmF0aW98fHBhcnNlRmxvYXQod2luZG93LmRldmljZVBpeGVsUmF0aW8pLGNhbnZhczp3LHNlbGVjdGlvbjpULGNhbWVyYTpsKHcsUyksYXhlczpQLGF4ZXNQaXhlbHM6bnVsbCxzcGlrZXM6Uixib3VuZHM6TSxvYmplY3RzOk8sc2hhcGU6cSxhc3BlY3Q6dC5hc3BlY3RSYXRpb3x8WzEsMSwxXSxwaWNrUmFkaXVzOnQucGlja1JhZGl1c3x8MTAsek5lYXI6dC56TmVhcnx8LjAxLHpGYXI6dC56RmFyfHwxZTMsZm92eTp0LmZvdnl8fE1hdGguUEkvNCxjbGVhckNvbG9yOnQuY2xlYXJDb2xvcnx8WzAsMCwwLDBdLGF1dG9SZXNpemU6YSh0LmF1dG9SZXNpemUpLGF1dG9Cb3VuZHM6YSh0LmF1dG9Cb3VuZHMpLGF1dG9TY2FsZTohIXQuYXV0b1NjYWxlLGF1dG9DZW50ZXI6YSh0LmF1dG9DZW50ZXIpLGNsaXBUb0JvdW5kczphKHQuY2xpcFRvQm91bmRzKSxzbmFwVG9EYXRhOiEhdC5zbmFwVG9EYXRhLG9uc2VsZWN0OnQub25zZWxlY3R8fG51bGwsb25yZW5kZXI6dC5vbnJlbmRlcnx8bnVsbCxvbmNsaWNrOnQub25jbGlja3x8bnVsbCxjYW1lcmFQYXJhbXM6VixvbmNvbnRleHRsb3NzOm51bGwsbW91c2VMaXN0ZW5lcjpudWxsfSxHPVtrLmRyYXdpbmdCdWZmZXJXaWR0aC9ILnBpeGVsUmF0aW98MCxrLmRyYXdpbmdCdWZmZXJIZWlnaHQvSC5waXhlbFJhdGlvfDBdO0guYXV0b1Jlc2l6ZSYmZSgpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGUpLEgudXBkYXRlPWZ1bmN0aW9uKHQpe198fCh0PXR8fHt9LEY9ITAsRD0hMCl9LEguYWRkPWZ1bmN0aW9uKHQpe198fCh0LmF4ZXM9UCxPLnB1c2godCksSS5wdXNoKC0xKSxGPSEwLEQ9ITAscigpKX0sSC5yZW1vdmU9ZnVuY3Rpb24odCl7aWYoIV8pe3ZhciBlPU8uaW5kZXhPZih0KTswPmV8fChPLnNwbGljZShlLDEpLEkucG9wKCksRj0hMCxEPSEwLHIoKSl9fSxILmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZighXyYmKF89ITAsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZSksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixzKSxILm1vdXNlTGlzdGVuZXIuZW5hYmxlZD0hMSwhSC5jb250ZXh0TG9zdCkpe1AuZGlzcG9zZSgpLFIuZGlzcG9zZSgpO2Zvcih2YXIgdD0wO3Q8Ty5sZW5ndGg7Kyt0KU9bdF0uZGlzcG9zZSgpO0UuZGlzcG9zZSgpO2Zvcih2YXIgdD0wO3Q8ai5sZW5ndGg7Kyt0KWpbdF0uZGlzcG9zZSgpO0wuZGlzcG9zZSgpLGs9bnVsbCxQPW51bGwsUj1udWxsLE89W119fTt2YXIgWT0hMSxYPTA7SC5tb3VzZUxpc3RlbmVyPWcodyxmdW5jdGlvbih0LGUscil7aWYoIV8pe3ZhciBuPWoubGVuZ3RoLGk9Ty5sZW5ndGgsbz1ULm9iamVjdDtULmRpc3RhbmNlPTEvMCxULm1vdXNlWzBdPWUsVC5tb3VzZVsxXT1yLFQub2JqZWN0PW51bGwsVC5zY3JlZW49bnVsbCxULmRhdGFDb29yZGluYXRlPVQuZGF0YVBvc2l0aW9uPW51bGw7dmFyIGE9ITE7aWYodCYmWClZPSEwO2Vsc2V7WSYmKEQ9ITApLFk9ITE7Zm9yKHZhciBzPTA7bj5zOysrcyl7dmFyIGw9altzXS5xdWVyeShlLEdbMV0tci0xLEgucGlja1JhZGl1cyk7aWYobCl7aWYobC5kaXN0YW5jZT5ULmRpc3RhbmNlKWNvbnRpbnVlO2Zvcih2YXIgYz0wO2k+YzsrK2Mpe3ZhciB1PU9bY107aWYoSVtjXT09PXMpe3ZhciBoPXUucGljayhsKTtoJiYoVC5idXR0b25zPXQsVC5zY3JlZW49bC5jb29yZCxULmRpc3RhbmNlPWwuZGlzdGFuY2UsVC5vYmplY3Q9dSxULmluZGV4PWguZGlzdGFuY2UsVC5kYXRhUG9zaXRpb249aC5wb3NpdGlvbixULmRhdGFDb29yZGluYXRlPWguZGF0YUNvb3JkaW5hdGUsVC5kYXRhPWgsYT0hMCl9fX19fW8mJm8hPT1ULm9iamVjdCYmKG8uaGlnaGxpZ2h0JiZvLmhpZ2hsaWdodChudWxsKSxGPSEwKSxULm9iamVjdCYmKFQub2JqZWN0LmhpZ2hsaWdodCYmVC5vYmplY3QuaGlnaGxpZ2h0KFQuZGF0YSksRj0hMCksYT1hfHxULm9iamVjdCE9PW8sYSYmSC5vbnNlbGVjdCYmSC5vbnNlbGVjdChUKSwxJnQmJiEoMSZYKSYmSC5vbmNsaWNrJiZILm9uY2xpY2soVCksWD10fX0pLHcuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIscyk7dmFyIFc9W1sxLzAsMS8wLDEvMF0sWy0oMS8wKSwtKDEvMCksLSgxLzApXV0sWj1bV1swXS5zbGljZSgpLFdbMV0uc2xpY2UoKV07cmV0dXJuIHgoKSxILnJlZHJhdz1mdW5jdGlvbigpe198fChGPSEwLGIoKSl9LEh9ZS5leHBvcnRzPXM7dmFyIGw9dCgiM2Qtdmlldy1jb250cm9scyIpLGM9dCgiZ2wtYXhlczNkIiksdT10KCJnbC1heGVzM2QvcHJvcGVydGllcyIpLGg9dCgiZ2wtc3Bpa2VzM2QiKSxmPXQoImdsLXNlbGVjdC1zdGF0aWMiKSxkPXQoImdsLWZibyIpLHA9dCgiYS1iaWctdHJpYW5nbGUiKSxnPXQoIm1vdXNlLWNoYW5nZSIpLHY9dCgiZ2wtbWF0NC9wZXJzcGVjdGl2ZSIpLG09dCgiLi9saWIvc2hhZGVyIil9LHsiLi9saWIvc2hhZGVyIjoxMjMsIjNkLXZpZXctY29udHJvbHMiOjEyNCwiYS1iaWctdHJpYW5nbGUiOjEyNiwiZ2wtYXhlczNkIjoxMjcsImdsLWF4ZXMzZC9wcm9wZXJ0aWVzIjoxMzcsImdsLWZibyI6ODAsImdsLW1hdDQvcGVyc3BlY3RpdmUiOjk3LCJnbC1zZWxlY3Qtc3RhdGljIjoxNTMsImdsLXNwaWtlczNkIjoxMzksIm1vdXNlLWNoYW5nZSI6MTk4fV0sMTQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17dmVydGV4OiJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzIgb2Zmc2V0O1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5cbnVuaWZvcm0gbWF0MyB2aWV3VHJhbnNmb3JtO1xudW5pZm9ybSB2ZWMyIHBpeGVsU2NhbGU7XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbnZlYzQgY29tcHV0ZVBvc2l0aW9uXzFfMCh2ZWMyIHBvc2l0aW9uLCB2ZWMyIG9mZnNldCwgbWF0MyB2aWV3LCB2ZWMyIHNjYWxlKSB7XG4gIHZlYzMgeHBvc2l0aW9uID0gdmlldyAqIHZlYzMocG9zaXRpb24sIDEuMCk7XG4gIHJldHVybiB2ZWM0KFxuICAgIHhwb3NpdGlvbi54eSArIHNjYWxlICogb2Zmc2V0ICogeHBvc2l0aW9uLnosXG4gICAgMCxcbiAgICB4cG9zaXRpb24ueik7XG59XG5cblxuXG5cbnZvaWQgbWFpbigpIHtcbiAgZnJhZ0NvbG9yID0gY29sb3I7XG5cbiAgZ2xfUG9zaXRpb24gPSBjb21wdXRlUG9zaXRpb25fMV8wKFxuICAgIHBvc2l0aW9uLFxuICAgIG9mZnNldCxcbiAgICB2aWV3VHJhbnNmb3JtLFxuICAgIHBpeGVsU2NhbGUpO1xufVxuIixmcmFnbWVudDoicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmcmFnQ29sb3IucmdiICogZnJhZ0NvbG9yLmEsIGZyYWdDb2xvci5hKTtcbn1cbiIscGlja1ZlcnRleDoicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWMyIG9mZnNldDtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIG1hdDMgdmlld1RyYW5zZm9ybTtcbnVuaWZvcm0gdmVjMiBwaXhlbFNjYWxlO1xudW5pZm9ybSB2ZWM0IHBpY2tPZmZzZXQ7XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbnZlYzQgY29tcHV0ZVBvc2l0aW9uXzFfMCh2ZWMyIHBvc2l0aW9uLCB2ZWMyIG9mZnNldCwgbWF0MyB2aWV3LCB2ZWMyIHNjYWxlKSB7XG4gIHZlYzMgeHBvc2l0aW9uID0gdmlldyAqIHZlYzMocG9zaXRpb24sIDEuMCk7XG4gIHJldHVybiB2ZWM0KFxuICAgIHhwb3NpdGlvbi54eSArIHNjYWxlICogb2Zmc2V0ICogeHBvc2l0aW9uLnosXG4gICAgMCxcbiAgICB4cG9zaXRpb24ueik7XG59XG5cblxuXG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjNCBmcmFnSWQgPSBpZCArIHBpY2tPZmZzZXQ7XG5cbiAgZnJhZ0lkLnkgKz0gZmxvb3IoZnJhZ0lkLnggLyAyNTYuMCk7XG4gIGZyYWdJZC54IC09IGZsb29yKGZyYWdJZC54IC8gMjU2LjApICogMjU2LjA7XG5cbiAgZnJhZ0lkLnogKz0gZmxvb3IoZnJhZ0lkLnkgLyAyNTYuMCk7XG4gIGZyYWdJZC55IC09IGZsb29yKGZyYWdJZC55IC8gMjU2LjApICogMjU2LjA7XG5cbiAgZnJhZ0lkLncgKz0gZmxvb3IoZnJhZ0lkLnogLyAyNTYuMCk7XG4gIGZyYWdJZC56IC09IGZsb29yKGZyYWdJZC56IC8gMjU2LjApICogMjU2LjA7XG5cbiAgZnJhZ0NvbG9yID0gZnJhZ0lkIC8gMjU1LjA7XG5cbiAgZ2xfUG9zaXRpb24gPSBjb21wdXRlUG9zaXRpb25fMV8wKFxuICAgIHBvc2l0aW9uLFxuICAgIG9mZnNldCxcbiAgICB2aWV3VHJhbnNmb3JtLFxuICAgIHBpeGVsU2NhbGUpO1xufVxuIixwaWNrRnJhZ21lbnQ6InByZWNpc2lvbiBsb3dwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvcjtcbn1cbiJ9fSx7fV0sMTQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7aWYodCBpbiBmKXJldHVybiBmW3RdO3ZhciBlPXUodCx7cG9seWdvbnM6ITAsZm9udDoic2Fucy1zZXJpZiIsdGV4dEFsaWduOiJsZWZ0Iix0ZXh0QmFzZWxpbmU6ImFscGhhYmV0aWMifSkscj1bXSxuPVtdO2UuZm9yRWFjaChmdW5jdGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciBpPXRbKGUrdC5sZW5ndGgtMSkldC5sZW5ndGhdLG89dFtlXSxhPXRbKGUrMSkldC5sZW5ndGhdLHM9dFsoZSsyKSV0Lmxlbmd0aF0sbD1vWzBdLWlbMF0sYz1vWzFdLWlbMV0sdT1NYXRoLnNxcnQobCpsK2MqYyk7bC89dSxjLz11LHIucHVzaChpWzBdLGlbMV0rMS40KSxuLnB1c2goYywtbCksci5wdXNoKGlbMF0saVsxXSsxLjQpLG4ucHVzaCgtYyxsKSxyLnB1c2gob1swXSxvWzFdKzEuNCksbi5wdXNoKC1jLGwpLHIucHVzaChvWzBdLG9bMV0rMS40KSxuLnB1c2goLWMsbCksci5wdXNoKGlbMF0saVsxXSsxLjQpLG4ucHVzaChjLC1sKSxyLnB1c2gob1swXSxvWzFdKzEuNCksbi5wdXNoKGMsLWwpO3ZhciBoPXNbMF0tYVswXSxmPXNbMV0tYVsxXSxkPU1hdGguc3FydChoKmgrZipmKTtoLz1kLGYvPWQsci5wdXNoKG9bMF0sb1sxXSsxLjQpLG4ucHVzaChjLC1sKSxyLnB1c2gob1swXSxvWzFdKzEuNCksbi5wdXNoKC1jLGwpLHIucHVzaChhWzBdLGFbMV0rMS40KSxuLnB1c2goLWYsaCksci5wdXNoKGFbMF0sYVsxXSsxLjQpLG4ucHVzaCgtZixoKSxyLnB1c2gob1swXSxvWzFdKzEuNCksbi5wdXNoKGYsLWgpLHIucHVzaChhWzBdLGFbMV0rMS40KSxuLnB1c2goZiwtaCl9fSl9KTtmb3IodmFyIGk9WzEvMCwxLzAsLSgxLzApLC0oMS8wKV0sbz0wO288ci5sZW5ndGg7bys9Milmb3IodmFyIGE9MDsyPmE7KythKWlbYV09TWF0aC5taW4oaVthXSxyW28rYV0pLGlbMithXT1NYXRoLm1heChpWzIrYV0scltvK2FdKTtyZXR1cm4gZlt0XT17Y29vcmRzOnIsbm9ybWFsczpuLGJvdW5kczppfX1mdW5jdGlvbiBpKHQsZSxyLG4saSxvLGEpe3RoaXMucGxvdD10LHRoaXMuc2hhZGVyPWUsdGhpcy5waWNrU2hhZGVyPXIsdGhpcy5wb3NpdGlvbkJ1ZmZlcj1uLHRoaXMub2Zmc2V0QnVmZmVyPWksdGhpcy5jb2xvckJ1ZmZlcj1vLHRoaXMuaWRCdWZmZXI9YSx0aGlzLmJvdW5kcz1bMS8wLDEvMCwtKDEvMCksLSgxLzApXSx0aGlzLm51bVBvaW50cz0wLHRoaXMubnVtVmVydGljZXM9MCx0aGlzLnBpY2tPZmZzZXQ9MCx0aGlzLnBvaW50cz1udWxsfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj10LmdsLG49YShyLGgudmVydGV4LGguZnJhZ21lbnQpLG89YShyLGgucGlja1ZlcnRleCxoLnBpY2tGcmFnbWVudCksbD1zKHIpLGM9cyhyKSx1PXMociksZj1zKHIpLGQ9bmV3IGkodCxuLG8sbCxjLHUsZik7cmV0dXJuIGQudXBkYXRlKGUpLHQuYWRkT2JqZWN0KGQpLGR9ZS5leHBvcnRzPW87dmFyIGE9dCgiZ2wtc2hhZGVyIikscz10KCJnbC1idWZmZXIiKSxsPXQoInRleHQtY2FjaGUiKSxjPXQoInR5cGVkYXJyYXktcG9vbCIpLHU9dCgidmVjdG9yaXplLXRleHQiKSxoPXQoIi4vbGliL3NoYWRlcnMiKSxmPXt9LGQ9aS5wcm90b3R5cGU7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PXRoaXMucGxvdCxuPXRoaXMuYm91bmRzLGk9dC52aWV3Qm94LG89dC5kYXRhQm94LGE9dC5waXhlbFJhdGlvLHM9blsyXS1uWzBdLGw9blszXS1uWzFdLGM9b1syXS1vWzBdLHU9b1szXS1vWzFdO2VbMF09MipzL2MsZVs0XT0yKmwvdSxlWzZdPTIqKG5bMF0tb1swXSkvYy0xLGVbN109MiooblsxXS1vWzFdKS91LTE7dmFyIGg9aVsyXS1pWzBdLGY9aVszXS1pWzFdO3JbMF09MiphL2gsclsxXT0yKmEvZn12YXIgZT1bMSwwLDAsMCwxLDAsMCwwLDFdLHI9WzEsMV07ZC5kcmF3PWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5wbG90LGk9dGhpcy5zaGFkZXIsbz10aGlzLm51bVZlcnRpY2VzO2lmKG8pe3ZhciBhPW4uZ2w7dC5jYWxsKHRoaXMpLGkuYmluZCgpLGkudW5pZm9ybXMucGl4ZWxTY2FsZT1yLGkudW5pZm9ybXMudmlld1RyYW5zZm9ybT1lLHRoaXMucG9zaXRpb25CdWZmZXIuYmluZCgpLGkuYXR0cmlidXRlcy5wb3NpdGlvbi5wb2ludGVyKCksdGhpcy5vZmZzZXRCdWZmZXIuYmluZCgpLGkuYXR0cmlidXRlcy5vZmZzZXQucG9pbnRlcigpLHRoaXMuY29sb3JCdWZmZXIuYmluZCgpLGkuYXR0cmlidXRlcy5jb2xvci5wb2ludGVyKGEuVU5TSUdORURfQllURSwhMCksYS5kcmF3QXJyYXlzKGEuVFJJQU5HTEVTLDAsbyl9fTt2YXIgbj1bMCwwLDAsMF07ZC5kcmF3UGljaz1mdW5jdGlvbihpKXt2YXIgbz10aGlzLnBsb3QsYT10aGlzLnBpY2tTaGFkZXIscz10aGlzLm51bVZlcnRpY2VzLGw9by5nbDtpZih0aGlzLnBpY2tPZmZzZXQ9aSwhcylyZXR1cm4gaTtmb3IodmFyIGM9MDs0PmM7KytjKW5bY109aT4+OCpjJjI1NTtyZXR1cm4gdC5jYWxsKHRoaXMpLGEuYmluZCgpLGEudW5pZm9ybXMucGl4ZWxTY2FsZT1yLGEudW5pZm9ybXMudmlld1RyYW5zZm9ybT1lLGEudW5pZm9ybXMucGlja09mZnNldD1uLHRoaXMucG9zaXRpb25CdWZmZXIuYmluZCgpLGEuYXR0cmlidXRlcy5wb3NpdGlvbi5wb2ludGVyKCksdGhpcy5vZmZzZXRCdWZmZXIuYmluZCgpLGEuYXR0cmlidXRlcy5vZmZzZXQucG9pbnRlcigpLHRoaXMuaWRCdWZmZXIuYmluZCgpLGEuYXR0cmlidXRlcy5pZC5wb2ludGVyKGwuVU5TSUdORURfQllURSwhMSksbC5kcmF3QXJyYXlzKGwuVFJJQU5HTEVTLDAscyksaSt0aGlzLm51bVBvaW50c319KCksZC5waWNrPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnBpY2tPZmZzZXQsaT10aGlzLm51bVBvaW50cztpZihuPnJ8fHI+PW4raSlyZXR1cm4gbnVsbDt2YXIgbz1yLW4sYT10aGlzLnBvaW50cztyZXR1cm57b2JqZWN0OnRoaXMscG9pbnRJZDpvLGRhdGFDb29yZDpbYVsyKm9dLGFbMipvKzFdXX19LGQudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dC5wb3NpdGlvbnN8fFtdLHI9dC5jb2xvcnN8fFtdLGk9dC5nbHlwaHN8fFtdLG89dC5zaXplc3x8W10sYT10LmJvcmRlcldpZHRoc3x8W10scz10LmJvcmRlckNvbG9yc3x8W107dGhpcy5wb2ludHM9ZTtmb3IodmFyIHU9dGhpcy5ib3VuZHM9WzEvMCwxLzAsLSgxLzApLC0oMS8wKV0saD0wLGY9MDtmPGkubGVuZ3RoOysrZil7aCs9bCgic2Fucy1zZXJpZiIsaVtmXSkuZGF0YS5sZW5ndGgrbihpW2ZdKS5jb29yZHMubGVuZ3RoPj4xO2Zvcih2YXIgZD0wOzI+ZDsrK2QpdVtkXT1NYXRoLm1pbih1W2RdLGVbMipmK2RdKSx1WzIrZF09TWF0aC5tYXgodVsyK2RdLGVbMipmK2RdKX11WzBdPT09dVsyXSYmKHVbMl0rPTEpLHVbM109PT11WzFdJiYodVszXSs9MSk7Zm9yKHZhciBwPTEvKHVbMl0tdVswXSksZz0xLyh1WzNdLXVbMV0pLHY9dVswXSxtPXVbMV0seT1jLm1hbGxvY0Zsb2F0MzIoMipoKSxiPWMubWFsbG9jRmxvYXQzMigyKmgpLHg9Yy5tYWxsb2NVaW50OCg0KmgpLF89Yy5tYWxsb2NVaW50MzIoaCksdz0wLGY9MDtmPGkubGVuZ3RoOysrZil7Zm9yKHZhciBBPWwoInNhbnMtc2VyaWYiLGlbZl0pLGs9bihpW2ZdKSxNPXAqKGVbMipmXS12KSxUPWcqKGVbMipmKzFdLW0pLEU9b1tmXSxMPTI1NSpyWzQqZl0sUz0yNTUqcls0KmYrMV0sQz0yNTUqcls0KmYrMl0sUD0yNTUqcls0KmYrM10sej0uNSooay5ib3VuZHNbMF0ray5ib3VuZHNbMl0pLFI9LjUqKGsuYm91bmRzWzFdK2suYm91bmRzWzNdKSxkPTA7ZDxBLmRhdGEubGVuZ3RoO2QrPTIpeVsyKnddPU0seVsyKncrMV09VCxiWzIqd109LUUqKEEuZGF0YVtkXS16KSxiWzIqdysxXT0tRSooQS5kYXRhW2QrMV0tUikseFs0KnddPUwseFs0KncrMV09Uyx4WzQqdysyXT1DLHhbNCp3KzNdPVAsX1t3XT1mLHcrPTE7dmFyIE89YVtmXTtMPTI1NSpzWzQqZl0sUz0yNTUqc1s0KmYrMV0sQz0yNTUqc1s0KmYrMl0sUD0yNTUqc1s0KmYrM107Zm9yKHZhciBkPTA7ZDxrLmNvb3Jkcy5sZW5ndGg7ZCs9Mil5WzIqd109TSx5WzIqdysxXT1ULGJbMip3XT0tKEUqKGsuY29vcmRzW2RdLXopK08qay5ub3JtYWxzW2RdKSxiWzIqdysxXT0tKEUqKGsuY29vcmRzW2QrMV0tUikrTyprLm5vcm1hbHNbZCsxXSkseFs0KnddPUwseFs0KncrMV09Uyx4WzQqdysyXT1DLHhbNCp3KzNdPVAsX1t3XT1mLHcrPTF9dGhpcy5udW1Qb2ludHM9aS5sZW5ndGgsdGhpcy5udW1WZXJ0aWNlcz1oLHRoaXMucG9zaXRpb25CdWZmZXIudXBkYXRlKHkpLHRoaXMub2Zmc2V0QnVmZmVyLnVwZGF0ZShiKSx0aGlzLmNvbG9yQnVmZmVyLnVwZGF0ZSh4KSx0aGlzLmlkQnVmZmVyLnVwZGF0ZShfKSxjLmZyZWUoeSksYy5mcmVlKGIpLGMuZnJlZSh4KSxjLmZyZWUoXyl9LGQuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBpY2tTaGFkZXIuZGlzcG9zZSgpLHRoaXMucG9zaXRpb25CdWZmZXIuZGlzcG9zZSgpLHRoaXMub2Zmc2V0QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmNvbG9yQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmlkQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnBsb3QucmVtb3ZlT2JqZWN0KHRoaXMpfX0seyIuL2xpYi9zaGFkZXJzIjoxNDEsImdsLWJ1ZmZlciI6NzUsImdsLXNoYWRlciI6MTU0LCJ0ZXh0LWNhY2hlIjoyMzAsInR5cGVkYXJyYXktcG9vbCI6MjM1LCJ2ZWN0b3JpemUtdGV4dCI6MjM3fV0sMTQzOltmdW5jdGlvbih0LGUscil7ci5wb2ludFZlcnRleD0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbmF0dHJpYnV0ZSBmbG9hdCB3ZWlnaHQ7XG5cbnVuaWZvcm0gbWF0MyBtYXRyaXg7XG51bmlmb3JtIGZsb2F0IHBvaW50U2l6ZSwgdXNlV2VpZ2h0O1xuXG52YXJ5aW5nIGZsb2F0IGZyYWdXZWlnaHQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBoZ1Bvc2l0aW9uID0gbWF0cml4ICogdmVjMyhwb3NpdGlvbiwgMSk7XG4gIGdsX1Bvc2l0aW9uICA9IHZlYzQoaGdQb3NpdGlvbi54eSwgMCwgaGdQb3NpdGlvbi56KTtcbiAgZ2xfUG9pbnRTaXplID0gcG9pbnRTaXplO1xuICBmcmFnV2VpZ2h0ID0gbWl4KDEuMCwgd2VpZ2h0LCB1c2VXZWlnaHQpO1xufVxuIixyLnBvaW50RnJhZ21lbnQ9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yLCBib3JkZXJDb2xvcjtcbnVuaWZvcm0gZmxvYXQgY2VudGVyRnJhY3Rpb247XG5cbnZhcnlpbmcgZmxvYXQgZnJhZ1dlaWdodDtcblxuZmxvYXQgc21vb3RoU3RlcChmbG9hdCB4LCBmbG9hdCB5KSB7XG4gIHJldHVybiAxLjAgLyAoMS4wICsgZXhwKDUwLjAqKHggLSB5KSkpO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IHJhZGl1cyA9IGxlbmd0aCgyLjAqZ2xfUG9pbnRDb29yZC54eS0xLjApO1xuICBpZihyYWRpdXMgPiAxLjApIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIHZlYzQgYmFzZUNvbG9yID0gbWl4KGJvcmRlckNvbG9yLCBjb2xvciwgc21vb3RoU3RlcChyYWRpdXMsIGNlbnRlckZyYWN0aW9uKSk7XG4gIGZsb2F0IGFscGhhID0gMS4wIC0gcG93KDEuMCAtIGJhc2VDb2xvci5hLCBmcmFnV2VpZ2h0KTtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IucmdiICogYWxwaGEsIGFscGhhKTtcbn1cbiIsci5waWNrVmVydGV4PSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgcGlja0lkO1xuXG51bmlmb3JtIG1hdDMgbWF0cml4O1xudW5pZm9ybSBmbG9hdCBwb2ludFNpemU7XG51bmlmb3JtIHZlYzQgcGlja09mZnNldDtcblxudmFyeWluZyB2ZWM0IGZyYWdJZDtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIGhnUG9zaXRpb24gPSBtYXRyaXggKiB2ZWMzKHBvc2l0aW9uLCAxKTtcbiAgZ2xfUG9zaXRpb24gID0gdmVjNChoZ1Bvc2l0aW9uLnh5LCAwLCBoZ1Bvc2l0aW9uLnopO1xuICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7XG5cbiAgdmVjNCBpZCA9IHBpY2tJZCArIHBpY2tPZmZzZXQ7XG4gIGlkLnkgKz0gZmxvb3IoaWQueCAvIDI1Ni4wKTtcbiAgaWQueCAtPSBmbG9vcihpZC54IC8gMjU2LjApICogMjU2LjA7XG5cbiAgaWQueiArPSBmbG9vcihpZC55IC8gMjU2LjApO1xuICBpZC55IC09IGZsb29yKGlkLnkgLyAyNTYuMCkgKiAyNTYuMDtcblxuICBpZC53ICs9IGZsb29yKGlkLnogLyAyNTYuMCk7XG4gIGlkLnogLT0gZmxvb3IoaWQueiAvIDI1Ni4wKSAqIDI1Ni4wO1xuXG4gIGZyYWdJZCA9IGlkO1xufVxuIixyLnBpY2tGcmFnbWVudD0icHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0lkO1xuXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IHJhZGl1cyA9IGxlbmd0aCgyLjAqZ2xfUG9pbnRDb29yZC54eS0xLjApO1xuICBpZihyYWRpdXMgPiAxLjApIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IGZyYWdJZCAvIDI1NS4wO1xufVxuIn0se31dLDE0NDpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsxMjFdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDoxMjF9XSwxNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLG8pezQqZj49bz9pKDAsby0xLHQsZSxyLG4pOmgoMCxvLTEsdCxlLHIsbil9ZnVuY3Rpb24gaSh0LGUscixuLGksbyl7Zm9yKHZhciBhPXQrMTtlPj1hOysrYSl7Zm9yKHZhciBzPXJbYV0sbD1uWzIqYV0sYz1uWzIqYSsxXSx1PWlbYV0saD1vW2FdLGY9YTtmPnQ7KXt2YXIgZD1yW2YtMV0scD1uWzIqKGYtMSldO2lmKChkLXN8fGwtcCk+PTApYnJlYWs7cltmXT1kLG5bMipmXT1wLG5bMipmKzFdPW5bMipmLTFdLGlbZl09aVtmLTFdLG9bZl09b1tmLTFdLGYtPTF9cltmXT1zLG5bMipmXT1sLG5bMipmKzFdPWMsaVtmXT11LG9bZl09aH19ZnVuY3Rpb24gbyh0LGUscixuLGksbyl7dmFyIGE9clt0XSxzPW5bMip0XSxsPW5bMip0KzFdLGM9aVt0XSx1PW9bdF07clt0XT1yW2VdLG5bMip0XT1uWzIqZV0sblsyKnQrMV09blsyKmUrMV0saVt0XT1pW2VdLG9bdF09b1tlXSxyW2VdPWEsblsyKmVdPXMsblsyKmUrMV09bCxpW2VdPWMsb1tlXT11fWZ1bmN0aW9uIGEodCxlLHIsbixpLG8pe3JbdF09cltlXSxuWzIqdF09blsyKmVdLG5bMip0KzFdPW5bMiplKzFdLGlbdF09aVtlXSxvW3RdPW9bZV19ZnVuY3Rpb24gcyh0LGUscixuLGksbyxhKXt2YXIgcz1uW3RdLGw9aVsyKnRdLGM9aVsyKnQrMV0sdT1vW3RdLGg9YVt0XTtuW3RdPW5bZV0saVsyKnRdPWlbMiplXSxpWzIqdCsxXT1pWzIqZSsxXSxvW3RdPW9bZV0sYVt0XT1hW2VdLG5bZV09bltyXSxpWzIqZV09aVsyKnJdLGlbMiplKzFdPWlbMipyKzFdLG9bZV09b1tyXSxhW2VdPWFbcl0sbltyXT1zLGlbMipyXT1sLGlbMipyKzFdPWMsb1tyXT11LGFbcl09aH1mdW5jdGlvbiBsKHQsZSxyLG4saSxvLGEscyxsLGMsdSl7c1t0XT1zW2VdLGxbMip0XT1sWzIqZV0sbFsyKnQrMV09bFsyKmUrMV0sY1t0XT1jW2VdLHVbdF09dVtlXSxzW2VdPXIsbFsyKmVdPW4sbFsyKmUrMV09aSxjW2VdPW8sdVtlXT1hfWZ1bmN0aW9uIGModCxlLHIsbixpKXtyZXR1cm4oclt0XS1yW2VdfHxuWzIqZV0tblsyKnRdfHxpW3RdLWlbZV0pPDB9ZnVuY3Rpb24gdSh0LGUscixuLGksbyxhLHMpe3JldHVybihlLW9bdF18fGFbMip0XS1yfHxpLXNbdF0pPDB9ZnVuY3Rpb24gaCh0LGUscixuLGQscCl7dmFyIGc9KGUtdCsxKS82fDAsdj10K2csbT1lLWcseT10K2U+PjEsYj15LWcseD15K2csXz12LHc9YixBPXksaz14LE09bSxUPXQrMSxFPWUtMSxMPTA7YyhfLHcscixuLGQscCkmJihMPV8sXz13LHc9TCksYyhrLE0scixuLGQscCkmJihMPWssaz1NLE09TCksYyhfLEEscixuLGQscCkmJihMPV8sXz1BLEE9TCksYyh3LEEscixuLGQscCkmJihMPXcsdz1BLEE9TCksYyhfLGsscixuLGQscCkmJihMPV8sXz1rLGs9TCksYyhBLGsscixuLGQscCkmJihMPUEsQT1rLGs9TCksYyh3LE0scixuLGQscCkmJihMPXcsdz1NLE09TCksYyh3LEEscixuLGQscCkmJihMPXcsdz1BLEE9TCksYyhrLE0scixuLGQscCkmJihMPWssaz1NLE09TCk7dmFyIFM9clt3XSxDPW5bMip3XSxQPW5bMip3KzFdLHo9ZFt3XSxSPXBbd10sTz1yW2tdLEk9blsyKmtdLE49blsyKmsrMV0saj1kW2tdLEY9cFtrXSxEPV8sQj1BLFU9TSxWPXYscT15LEg9bSxHPXJbRF0sWT1yW0JdLFg9cltVXTtyW1ZdPUcscltxXT1ZLHJbSF09WDtmb3IodmFyIFc9MDsyPlc7KytXKXt2YXIgWj1uWzIqRCtXXSwkPW5bMipCK1ddLEs9blsyKlUrV107blsyKlYrV109WixuWzIqcStXXT0kLG5bMipIK1ddPUt9dmFyIFE9ZFtEXSxKPWRbQl0sdHQ9ZFtVXTtkW1ZdPVEsZFtxXT1KLGRbSF09dHQ7dmFyIGV0PXBbRF0scnQ9cFtCXSxudD1wW1VdO3BbVl09ZXQscFtxXT1ydCxwW0hdPW50LGEoYix0LHIsbixkLHApLGEoeCxlLHIsbixkLHApO2Zvcih2YXIgaXQ9VDtFPj1pdDsrK2l0KWlmKHUoaXQsUyxDLFAseixyLG4sZCkpaXQhPT1UJiZvKGl0LFQscixuLGQscCksKytUO2Vsc2UgaWYoIXUoaXQsTyxJLE4saixyLG4sZCkpZm9yKDs7KXtpZih1KEUsTyxJLE4saixyLG4sZCkpe3UoRSxTLEMsUCx6LHIsbixkKT8ocyhpdCxULEUscixuLGQscCksKytULC0tRSk6KG8oaXQsRSxyLG4sZCxwKSwtLUUpO2JyZWFrfWlmKC0tRTxpdClicmVha31sKHQsVC0xLFMsQyxQLHosUixyLG4sZCxwKSxsKGUsRSsxLE8sSSxOLGosRixyLG4sZCxwKSxmPj1ULTItdD9pKHQsVC0yLHIsbixkLHApOmgodCxULTIscixuLGQscCksZj49ZS0oRSsyKT9pKEUrMixlLHIsbixkLHApOmgoRSsyLGUscixuLGQscCksZj49RS1UP2koVCxFLHIsbixkLHApOmgoVCxFLHIsbixkLHApfWUuZXhwb3J0cz1uO3ZhciBmPTMyfSx7fV0sMTQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixpLG8sYSxzKXtmb3IodmFyIGw9cixjPXI7bj5jOysrYyl7dmFyIHU9dFsyKmNdLGg9dFsyKmMrMV0sZj1lW2NdO3U+PWkmJmE+PXUmJmg+PW8mJnM+PWgmJihjPT09bD9sKz0xOih0WzIqY109dFsyKmxdLHRbMipjKzFdPXRbMipsKzFdLGVbY109ZVtsXSx0WzIqbF09dSx0WzIqbCsxXT1oLGVbbF09ZixsKz0xKSl9cmV0dXJuIGx9ZnVuY3Rpb24gaSh0LGUscil7dGhpcy5waXhlbFNpemU9dCx0aGlzLm9mZnNldD1lLHRoaXMuY291bnQ9cn1mdW5jdGlvbiBvKHQsZSxyLG8pe2Z1bmN0aW9uIGwoaSxvLGEscyxjLHUpe3ZhciBoPS41KmEsZj1zKzEsZD1jLXM7cltfXT1kLHhbXysrXT11O2Zvcih2YXIgcD0wOzI+cDsrK3ApZm9yKHZhciBnPTA7Mj5nOysrZyl7dmFyIHY9aStwKmgsbT1vK2cqaCx5PW4odCxlLGYsYyx2LG0sditoLG0raCk7aWYoeSE9PWYpe2lmKHktZj49TWF0aC5tYXgoLjkqZCwzMikpe3ZhciBiPWMrcz4+PjE7bCh2LG0saCxmLGIsdSsxKSxmPWJ9bCh2LG0saCxmLHksdSsxKSxmPXl9fX12YXIgYz10Lmxlbmd0aD4+PjE7aWYoMT5jKXJldHVybltdO2Zvcih2YXIgdT0xLzAsaD0xLzAsZj0tKDEvMCksZD0tKDEvMCkscD0wO2M+cDsrK3Ape3ZhciBnPXRbMipwXSx2PXRbMipwKzFdO3U9TWF0aC5taW4odSxnKSxmPU1hdGgubWF4KGYsZyksaD1NYXRoLm1pbihoLHYpLGQ9TWF0aC5tYXgoZCx2KSxlW3BdPXB9dT09PWYmJihmKz0xK01hdGguYWJzKGYpKSxoPT09ZCYmKGQrPTErTWF0aC5hYnMoZikpO3ZhciBtPTEvKGYtdSkseT0xLyhkLWgpLGI9TWF0aC5tYXgoZi11LGQtaCk7bz1vfHxbMCwwLDAsMF0sb1swXT11LG9bMV09aCxvWzJdPWYsb1szXT1kO3ZhciB4PWEubWFsbG9jSW50MzIoYyksXz0wO2wodSxoLGIsMCxjLDApLHMoeCx0LGUscixjKTtmb3IodmFyIHc9W10sQT0wLGs9YyxfPWMtMTtfPj0wOy0tXyl7dFsyKl9dPSh0WzIqX10tdSkqbSx0WzIqXysxXT0odFsyKl8rMV0taCkqeTt2YXIgTT14W19dO00hPT1BJiYody5wdXNoKG5ldyBpKGIqTWF0aC5wb3coLjUsTSksXysxLGstKF8rMSkpKSxrPV8rMSxBPU0pfXJldHVybiB3LnB1c2gobmV3IGkoYipNYXRoLnBvdyguNSxNKzEpLDAsaykpLGEuZnJlZSh4KSx3fXZhciBhPXQoInR5cGVkYXJyYXktcG9vbCIpLHM9dCgiLi9saWIvc29ydCIpO2UuZXhwb3J0cz1vfSx7Ii4vbGliL3NvcnQiOjE0NSwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwxNDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGksbyl7dGhpcy5wbG90PXQsdGhpcy5vZmZzZXRCdWZmZXI9ZSx0aGlzLnBpY2tCdWZmZXI9cix0aGlzLndlaWdodEJ1ZmZlcj1uLHRoaXMuc2hhZGVyPWksdGhpcy5waWNrU2hhZGVyPW8sdGhpcy5zY2FsZXM9W10sdGhpcy5zaXplPTEyLHRoaXMuYm9yZGVyU2l6ZT0xLHRoaXMucG9pbnRDb3VudD0wLHRoaXMuY29sb3I9WzEsMCwwLDFdLHRoaXMuYm9yZGVyQ29sb3I9WzAsMCwwLDFdLHRoaXMuYm91bmRzPVsxLzAsMS8wLC0oMS8wKSwtKDEvMCldLHRoaXMucGlja09mZnNldD0wLHRoaXMucG9pbnRzPW51bGwsdGhpcy54Q29vcmRzPW51bGx9ZnVuY3Rpb24gaSh0LGUpe3ZhciByPXQuZ2wsaT1hKHIpLHM9YShyKSxsPWEociksYz1vKHIsdS5wb2ludFZlcnRleCx1LnBvaW50RnJhZ21lbnQpLGg9byhyLHUucGlja1ZlcnRleCx1LnBpY2tGcmFnbWVudCksZj1uZXcgbih0LGkscyxsLGMsaCk7cmV0dXJuIGYudXBkYXRlKGUpLHQuYWRkT2JqZWN0KGYpLGZ9dmFyIG89dCgiZ2wtc2hhZGVyIiksYT10KCJnbC1idWZmZXIiKSxzPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksbD10KCJzbmFwLXBvaW50cy0yZCIpLGM9dCgidHlwZWRhcnJheS1wb29sIiksdT10KCIuL2xpYi9zaGFkZXIiKTtlLmV4cG9ydHM9aTt2YXIgaD1uLnByb3RvdHlwZTtoLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLm9mZnNldEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5waWNrQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnhDb29yZHMmJmMuZnJlZSh0aGlzLnhDb29yZHMpLHRoaXMucGxvdC5yZW1vdmVPYmplY3QodGhpcyl9LGgudXBkYXRlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyKXtyZXR1cm4gZSBpbiB0P3RbZV06cn10PXR8fHt9LHRoaXMuc2l6ZT1lKCJzaXplIiwxMiksdGhpcy5jb2xvcj1lKCJjb2xvciIsWzEsMCwwLDFdKS5zbGljZSgpLHRoaXMuYm9yZGVyU2l6ZT1lKCJib3JkZXJTaXplIiwxKSx0aGlzLmJvcmRlckNvbG9yPWUoImJvcmRlckNvbG9yIixbMCwwLDAsMV0pLnNsaWNlKCksdGhpcy54Q29vcmRzJiZjLmZyZWUodGhpcy54Q29vcmRzKTt2YXIgcj10LnBvc2l0aW9ucyxuPWMubWFsbG9jRmxvYXQzMihyLmxlbmd0aCksaT1jLm1hbGxvY0ludDMyKHIubGVuZ3RoPj4+MSk7bi5zZXQocik7dmFyIG89Yy5tYWxsb2NGbG9hdDMyKHIubGVuZ3RoKTt0aGlzLnBvaW50cz1yLHRoaXMuc2NhbGVzPWwobixpLG8sdGhpcy5ib3VuZHMpLHRoaXMub2Zmc2V0QnVmZmVyLnVwZGF0ZShuKSx0aGlzLnBpY2tCdWZmZXIudXBkYXRlKGkpLHRoaXMud2VpZ2h0QnVmZmVyLnVwZGF0ZShvKTtmb3IodmFyIGE9Yy5tYWxsb2NGbG9hdDMyKHIubGVuZ3RoPj4+MSkscz0wLHU9MDtzPHIubGVuZ3RoO3MrPTIsKyt1KWFbdV09bltzXTtjLmZyZWUoaSksYy5mcmVlKG4pLGMuZnJlZShvKSx0aGlzLnhDb29yZHM9YSx0aGlzLnBvaW50Q291bnQ9ci5sZW5ndGg+Pj4xLHRoaXMucGlja09mZnNldD0wfSxoLmRyYXdQaWNrPWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMCwwLDAsMSwwLDAsMCwxXSxlPVswLDAsMCwwXTtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dGhpcy5wbG90LGk9dGhpcy5waWNrU2hhZGVyLG89dGhpcy5zY2FsZXMsYT10aGlzLm9mZnNldEJ1ZmZlcixsPXRoaXMucGlja0J1ZmZlcixjPXRoaXMuYm91bmRzLHU9dGhpcy5zaXplLGg9dGhpcy5ib3JkZXJTaXplLGY9bi5nbCxkPW4ucGlja1BpeGVsUmF0aW8scD1uLnZpZXdCb3gsZz1uLmRhdGFCb3g7aWYoMD09PXRoaXMucG9pbnRDb3VudClyZXR1cm4gcjt2YXIgdj1jWzJdLWNbMF0sbT1jWzNdLWNbMV0seT1nWzJdLWdbMF0sYj1nWzNdLWdbMV0seD0ocFsyXS1wWzBdKSpkL24ucGl4ZWxSYXRpbyxfPShwWzNdLXBbMV0pKmQvbi5waXhlbFJhdGlvLHc9TWF0aC5taW4oeS94LGIvXyk7dFswXT0yKnYveSx0WzRdPTIqbS9iLHRbNl09MiooY1swXS1nWzBdKS95LTEsdFs3XT0yKihjWzFdLWdbMV0pL2ItMSx0aGlzLnBpY2tPZmZzZXQ9cixlWzBdPTI1NSZyLGVbMV09cj4+OCYyNTUsZVsyXT1yPj4xNiYyNTUsZVszXT1yPj4yNCYyNTUsaS5iaW5kKCksaS51bmlmb3Jtcy5tYXRyaXg9dCxpLnVuaWZvcm1zLmNvbG9yPXRoaXMuY29sb3IsaS51bmlmb3Jtcy5ib3JkZXJDb2xvcj10aGlzLmJvcmRlckNvbG9yLGkudW5pZm9ybXMucG9pbnRTaXplPWQqKHUraCksaS51bmlmb3Jtcy5waWNrT2Zmc2V0PWUsMD09PXRoaXMuYm9yZGVyU2l6ZT9pLnVuaWZvcm1zLmNlbnRlckZyYWN0aW9uPTI6aS51bmlmb3Jtcy5jZW50ZXJGcmFjdGlvbj11Lyh1K2grMS4yNSksYS5iaW5kKCksaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnBvaW50ZXIoKSxsLmJpbmQoKSxpLmF0dHJpYnV0ZXMucGlja0lkLnBvaW50ZXIoZi5VTlNJR05FRF9CWVRFKTtmb3IodmFyIEE9dGhpcy54Q29vcmRzLGs9KGdbMF0tY1swXS13KnUqZCkvdixNPShnWzJdLWNbMF0rdyp1KmQpL3YsVD1vLmxlbmd0aC0xO1Q+PTA7LS1UKXt2YXIgRT1vW1RdO2lmKCEoRS5waXhlbFNpemU8dyYmVD4xKSl7dmFyIEw9RS5vZmZzZXQsUz1FLmNvdW50K0wsQz1zLmdlKEEsayxMLFMtMSksUD1zLmx0KEEsTSxDLFMtMSkrMTtQPkMmJmYuZHJhd0FycmF5cyhmLlBPSU5UUyxDLFAtQyl9fXJldHVybiByK3RoaXMucG9pbnRDb3VudH19KCksaC5kcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMCwwLDAsMSwwLDAsMCwxXTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBsb3Qscj10aGlzLnNoYWRlcixuPXRoaXMuc2NhbGVzLGk9dGhpcy5vZmZzZXRCdWZmZXIsbz10aGlzLmJvdW5kcyxhPXRoaXMuc2l6ZSxsPXRoaXMuYm9yZGVyU2l6ZSxjPWUuZ2wsdT1lLnBpeGVsUmF0aW8saD1lLnZpZXdCb3gsZj1lLmRhdGFCb3g7aWYoMCE9PXRoaXMucG9pbnRDb3VudCl7dmFyIGQ9b1syXS1vWzBdLHA9b1szXS1vWzFdLGc9ZlsyXS1mWzBdLHY9ZlszXS1mWzFdLG09aFsyXS1oWzBdLHk9aFszXS1oWzFdLGI9TWF0aC5taW4oZy9tLHYveSk7dFswXT0yKmQvZyx0WzRdPTIqcC92LHRbNl09Mioob1swXS1mWzBdKS9nLTEsdFs3XT0yKihvWzFdLWZbMV0pL3YtMSxyLmJpbmQoKSxyLnVuaWZvcm1zLm1hdHJpeD10LHIudW5pZm9ybXMuY29sb3I9dGhpcy5jb2xvcixyLnVuaWZvcm1zLmJvcmRlckNvbG9yPXRoaXMuYm9yZGVyQ29sb3Isci51bmlmb3Jtcy5wb2ludFNpemU9dSooYStsKSxyLnVuaWZvcm1zLnVzZVdlaWdodD0xLDA9PT10aGlzLmJvcmRlclNpemU/ci51bmlmb3Jtcy5jZW50ZXJGcmFjdGlvbj0yOnIudW5pZm9ybXMuY2VudGVyRnJhY3Rpb249YS8oYStsKzEuMjUpLGkuYmluZCgpLHIuYXR0cmlidXRlcy5wb3NpdGlvbi5wb2ludGVyKCksdGhpcy53ZWlnaHRCdWZmZXIuYmluZCgpLHIuYXR0cmlidXRlcy53ZWlnaHQucG9pbnRlcigpO2Zvcih2YXIgeD10aGlzLnhDb29yZHMsXz0oZlswXS1vWzBdLWIqYSp1KS9kLHc9KGZbMl0tb1swXStiKmEqdSkvZCxBPSEwLGs9bi5sZW5ndGgtMTtrPj0wOy0tayl7dmFyIE09bltrXTtpZighKE0ucGl4ZWxTaXplPGImJms+MSkpe3ZhciBUPU0ub2Zmc2V0LEU9TS5jb3VudCtULEw9cy5nZSh4LF8sVCxFLTEpLFM9cy5sdCh4LHcsTCxFLTEpKzE7Uz5MJiZjLmRyYXdBcnJheXMoYy5QT0lOVFMsTCxTLUwpLEEmJihBPSExLHIudW5pZm9ybXMudXNlV2VpZ2h0PTApfX19fX0oKSxoLnBpY2s9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMucGlja09mZnNldCxpPXRoaXMucG9pbnRDb3VudDtpZihuPnJ8fHI+PW4raSlyZXR1cm4gbnVsbDt2YXIgbz1yLW4sYT10aGlzLnBvaW50cztyZXR1cm57b2JqZWN0OnRoaXMscG9pbnRJZDpvLGRhdGFDb29yZDpbYVsyKm9dLGFbMipvKzFdXX19fSx7Ii4vbGliL3NoYWRlciI6MTQzLCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MTQ0LCJnbC1idWZmZXIiOjc1LCJnbC1zaGFkZXIiOjE1NCwic25hcC1wb2ludHMtMmQiOjE0NiwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwxNDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPW9bZV07aWYocnx8KHI9b1tlXT17fSksdCBpbiByKXJldHVybiByW3RdO2Zvcih2YXIgbj1pKHQse3RleHRBbGlnbjoiY2VudGVyIix0ZXh0QmFzZWxpbmU6Im1pZGRsZSIsbGluZUhlaWdodDoxLGZvbnQ6ZX0pLGE9aSh0LHt0cmlhbmdsZXM6ITAsdGV4dEFsaWduOiJjZW50ZXIiLHRleHRCYXNlbGluZToibWlkZGxlIixsaW5lSGVpZ2h0OjEsZm9udDplfSkscz1bWzEvMCwxLzBdLFstKDEvMCksLSgxLzApXV0sbD0wO2w8bi5wb3NpdGlvbnMubGVuZ3RoOysrbClmb3IodmFyIGM9bi5wb3NpdGlvbnNbbF0sdT0wOzI+dTsrK3Upc1swXVt1XT1NYXRoLm1pbihzWzBdW3VdLGNbdV0pLHNbMV1bdV09TWF0aC5tYXgoc1sxXVt1XSxjW3VdKTtyZXR1cm4gclt0XT1bYSxuLHNdfXZhciBpPXQoInZlY3Rvcml6ZS10ZXh0Iik7ZS5leHBvcnRzPW47dmFyIG89e319LHsidmVjdG9yaXplLXRleHQiOjIzN31dLDE0OTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1pKHQsZSksbj1yLmF0dHJpYnV0ZXM7cmV0dXJuIG4ucG9zaXRpb24ubG9jYXRpb249MCxuLmNvbG9yLmxvY2F0aW9uPTEsbi5nbHlwaC5sb2NhdGlvbj0yLG4uaWQubG9jYXRpb249MyxyfXZhciBpPXQoImdsLXNoYWRlciIpLG89InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcbmF0dHJpYnV0ZSB2ZWMyIGdseXBoO1xuYXR0cmlidXRlIHZlYzQgaWQ7XG5cblxudW5pZm9ybSB2ZWM0IGhpZ2hsaWdodElkO1xudW5pZm9ybSBmbG9hdCBoaWdobGlnaHRTY2FsZTtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xuXG52YXJ5aW5nIHZlYzQgaW50ZXJwQ29sb3I7XG52YXJ5aW5nIHZlYzQgcGlja0lkO1xudmFyeWluZyB2ZWMzIGRhdGFDb29yZGluYXRlO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbihwb3NpdGlvbiwgY2xpcEJvdW5kc1swXSkpICAgfHwgXG4gICAgIGFueShncmVhdGVyVGhhbihwb3NpdGlvbiwgY2xpcEJvdW5kc1sxXSkpICkge1xuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwwKTtcbiAgfSBlbHNlIHtcbiAgICBmbG9hdCBzY2FsZSA9IDEuMDtcbiAgICBpZihkaXN0YW5jZShoaWdobGlnaHRJZCwgaWQpIDwgMC4wMDAxKSB7XG4gICAgICBzY2FsZSA9IGhpZ2hsaWdodFNjYWxlO1xuICAgIH1cblxuICAgIHZlYzQgd29ybGRQb3NpdGlvbiA9IG1vZGVsICogdmVjNChwb3NpdGlvbiwgMSk7XG4gICAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgICB2aWV3UG9zaXRpb24gPSB2aWV3UG9zaXRpb24gLyB2aWV3UG9zaXRpb24udztcbiAgICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiAodmlld1Bvc2l0aW9uICsgc2NhbGUgKiB2ZWM0KGdseXBoLngsIC1nbHlwaC55LCAwLCAwKSk7XG4gICAgXG4gICAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtcbiAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IHBvc2l0aW9uO1xuICB9XG59IixhPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiBnbHlwaDtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzIgc2NyZWVuU2l6ZTtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBoaWdobGlnaHRTY2FsZSwgcGl4ZWxSYXRpbztcbnVuaWZvcm0gdmVjNCBoaWdobGlnaHRJZDtcblxudmFyeWluZyB2ZWM0IGludGVycENvbG9yO1xudmFyeWluZyB2ZWM0IHBpY2tJZDtcbnZhcnlpbmcgdmVjMyBkYXRhQ29vcmRpbmF0ZTtcblxudm9pZCBtYWluKCkge1xuICBpZihhbnkobGVzc1RoYW4ocG9zaXRpb24sIGNsaXBCb3VuZHNbMF0pKSB8fCBhbnkoZ3JlYXRlclRoYW4ocG9zaXRpb24sIGNsaXBCb3VuZHNbMV0pKSkge1xuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwwKTtcbiAgfSBlbHNlIHtcbiAgICBmbG9hdCBzY2FsZSA9IHBpeGVsUmF0aW87XG4gICAgaWYoZGlzdGFuY2UoaGlnaGxpZ2h0SWQuYmdyLCBpZC5iZ3IpIDwgMC4wMDEpIHtcbiAgICAgIHNjYWxlICo9IGhpZ2hsaWdodFNjYWxlO1xuICAgIH1cblxuICAgIHZlYzQgd29ybGRQb3NpdGlvbiA9IG1vZGVsICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgICB2ZWM0IHZpZXdQb3NpdGlvbiA9IHZpZXcgKiB3b3JsZFBvc2l0aW9uO1xuICAgIHZlYzQgY2xpcFBvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXdQb3NpdGlvbjtcbiAgICBjbGlwUG9zaXRpb24gLz0gY2xpcFBvc2l0aW9uLnc7XG4gICAgXG4gICAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb24gKyB2ZWM0KHNjcmVlblNpemUgKiBzY2FsZSAqIHZlYzIoZ2x5cGgueCwgLWdseXBoLnkpLCAwLjAsIDAuMCk7XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtcbiAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IHBvc2l0aW9uO1xuICB9XG59IixzPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiBnbHlwaDtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIGZsb2F0IGhpZ2hsaWdodFNjYWxlO1xudW5pZm9ybSB2ZWM0IGhpZ2hsaWdodElkO1xudW5pZm9ybSB2ZWMzIGF4ZXNbMl07XG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzIgc2NyZWVuU2l6ZTtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBzY2FsZSwgcGl4ZWxSYXRpbztcblxudmFyeWluZyB2ZWM0IGludGVycENvbG9yO1xudmFyeWluZyB2ZWM0IHBpY2tJZDtcbnZhcnlpbmcgdmVjMyBkYXRhQ29vcmRpbmF0ZTtcblxudm9pZCBtYWluKCkge1xuICBpZihhbnkobGVzc1RoYW4ocG9zaXRpb24sIGNsaXBCb3VuZHNbMF0pKSAgIHx8XG4gICAgIGFueShncmVhdGVyVGhhbihwb3NpdGlvbiwgY2xpcEJvdW5kc1sxXSkpICkge1xuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwwKTtcbiAgfSBlbHNlIHtcbiAgICBmbG9hdCBsc2NhbGUgPSBwaXhlbFJhdGlvICogc2NhbGU7XG4gICAgaWYoZGlzdGFuY2UoaGlnaGxpZ2h0SWQsIGlkKSA8IDAuMDAwMSkge1xuICAgICAgbHNjYWxlICo9IGhpZ2hsaWdodFNjYWxlO1xuICAgIH1cblxuICAgIHZlYzQgY2xpcENlbnRlciAgID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEpO1xuICAgIHZlYzMgZGF0YVBvc2l0aW9uID0gcG9zaXRpb24gKyAwLjUqbHNjYWxlKihheGVzWzBdICogZ2x5cGgueCArIGF4ZXNbMV0gKiBnbHlwaC55KSAqIGNsaXBDZW50ZXIudyAqIHNjcmVlblNpemUueTtcbiAgICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KGRhdGFQb3NpdGlvbiwgMSk7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IGNsaXBQb3NpdGlvbjtcbiAgICBpbnRlcnBDb2xvciA9IGNvbG9yO1xuICAgIHBpY2tJZCA9IGlkO1xuICAgIGRhdGFDb29yZGluYXRlID0gZGF0YVBvc2l0aW9uO1xuICB9XG59XG4iLGw9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWMzIGZyYWdDbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG52YXJ5aW5nIHZlYzQgaW50ZXJwQ29sb3I7XG52YXJ5aW5nIHZlYzQgcGlja0lkO1xudmFyeWluZyB2ZWMzIGRhdGFDb29yZGluYXRlO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbihkYXRhQ29vcmRpbmF0ZSwgZnJhZ0NsaXBCb3VuZHNbMF0pKSAgIHx8XG4gICAgIGFueShncmVhdGVyVGhhbihkYXRhQ29vcmRpbmF0ZSwgZnJhZ0NsaXBCb3VuZHNbMV0pKSApIHtcbiAgICBkaXNjYXJkO1xuICB9IGVsc2Uge1xuICAgIGdsX0ZyYWdDb2xvciA9IGludGVycENvbG9yICogb3BhY2l0eTtcbiAgfVxufVxuIixjPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gdmVjMyBmcmFnQ2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgcGlja0dyb3VwO1xuXG52YXJ5aW5nIHZlYzQgcGlja0lkO1xudmFyeWluZyB2ZWMzIGRhdGFDb29yZGluYXRlO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGFueShsZXNzVGhhbihkYXRhQ29vcmRpbmF0ZSwgZnJhZ0NsaXBCb3VuZHNbMF0pKSAgIHx8IFxuICAgICBhbnkoZ3JlYXRlclRoYW4oZGF0YUNvb3JkaW5hdGUsIGZyYWdDbGlwQm91bmRzWzFdKSkgKSB7XG4gICAgZGlzY2FyZDtcbiAgfSBlbHNlIHtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tHcm91cCwgcGlja0lkLmJncik7XG4gIH1cbn0iLHU9W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJnbHlwaCIsdHlwZToidmVjMiJ9LHtuYW1lOiJpZCIsdHlwZToidmVjNCJ9XSxoPXt2ZXJ0ZXg6byxmcmFnbWVudDpsLGF0dHJpYnV0ZXM6dX0sZj17dmVydGV4OmEsZnJhZ21lbnQ6bCxhdHRyaWJ1dGVzOnV9LGQ9e3ZlcnRleDpzLGZyYWdtZW50OmwsYXR0cmlidXRlczp1fSxwPXt2ZXJ0ZXg6byxmcmFnbWVudDpjLGF0dHJpYnV0ZXM6dX0sZz17dmVydGV4OmEsZnJhZ21lbnQ6YyxhdHRyaWJ1dGVzOnV9LHY9e3ZlcnRleDpzLGZyYWdtZW50OmMsYXR0cmlidXRlczp1fTtyLmNyZWF0ZVBlcnNwZWN0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBuKHQsaCl9LHIuY3JlYXRlT3J0aG89ZnVuY3Rpb24odCl7cmV0dXJuIG4odCxmKX0sci5jcmVhdGVQcm9qZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZCl9LHIuY3JlYXRlUGlja1BlcnNwZWN0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBuKHQscCl9LHIuY3JlYXRlUGlja09ydGhvPWZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZyl9LHIuY3JlYXRlUGlja1Byb2plY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCx2KX19LHsiZ2wtc2hhZGVyIjoxNTR9XSwxNTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPXRbMF0sbj10WzFdLGk9dFsyXSxvPXRbM107cmV0dXJuIHRbMF09ZVswXSpyK2VbNF0qbitlWzhdKmkrZVsxMl0qbyx0WzFdPWVbMV0qcitlWzVdKm4rZVs5XSppK2VbMTNdKm8sdFsyXT1lWzJdKnIrZVs2XSpuK2VbMTBdKmkrZVsxNF0qbyx0WzNdPWVbM10qcitlWzddKm4rZVsxMV0qaStlWzE1XSpvLHR9ZnVuY3Rpb24gaSh0LGUscixpKXtyZXR1cm4gbihpLGksciksbihpLGksZSksbihpLGksdCl9ZnVuY3Rpb24gbyh0LGUpe3RoaXMuaW5kZXg9dCx0aGlzLmRhdGFDb29yZGluYXRlPXRoaXMucG9zaXRpb249ZX1mdW5jdGlvbiBhKHQsZSxyLG4saSxhLHMsbCxjLHUsaCxmKXt0aGlzLmdsPXQsdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5zaGFkZXI9ZSx0aGlzLm9ydGhvU2hhZGVyPXIsdGhpcy5wcm9qZWN0U2hhZGVyPW4sdGhpcy5wb2ludEJ1ZmZlcj1pLHRoaXMuY29sb3JCdWZmZXI9YSx0aGlzLmdseXBoQnVmZmVyPXMsdGhpcy5pZEJ1ZmZlcj1sLHRoaXMudmFvPWMsdGhpcy52ZXJ0ZXhDb3VudD0wLHRoaXMubGluZVZlcnRleENvdW50PTAsdGhpcy5vcGFjaXR5PTEsdGhpcy5saW5lV2lkdGg9MCx0aGlzLnByb2plY3RTY2FsZT1bMi8zLDIvMywyLzNdLHRoaXMucHJvamVjdE9wYWNpdHk9WzEsMSwxXSx0aGlzLnBpY2tJZD0wLHRoaXMucGlja1BlcnNwZWN0aXZlU2hhZGVyPXUsdGhpcy5waWNrT3J0aG9TaGFkZXI9aCx0aGlzLnBpY2tQcm9qZWN0U2hhZGVyPWYsdGhpcy5wb2ludHM9W10sdGhpcy5fc2VsZWN0UmVzdWx0PW5ldyBvKDAsWzAsMCwwXSksdGhpcy51c2VPcnRobz0hMCx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLSgxLzApLC0oMS8wKSwtKDEvMCldXSx0aGlzLmF4ZXNQcm9qZWN0PVshMCwhMCwhMF0sdGhpcy5heGVzQm91bmRzPVtbLSgxLzApLC0oMS8wKSwtKDEvMCldLFsxLzAsMS8wLDEvMF1dLHRoaXMuaGlnaGxpZ2h0SWQ9WzEsMSwxLDFdLHRoaXMuaGlnaGxpZ2h0U2NhbGU9Mix0aGlzLmNsaXBCb3VuZHM9W1stKDEvMCksLSgxLzApLC0oMS8wKV0sWzEvMCwxLzAsMS8wXV0sdGhpcy5kaXJ0eT0hMH1mdW5jdGlvbiBzKHQpe3JldHVybiB0WzBdPXRbMV09dFsyXT0wLHR9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPTEsdH1mdW5jdGlvbiBjKHQsZSxyLG4pe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0W3JdPW4sdH1mdW5jdGlvbiB1KHQpe2Zvcih2YXIgZT1TLHI9MDsyPnI7KytyKWZvcih2YXIgbj0wOzM+bjsrK24pZVtyXVtuXT1NYXRoLm1heChNYXRoLm1pbih0W3JdW25dLDFlOCksLTFlOCk7cmV0dXJuIGV9ZnVuY3Rpb24gaCh0LGUscixuLG8pe3ZhciBhLGg9ZS5heGVzUHJvamVjdCxmPWUuZ2wsZD10LnVuaWZvcm1zLHA9ci5tb2RlbHx8eCxnPXIudmlld3x8eCx2PXIucHJvamVjdGlvbnx8eCx5PWUuYXhlc0JvdW5kcyxiPXUoZS5jbGlwQm91bmRzKTthPWUuYXhlcz9lLmF4ZXMubGFzdEN1YmVQcm9wcy5heGlzOlsxLDEsMV0sd1swXT0yL2YuZHJhd2luZ0J1ZmZlcldpZHRoLHdbMV09Mi9mLmRyYXdpbmdCdWZmZXJIZWlnaHQsdC5iaW5kKCksZC52aWV3PWcsZC5wcm9qZWN0aW9uPXYsZC5zY3JlZW5TaXplPXcsZC5oaWdobGlnaHRJZD1lLmhpZ2hsaWdodElkLGQuaGlnaGxpZ2h0U2NhbGU9ZS5oaWdobGlnaHRTY2FsZSxkLmNsaXBCb3VuZHM9YixkLnBpY2tHcm91cD1lLnBpY2tJZC8yNTUsZC5waXhlbFJhdGlvPWUucGl4ZWxSYXRpbztmb3IodmFyIF89MDszPl87KytfKWlmKGhbX10mJmUucHJvamVjdE9wYWNpdHlbX108MT09PW4pe2Quc2NhbGU9ZS5wcm9qZWN0U2NhbGVbX10sZC5vcGFjaXR5PWUucHJvamVjdE9wYWNpdHlbX107Zm9yKHZhciBTPUUsQz0wOzE2PkM7KytDKVNbQ109MDtmb3IodmFyIEM9MDs0PkM7KytDKVNbNSpDXT0xO1NbNSpfXT0wLGFbX108MD9TWzEyK19dPXlbMF1bX106U1sxMitfXT15WzFdW19dLG0oUyxwLFMpLGQubW9kZWw9Uzt2YXIgUD0oXysxKSUzLHo9KF8rMiklMyxSPXMoQSksTz1zKGspOwpSW1BdPTEsT1t6XT0xO3ZhciBJPWkodixnLHAsbChNLFIpKSxOPWkodixnLHAsbChULE8pKTtpZihNYXRoLmFicyhJWzFdKT5NYXRoLmFicyhOWzFdKSl7dmFyIGo9STtJPU4sTj1qLGo9UixSPU8sTz1qO3ZhciBGPVA7UD16LHo9Rn1JWzBdPDAmJihSW1BdPS0xKSxOWzFdPjAmJihPW3pdPS0xKTtmb3IodmFyIEQ9MCxCPTAsQz0wOzQ+QzsrK0MpRCs9TWF0aC5wb3cocFs0KlArQ10sMiksQis9TWF0aC5wb3cocFs0KnorQ10sMik7UltQXS89TWF0aC5zcXJ0KEQpLE9bel0vPU1hdGguc3FydChCKSxkLmF4ZXNbMF09UixkLmF4ZXNbMV09TyxkLmZyYWdDbGlwQm91bmRzWzBdPWMoTCxiWzBdLF8sLTFlOCksZC5mcmFnQ2xpcEJvdW5kc1sxXT1jKEwsYlsxXSxfLDFlOCksZS52YW8uZHJhdyhmLlRSSUFOR0xFUyxlLnZlcnRleENvdW50KSxlLmxpbmVXaWR0aD4wJiYoZi5saW5lV2lkdGgoZS5saW5lV2lkdGgpLGUudmFvLmRyYXcoZi5MSU5FUyxlLmxpbmVWZXJ0ZXhDb3VudCxlLnZlcnRleENvdW50KSl9fWZ1bmN0aW9uIGYodCxlLHIsbixpLG8pe3ZhciBhPXIuZ2w7aWYoci52YW8uYmluZCgpLGk9PT1yLm9wYWNpdHk8MXx8byl7dC5iaW5kKCk7dmFyIHM9dC51bmlmb3JtcztzLm1vZGVsPW4ubW9kZWx8fHgscy52aWV3PW4udmlld3x8eCxzLnByb2plY3Rpb249bi5wcm9qZWN0aW9ufHx4LHdbMF09Mi9hLmRyYXdpbmdCdWZmZXJXaWR0aCx3WzFdPTIvYS5kcmF3aW5nQnVmZmVySGVpZ2h0LHMuc2NyZWVuU2l6ZT13LHMuaGlnaGxpZ2h0SWQ9ci5oaWdobGlnaHRJZCxzLmhpZ2hsaWdodFNjYWxlPXIuaGlnaGxpZ2h0U2NhbGUscy5mcmFnQ2xpcEJvdW5kcz16LHMuY2xpcEJvdW5kcz1yLmF4ZXMuYm91bmRzLHMub3BhY2l0eT1yLm9wYWNpdHkscy5waWNrR3JvdXA9ci5waWNrSWQvMjU1LHMucGl4ZWxSYXRpbz1yLnBpeGVsUmF0aW8sci52YW8uZHJhdyhhLlRSSUFOR0xFUyxyLnZlcnRleENvdW50KSxyLmxpbmVXaWR0aD4wJiYoYS5saW5lV2lkdGgoci5saW5lV2lkdGgpLHIudmFvLmRyYXcoYS5MSU5FUyxyLmxpbmVWZXJ0ZXhDb3VudCxyLnZlcnRleENvdW50KSl9aChlLHIsbixpLG8pLHIudmFvLnVuYmluZCgpfWZ1bmN0aW9uIGQodCl7dmFyIGU9dC5nbCxyPXkuY3JlYXRlUGVyc3BlY3RpdmUoZSksbj15LmNyZWF0ZU9ydGhvKGUpLGk9eS5jcmVhdGVQcm9qZWN0KGUpLG89eS5jcmVhdGVQaWNrUGVyc3BlY3RpdmUoZSkscz15LmNyZWF0ZVBpY2tPcnRobyhlKSxsPXkuY3JlYXRlUGlja1Byb2plY3QoZSksYz1wKGUpLHU9cChlKSxoPXAoZSksZj1wKGUpLGQ9ZyhlLFt7YnVmZmVyOmMsc2l6ZTozLHR5cGU6ZS5GTE9BVH0se2J1ZmZlcjp1LHNpemU6NCx0eXBlOmUuRkxPQVR9LHtidWZmZXI6aCxzaXplOjIsdHlwZTplLkZMT0FUfSx7YnVmZmVyOmYsc2l6ZTo0LHR5cGU6ZS5VTlNJR05FRF9CWVRFLG5vcm1hbGl6ZWQ6ITB9XSksdj1uZXcgYShlLHIsbixpLGMsdSxoLGYsZCxvLHMsbCk7cmV0dXJuIHYudXBkYXRlKHQpLHZ9dmFyIHA9dCgiZ2wtYnVmZmVyIiksZz10KCJnbC12YW8iKSx2PXQoInR5cGVkYXJyYXktcG9vbCIpLG09dCgiZ2wtbWF0NC9tdWx0aXBseSIpLHk9dCgiLi9saWIvc2hhZGVycyIpLGI9dCgiLi9saWIvZ2x5cGhzIikseD1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07ZS5leHBvcnRzPWQ7dmFyIF89YS5wcm90b3R5cGU7Xy5waWNrU2xvdHM9MSxfLnNldFBpY2tCYXNlPWZ1bmN0aW9uKHQpe3RoaXMucGlja0lkPXR9LF8uaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe2lmKHRoaXMub3BhY2l0eTwxKXJldHVybiEwO2Zvcih2YXIgdD0wOzM+dDsrK3QpaWYodGhpcy5heGVzUHJvamVjdFt0XSYmdGhpcy5wcm9qZWN0T3BhY2l0eVt0XTwxKXJldHVybiEwO3JldHVybiExfSxfLmlzT3BhcXVlPWZ1bmN0aW9uKCl7aWYodGhpcy5vcGFjaXR5Pj0xKXJldHVybiEwO2Zvcih2YXIgdD0wOzM+dDsrK3QpaWYodGhpcy5heGVzUHJvamVjdFt0XSYmdGhpcy5wcm9qZWN0T3BhY2l0eVt0XT49MSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIHc9WzAsMF0sQT1bMCwwLDBdLGs9WzAsMCwwXSxNPVswLDAsMCwxXSxUPVswLDAsMCwxXSxFPXguc2xpY2UoKSxMPVswLDAsMF0sUz1bWzAsMCwwXSxbMCwwLDBdXSxDPVstMWU4LC0xZTgsLTFlOF0sUD1bMWU4LDFlOCwxZThdLHo9W0MsUF07Xy5kcmF3PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudXNlT3J0aG8/dGhpcy5vcnRob1NoYWRlcjp0aGlzLnNoYWRlcjtmKGUsdGhpcy5wcm9qZWN0U2hhZGVyLHRoaXMsdCwhMSwhMSl9LF8uZHJhd1RyYW5zcGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudXNlT3J0aG8/dGhpcy5vcnRob1NoYWRlcjp0aGlzLnNoYWRlcjtmKGUsdGhpcy5wcm9qZWN0U2hhZGVyLHRoaXMsdCwhMCwhMSl9LF8uZHJhd1BpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy51c2VPcnRobz90aGlzLnBpY2tPcnRob1NoYWRlcjp0aGlzLnBpY2tQZXJzcGVjdGl2ZVNoYWRlcjtmKGUsdGhpcy5waWNrUHJvamVjdFNoYWRlcix0aGlzLHQsITEsITApfSxfLnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO3ZhciBlPXQudmFsdWVbMl0rKHQudmFsdWVbMV08PDgpKyh0LnZhbHVlWzBdPDwxNik7aWYoZT49dGhpcy5wb2ludENvdW50fHwwPmUpcmV0dXJuIG51bGw7dmFyIHI9dGhpcy5wb2ludHNbZV0sbj10aGlzLl9zZWxlY3RSZXN1bHQ7bi5pbmRleD1lO2Zvcih2YXIgaT0wOzM+aTsrK2kpbi5wb3NpdGlvbltpXT1uLmRhdGFDb29yZGluYXRlW2ldPXJbaV07cmV0dXJuIG59LF8uaGlnaGxpZ2h0PWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXQuaW5kZXgscj0yNTUmZSxuPWU+PjgmMjU1LGk9ZT4+MTYmMjU1O3RoaXMuaGlnaGxpZ2h0SWQ9W3IvMjU1LG4vMjU1LGkvMjU1LDBdfWVsc2UgdGhpcy5oaWdobGlnaHRJZD1bMSwxLDEsMV19LF8udXBkYXRlPWZ1bmN0aW9uKHQpe2lmKHQ9dHx8e30sInBlcnNwZWN0aXZlImluIHQmJih0aGlzLnVzZU9ydGhvPSF0LnBlcnNwZWN0aXZlKSwib3J0aG9ncmFwaGljImluIHQmJih0aGlzLnVzZU9ydGhvPSEhdC5vcnRob2dyYXBoaWMpLCJsaW5lV2lkdGgiaW4gdCYmKHRoaXMubGluZVdpZHRoPXQubGluZVdpZHRoKSwicHJvamVjdCJpbiB0KWlmKEFycmF5LmlzQXJyYXkodC5wcm9qZWN0KSl0aGlzLmF4ZXNQcm9qZWN0PXQucHJvamVjdDtlbHNle3ZhciBlPSEhdC5wcm9qZWN0O3RoaXMuYXhlc1Byb2plY3Q9W2UsZSxlXX1pZigicHJvamVjdFNjYWxlImluIHQpaWYoQXJyYXkuaXNBcnJheSh0LnByb2plY3RTY2FsZSkpdGhpcy5wcm9qZWN0U2NhbGU9dC5wcm9qZWN0U2NhbGUuc2xpY2UoKTtlbHNle3ZhciByPSt0LnByb2plY3RTY2FsZTt0aGlzLnByb2plY3RTY2FsZT1bcixyLHJdfWlmKCJwcm9qZWN0T3BhY2l0eSJpbiB0KWlmKEFycmF5LmlzQXJyYXkodC5wcm9qZWN0T3BhY2l0eSkpdGhpcy5wcm9qZWN0T3BhY2l0eT10LnByb2plY3RPcGFjaXR5LnNsaWNlKCk7ZWxzZXt2YXIgcj0rdC5wcm9qZWN0T3BhY2l0eTt0aGlzLnByb2plY3RPcGFjaXR5PVtyLHIscl19Im9wYWNpdHkiaW4gdCYmKHRoaXMub3BhY2l0eT10Lm9wYWNpdHkpLHRoaXMuZGlydHk9ITA7dmFyIG49dC5wb3NpdGlvbjtpZihuKXt2YXIgaT10LmZvbnR8fCJub3JtYWwiLG89dC5hbGlnbm1lbnR8fFswLDBdLGE9WzEvMCwxLzAsMS8wXSxzPVstKDEvMCksLSgxLzApLC0oMS8wKV0sbD10LmdseXBoLGM9dC5jb2xvcix1PXQuc2l6ZSxoPXQuYW5nbGUsZj10LmxpbmVDb2xvcixkPTAscD0wLGc9MCxtPW4ubGVuZ3RoO3Q6Zm9yKHZhciB5PTA7bT55OysreSl7Zm9yKHZhciB4PW5beV0sXz0wOzM+XzsrK18paWYoaXNOYU4oeFtfXSl8fCFpc0Zpbml0ZSh4W19dKSljb250aW51ZSB0O3ZhciB3O3c9QXJyYXkuaXNBcnJheShsKT9iKGxbeV0saSk6bD9iKGwsaSk6YigiXHUyNWNmIixpKTt2YXIgQT13WzBdLGs9d1sxXSxNPXdbMl07cCs9MypBLmNlbGxzLmxlbmd0aCxnKz0yKmsuZWRnZXMubGVuZ3RofXZhciBUPXArZyxFPXYubWFsbG9jRmxvYXQoMypUKSxMPXYubWFsbG9jRmxvYXQoNCpUKSxTPXYubWFsbG9jRmxvYXQoMipUKSxDPXYubWFsbG9jVWludDMyKFQpLFA9WzAsb1sxXV0sej0wLFI9cCxPPVswLDAsMCwxXSxJPVswLDAsMCwxXSxOPUFycmF5LmlzQXJyYXkoYykmJkFycmF5LmlzQXJyYXkoY1swXSksaj1BcnJheS5pc0FycmF5KGYpJiZBcnJheS5pc0FycmF5KGZbMF0pO3Q6Zm9yKHZhciB5PTA7bT55OysreSl7Zm9yKHZhciB4PW5beV0sXz0wOzM+XzsrK18pe2lmKGlzTmFOKHhbX10pfHwhaXNGaW5pdGUoeFtfXSkpe2QrPTE7Y29udGludWUgdH1zW19dPU1hdGgubWF4KHNbX10seFtfXSksYVtfXT1NYXRoLm1pbihhW19dLHhbX10pfXZhciB3O3c9QXJyYXkuaXNBcnJheShsKT9iKGxbeV0saSk6bD9iKGwsaSk6YigiXHUyNWNmIixpKTt2YXIgQT13WzBdLGs9d1sxXSxNPXdbMl07aWYoQXJyYXkuaXNBcnJheShjKSl7dmFyIEY7aWYoRj1OP2NbeV06YywzPT09Ri5sZW5ndGgpe2Zvcih2YXIgXz0wOzM+XzsrK18pT1tfXT1GW19dO09bM109MX1lbHNlIGlmKDQ9PT1GLmxlbmd0aClmb3IodmFyIF89MDs0Pl87KytfKU9bX109RltfXX1lbHNlIE9bMF09T1sxXT1PWzJdPTAsT1szXT0xO2lmKEFycmF5LmlzQXJyYXkoZikpe3ZhciBGO2lmKEY9aj9mW3ldOmYsMz09PUYubGVuZ3RoKXtmb3IodmFyIF89MDszPl87KytfKUlbX109RltfXTtJW19dPTF9ZWxzZSBpZig0PT09Ri5sZW5ndGgpZm9yKHZhciBfPTA7ND5fOysrXylJW19dPUZbX119ZWxzZSBJWzBdPUlbMV09SVsyXT0wLElbM109MTt2YXIgRD0uNTtBcnJheS5pc0FycmF5KHUpP0Q9K3VbeV06dT9EPSt1OnRoaXMudXNlT3J0aG8mJihEPTEyKTt2YXIgQj0wO0FycmF5LmlzQXJyYXkoaCk/Qj0raFt5XTpoJiYoQj0raCk7Zm9yKHZhciBVPU1hdGguY29zKEIpLFY9TWF0aC5zaW4oQikseD1uW3ldLF89MDszPl87KytfKXNbX109TWF0aC5tYXgoc1tfXSx4W19dKSxhW19dPU1hdGgubWluKGFbX10seFtfXSk7b1swXTwwP1BbMF09b1swXSooMStNWzFdWzBdKTpvWzBdPjAmJihQWzBdPS1vWzBdKigxK01bMF1bMF0pKTtmb3IodmFyIHE9QS5jZWxscyxIPUEucG9zaXRpb25zLF89MDtfPHEubGVuZ3RoOysrXylmb3IodmFyIEc9cVtfXSxZPTA7Mz5ZOysrWSl7Zm9yKHZhciBYPTA7Mz5YOysrWClFWzMqeitYXT14W1hdO2Zvcih2YXIgWD0wOzQ+WDsrK1gpTFs0KnorWF09T1tYXTtDW3pdPWQ7dmFyIFc9SFtHW1ldXTtTWzIqel09RCooVSpXWzBdLVYqV1sxXStQWzBdKSxTWzIqeisxXT1EKihWKldbMF0rVSpXWzFdK1BbMV0pLHorPTF9Zm9yKHZhciBxPWsuZWRnZXMsSD1rLnBvc2l0aW9ucyxfPTA7XzxxLmxlbmd0aDsrK18pZm9yKHZhciBHPXFbX10sWT0wOzI+WTsrK1kpe2Zvcih2YXIgWD0wOzM+WDsrK1gpRVszKlIrWF09eFtYXTtmb3IodmFyIFg9MDs0Plg7KytYKUxbNCpSK1hdPUlbWF07Q1tSXT1kO3ZhciBXPUhbR1tZXV07U1syKlJdPUQqKFUqV1swXS1WKldbMV0rUFswXSksU1syKlIrMV09RCooVipXWzBdK1UqV1sxXStQWzFdKSxSKz0xfWQrPTF9dGhpcy52ZXJ0ZXhDb3VudD1wLHRoaXMubGluZVZlcnRleENvdW50PWcsdGhpcy5wb2ludEJ1ZmZlci51cGRhdGUoRSksdGhpcy5jb2xvckJ1ZmZlci51cGRhdGUoTCksdGhpcy5nbHlwaEJ1ZmZlci51cGRhdGUoUyksdGhpcy5pZEJ1ZmZlci51cGRhdGUobmV3IFVpbnQzMkFycmF5KEMpKSx2LmZyZWUoRSksdi5mcmVlKEwpLHYuZnJlZShTKSx2LmZyZWUoQyksdGhpcy5ib3VuZHM9W2Esc10sdGhpcy5wb2ludHM9bix0aGlzLnBvaW50Q291bnQ9bi5sZW5ndGh9fSxfLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRlci5kaXNwb3NlKCksdGhpcy5vcnRob1NoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrUGVyc3BlY3RpdmVTaGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja09ydGhvU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5wb2ludEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5jb2xvckJ1ZmZlci5kaXNwb3NlKCksdGhpcy5nbHlwaEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5pZEJ1ZmZlci5kaXNwb3NlKCl9fSx7Ii4vbGliL2dseXBocyI6MTQ4LCIuL2xpYi9zaGFkZXJzIjoxNDksImdsLWJ1ZmZlciI6NzUsImdsLW1hdDQvbXVsdGlwbHkiOjk2LCJnbC12YW8iOjE4NCwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwxNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5ib3hWZXJ0ZXg9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgdmVydGV4O1xuXG51bmlmb3JtIHZlYzIgY29ybmVyQSwgY29ybmVyQjtcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQobWl4KGNvcm5lckEsIGNvcm5lckIsIHZlcnRleCksIDAsIDEpO1xufVxuIixyLmJveEZyYWdtZW50PSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gdmVjNCBjb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbn1cbiJ9LHt9XSwxNTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dGhpcy5wbG90PXQsdGhpcy5ib3hCdWZmZXI9ZSx0aGlzLmJveFNoYWRlcj1yLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnNlbGVjdEJveD1bMS8wLDEvMCwtKDEvMCksLSgxLzApXSx0aGlzLmJvcmRlckNvbG9yPVswLDAsMCwxXSx0aGlzLmlubmVyRmlsbD0hMSx0aGlzLmlubmVyQ29sb3I9WzAsMCwwLC4yNV0sdGhpcy5vdXRlckZpbGw9ITAsdGhpcy5vdXRlckNvbG9yPVswLDAsMCwuNV0sdGhpcy5ib3JkZXJXaWR0aD0xMH1mdW5jdGlvbiBpKHQsZSl7dmFyIHI9dC5nbCxpPWEocixbMCwwLDAsMSwxLDAsMSwxXSksbD1vKHIscy5ib3hWZXJ0ZXgscy5ib3hGcmFnbWVudCksYz1uZXcgbih0LGksbCk7cmV0dXJuIGMudXBkYXRlKGUpLHQuYWRkT3ZlcmxheShjKSxjfXZhciBvPXQoImdsLXNoYWRlciIpLGE9dCgiZ2wtYnVmZmVyIikscz10KCIuL2xpYi9zaGFkZXJzIik7ZS5leHBvcnRzPWk7dmFyIGw9bi5wcm90b3R5cGU7bC5kcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5lbmFibGVkKXt2YXIgdD10aGlzLnBsb3QsZT10aGlzLnNlbGVjdEJveCxyPXRoaXMuYm9yZGVyV2lkdGgsbj0odGhpcy5pbm5lckZpbGwsdGhpcy5pbm5lckNvbG9yKSxpPSh0aGlzLm91dGVyRmlsbCx0aGlzLm91dGVyQ29sb3IpLG89dGhpcy5ib3JkZXJDb2xvcixhPXQuYm94LHM9dC5zY3JlZW5Cb3gsbD10LmRhdGFCb3gsYz10LnZpZXdCb3gsdT10LnBpeGVsUmF0aW8saD0oZVswXS1sWzBdKSooY1syXS1jWzBdKS8obFsyXS1sWzBdKStjWzBdLGY9KGVbMV0tbFsxXSkqKGNbM10tY1sxXSkvKGxbM10tbFsxXSkrY1sxXSxkPShlWzJdLWxbMF0pKihjWzJdLWNbMF0pLyhsWzJdLWxbMF0pK2NbMF0scD0oZVszXS1sWzFdKSooY1szXS1jWzFdKS8obFszXS1sWzFdKStjWzFdO2lmKGg9TWF0aC5tYXgoaCxjWzBdKSxmPU1hdGgubWF4KGYsY1sxXSksZD1NYXRoLm1pbihkLGNbMl0pLHA9TWF0aC5taW4ocCxjWzNdKSwhKGg+ZHx8Zj5wKSl7YS5iaW5kKCk7dmFyIGc9c1syXS1zWzBdLHY9c1szXS1zWzFdO2lmKHRoaXMub3V0ZXJGaWxsJiYoYS5kcmF3Qm94KDAsMCxnLGYsaSksYS5kcmF3Qm94KDAsZixoLHAsaSksYS5kcmF3Qm94KDAscCxnLHYsaSksYS5kcmF3Qm94KGQsZixnLHAsaSkpLHRoaXMuaW5uZXJGaWxsJiZhLmRyYXdCb3goaCxmLGQscCxuKSxyPjApe3ZhciBtPXIqdTthLmRyYXdCb3goaC1tLGYtbSxkK20sZittLG8pLGEuZHJhd0JveChoLW0scC1tLGQrbSxwK20sbyksYS5kcmF3Qm94KGgtbSxmLW0saCttLHArbSxvKSxhLmRyYXdCb3goZC1tLGYtbSxkK20scCttLG8pfX19fSxsLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9LHRoaXMuaW5uZXJGaWxsPSEhdC5pbm5lckZpbGwsdGhpcy5vdXRlckZpbGw9ISF0Lm91dGVyRmlsbCx0aGlzLmlubmVyQ29sb3I9KHQuaW5uZXJDb2xvcnx8WzAsMCwwLC41XSkuc2xpY2UoKSx0aGlzLm91dGVyQ29sb3I9KHQub3V0ZXJDb2xvcnx8WzAsMCwwLC41XSkuc2xpY2UoKSx0aGlzLmJvcmRlckNvbG9yPSh0LmJvcmRlckNvbG9yfHxbMCwwLDAsMV0pLnNsaWNlKCksdGhpcy5ib3JkZXJXaWR0aD10LmJvcmRlcldpZHRofHwwLHRoaXMuc2VsZWN0Qm94PSh0LnNlbGVjdEJveHx8dGhpcy5zZWxlY3RCb3gpLnNsaWNlKCl9LGwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuYm94QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmJveFNoYWRlci5kaXNwb3NlKCksdGhpcy5wbG90LnJlbW92ZU92ZXJsYXkodGhpcyl9fSx7Ii4vbGliL3NoYWRlcnMiOjE1MSwiZ2wtYnVmZmVyIjo3NSwiZ2wtc2hhZGVyIjoxNTR9XSwxNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGkpe3RoaXMuY29vcmQ9W3QsZV0sdGhpcy5pZD1yLHRoaXMudmFsdWU9bix0aGlzLmRpc3RhbmNlPWl9ZnVuY3Rpb24gaSh0LGUscil7dGhpcy5nbD10LHRoaXMuZmJvPWUsdGhpcy5idWZmZXI9cix0aGlzLl9yZWFkVGltZW91dD1udWxsO3ZhciBuPXRoaXM7dGhpcy5fcmVhZENhbGxiYWNrPWZ1bmN0aW9uKCl7bi5nbCYmKGUuYmluZCgpLHQucmVhZFBpeGVscygwLDAsZS5zaGFwZVswXSxlLnNoYXBlWzFdLHQuUkdCQSx0LlVOU0lHTkVEX0JZVEUsbi5idWZmZXIpLG4uX3JlYWRUaW1lb3V0PW51bGwpfX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9YSh0LGUpLG49cy5tYWxsb2NVaW50OChlWzBdKmVbMV0qNCk7cmV0dXJuIG5ldyBpKHQscixuKX1lLmV4cG9ydHM9bzt2YXIgYT10KCJnbC1mYm8iKSxzPXQoInR5cGVkYXJyYXktcG9vbCIpLGw9dCgibmRhcnJheSIpLGM9dCgiYml0LXR3aWRkbGUiKS5uZXh0UG93Mix1PXQoImN3aXNlL2xpYi93cmFwcGVyIikoe2FyZ3M6WyJhcnJheSIse29mZnNldDpbMCwwLDFdLGFycmF5OjB9LHtvZmZzZXQ6WzAsMCwyXSxhcnJheTowfSx7b2Zmc2V0OlswLDAsM10sYXJyYXk6MH0sInNjYWxhciIsInNjYWxhciIsImluZGV4Il0scHJlOntib2R5OiJ7dGhpc19jbG9zZXN0RDI9MWU4LHRoaXNfY2xvc2VzdFg9LTEsdGhpc19jbG9zZXN0WT0tMX0iLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2Nsb3Nlc3REMiIsInRoaXNfY2xvc2VzdFgiLCJ0aGlzX2Nsb3Nlc3RZIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7aWYoMjU1Pl9pbmxpbmVfMzFfYXJnMF98fDI1NT5faW5saW5lXzMxX2FyZzFffHwyNTU+X2lubGluZV8zMV9hcmcyX3x8MjU1Pl9pbmxpbmVfMzFfYXJnM18pe3ZhciBfaW5saW5lXzMxX2w9X2lubGluZV8zMV9hcmc0Xy1faW5saW5lXzMxX2FyZzZfWzBdLF9pbmxpbmVfMzFfYT1faW5saW5lXzMxX2FyZzVfLV9pbmxpbmVfMzFfYXJnNl9bMV0sX2lubGluZV8zMV9mPV9pbmxpbmVfMzFfbCpfaW5saW5lXzMxX2wrX2lubGluZV8zMV9hKl9pbmxpbmVfMzFfYTtfaW5saW5lXzMxX2Y8dGhpc19jbG9zZXN0RDImJih0aGlzX2Nsb3Nlc3REMj1faW5saW5lXzMxX2YsdGhpc19jbG9zZXN0WD1faW5saW5lXzMxX2FyZzZfWzBdLHRoaXNfY2xvc2VzdFk9X2lubGluZV8zMV9hcmc2X1sxXSl9fSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMzFfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMzFfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMzFfYXJnM18iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMzFfYXJnNF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMzFfYXJnNV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMzFfYXJnNl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6NH1dLHRoaXNWYXJzOlsidGhpc19jbG9zZXN0RDIiLCJ0aGlzX2Nsb3Nlc3RYIiwidGhpc19jbG9zZXN0WSJdLGxvY2FsVmFyczpbIl9pbmxpbmVfMzFfYSIsIl9pbmxpbmVfMzFfZiIsIl9pbmxpbmVfMzFfbCJdfSxwb3N0Ontib2R5OiJ7cmV0dXJuW3RoaXNfY2xvc2VzdFgsdGhpc19jbG9zZXN0WSx0aGlzX2Nsb3Nlc3REMl19IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19jbG9zZXN0RDIiLCJ0aGlzX2Nsb3Nlc3RYIiwidGhpc19jbG9zZXN0WSJdLGxvY2FsVmFyczpbXX0sZGVidWc6ITEsZnVuY05hbWU6ImN3aXNlIixibG9ja1NpemU6NjR9KSxoPWkucHJvdG90eXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJzaGFwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdsP3RoaXMuZmJvLnNoYXBlLnNsaWNlKCk6WzAsMF19LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLmdsKXt0aGlzLmZiby5zaGFwZT10O3ZhciBlPXRoaXMuZmJvLnNoYXBlWzBdLHI9dGhpcy5mYm8uc2hhcGVbMV07aWYociplKjQ+dGhpcy5idWZmZXIubGVuZ3RoKXtzLmZyZWUodGhpcy5idWZmZXIpO2Zvcih2YXIgbj10aGlzLmJ1ZmZlcj1zLm1hbGxvY1VpbnQ4KGMociplKjQpKSxpPTA7ciplKjQ+aTsrK2kpbltpXT0yNTV9cmV0dXJuIHR9fX0pLGguYmVnaW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdsO3RoaXMuc2hhcGU7dCYmKHRoaXMuZmJvLmJpbmQoKSx0LmNsZWFyQ29sb3IoMSwxLDEsMSksdC5jbGVhcih0LkNPTE9SX0JVRkZFUl9CSVR8dC5ERVBUSF9CVUZGRVJfQklUKSl9LGguZW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nbDt0JiYodC5iaW5kRnJhbWVidWZmZXIodC5GUkFNRUJVRkZFUixudWxsKSx0aGlzLl9yZWFkVGltZW91dHx8Y2xlYXJUaW1lb3V0KHRoaXMuX3JlYWRUaW1lb3V0KSx0aGlzLl9yZWFkVGltZW91dD1zZXRUaW1lb3V0KHRoaXMuX3JlYWRDYWxsYmFjaywxKSl9LGgucXVlcnk9ZnVuY3Rpb24odCxlLHIpe2lmKCF0aGlzLmdsKXJldHVybiBudWxsO3ZhciBpPXRoaXMuZmJvLnNoYXBlLnNsaWNlKCk7dD0wfHQsZT0wfGUsIm51bWJlciIhPXR5cGVvZiByJiYocj0xKTt2YXIgbz0wfE1hdGgubWluKE1hdGgubWF4KHQtciwwKSxpWzBdKSxhPTB8TWF0aC5taW4oTWF0aC5tYXgodCtyLDApLGlbMF0pLHM9MHxNYXRoLm1pbihNYXRoLm1heChlLXIsMCksaVsxXSksYz0wfE1hdGgubWluKE1hdGgubWF4KGUrciwwKSxpWzFdKTtpZihvPj1hfHxzPj1jKXJldHVybiBudWxsO3ZhciBoPVthLW8sYy1zXSxmPWwodGhpcy5idWZmZXIsW2hbMF0saFsxXSw0XSxbNCw0KmlbMF0sMV0sNCoobytpWzBdKnMpKSxkPXUoZi5oaShoWzBdLGhbMV0sMSkscixyKSxwPWRbMF0sZz1kWzFdO2lmKDA+cHx8TWF0aC5wb3codGhpcy5yYWRpdXMsMik8ZFsyXSlyZXR1cm4gbnVsbDt2YXIgdj1mLmdldChwLGcsMCksbT1mLmdldChwLGcsMSkseT1mLmdldChwLGcsMiksYj1mLmdldChwLGcsMyk7cmV0dXJuIG5ldyBuKHArb3wwLGcrc3wwLHYsW20seSxiXSxNYXRoLnNxcnQoZFsyXSkpfSxoLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmdsJiYodGhpcy5mYm8uZGlzcG9zZSgpLHMuZnJlZSh0aGlzLmJ1ZmZlciksdGhpcy5nbD1udWxsLHRoaXMuX3JlYWRUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5fcmVhZFRpbWVvdXQpKX19LHsiYml0LXR3aWRkbGUiOjQ5LCJjd2lzZS9saWIvd3JhcHBlciI6NjksImdsLWZibyI6ODAsbmRhcnJheToyMTAsInR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMTU0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dGhpcy5nbD10LHRoaXMuX3ZyZWY9dGhpcy5fZnJlZj10aGlzLl9yZWxpbms9dGhpcy52ZXJ0U2hhZGVyPXRoaXMuZnJhZ1NoYWRlcj10aGlzLnByb2dyYW09dGhpcy5hdHRyaWJ1dGVzPXRoaXMudW5pZm9ybXM9dGhpcy50eXBlcz1udWxsfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdC5uYW1lPGUubmFtZT8tMToxfWZ1bmN0aW9uIG8odCxlLHIsaSxvKXt2YXIgYT1uZXcgbih0KTtyZXR1cm4gYS51cGRhdGUoZSxyLGksbyksYX12YXIgYT10KCIuL2xpYi9jcmVhdGUtdW5pZm9ybXMiKSxzPXQoIi4vbGliL2NyZWF0ZS1hdHRyaWJ1dGVzIiksbD10KCIuL2xpYi9yZWZsZWN0IiksYz10KCIuL2xpYi9zaGFkZXItY2FjaGUiKSx1PXQoIi4vbGliL3J1bnRpbWUtcmVmbGVjdCIpLGg9dCgiLi9saWIvR0xFcnJvciIpLGY9bi5wcm90b3R5cGU7Zi5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5wcm9ncmFtfHx0aGlzLl9yZWxpbmsoKSx0aGlzLmdsLnVzZVByb2dyYW0odGhpcy5wcm9ncmFtKX0sZi5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fZnJlZiYmdGhpcy5fZnJlZi5kaXNwb3NlKCksdGhpcy5fdnJlZiYmdGhpcy5fdnJlZi5kaXNwb3NlKCksdGhpcy5hdHRyaWJ1dGVzPXRoaXMudHlwZXM9dGhpcy52ZXJ0U2hhZGVyPXRoaXMuZnJhZ1NoYWRlcj10aGlzLnByb2dyYW09dGhpcy5fcmVsaW5rPXRoaXMuX2ZyZWY9dGhpcy5fdnJlZj1udWxsfSxmLnVwZGF0ZT1mdW5jdGlvbih0LGUscixuKXtmdW5jdGlvbiBvKCl7ZC5wcm9ncmFtPWMucHJvZ3JhbShwLGQuX3ZyZWYsZC5fZnJlZix4LF8pO2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7Kyt0KUxbdF09cC5nZXRVbmlmb3JtTG9jYXRpb24oZC5wcm9ncmFtLHJbdF0ubmFtZSl9aWYoIWV8fDE9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgZj10O3Q9Zi52ZXJ0ZXgsZT1mLmZyYWdtZW50LHI9Zi51bmlmb3JtcyxuPWYuYXR0cmlidXRlc312YXIgZD10aGlzLHA9ZC5nbCxnPWQuX3ZyZWY7ZC5fdnJlZj1jLnNoYWRlcihwLHAuVkVSVEVYX1NIQURFUix0KSxnJiZnLmRpc3Bvc2UoKSxkLnZlcnRTaGFkZXI9ZC5fdnJlZi5zaGFkZXI7dmFyIHY9dGhpcy5fZnJlZjtpZihkLl9mcmVmPWMuc2hhZGVyKHAscC5GUkFHTUVOVF9TSEFERVIsZSksdiYmdi5kaXNwb3NlKCksZC5mcmFnU2hhZGVyPWQuX2ZyZWYuc2hhZGVyLCFyfHwhbil7dmFyIG09cC5jcmVhdGVQcm9ncmFtKCk7aWYocC5hdHRhY2hTaGFkZXIobSxkLmZyYWdTaGFkZXIpLHAuYXR0YWNoU2hhZGVyKG0sZC52ZXJ0U2hhZGVyKSxwLmxpbmtQcm9ncmFtKG0pLCFwLmdldFByb2dyYW1QYXJhbWV0ZXIobSxwLkxJTktfU1RBVFVTKSl7dmFyIHk9cC5nZXRQcm9ncmFtSW5mb0xvZyhtKTt0aHJvdyBuZXcgaCh5LCJFcnJvciBsaW5raW5nIHByb2dyYW06Iit5KX1yPXJ8fHUudW5pZm9ybXMocCxtKSxuPW58fHUuYXR0cmlidXRlcyhwLG0pLHAuZGVsZXRlUHJvZ3JhbShtKX1uPW4uc2xpY2UoKSxuLnNvcnQoaSk7Zm9yKHZhciBiPVtdLHg9W10sXz1bXSx3PTA7dzxuLmxlbmd0aDsrK3cpe3ZhciBBPW5bd107aWYoQS50eXBlLmluZGV4T2YoIm1hdCIpPj0wKXtmb3IodmFyIGs9MHxBLnR5cGUuY2hhckF0KEEudHlwZS5sZW5ndGgtMSksTT1uZXcgQXJyYXkoayksVD0wO2s+VDsrK1QpTVtUXT1fLmxlbmd0aCx4LnB1c2goQS5uYW1lKyJbIitUKyJdIiksIm51bWJlciI9PXR5cGVvZiBBLmxvY2F0aW9uP18ucHVzaChBLmxvY2F0aW9uK1QpOkFycmF5LmlzQXJyYXkoQS5sb2NhdGlvbikmJkEubG9jYXRpb24ubGVuZ3RoPT09ayYmIm51bWJlciI9PXR5cGVvZiBBLmxvY2F0aW9uW1RdP18ucHVzaCgwfEEubG9jYXRpb25bVF0pOl8ucHVzaCgtMSk7Yi5wdXNoKHtuYW1lOkEubmFtZSx0eXBlOkEudHlwZSxsb2NhdGlvbnM6TX0pfWVsc2UgYi5wdXNoKHtuYW1lOkEubmFtZSx0eXBlOkEudHlwZSxsb2NhdGlvbnM6W18ubGVuZ3RoXX0pLHgucHVzaChBLm5hbWUpLCJudW1iZXIiPT10eXBlb2YgQS5sb2NhdGlvbj9fLnB1c2goMHxBLmxvY2F0aW9uKTpfLnB1c2goLTEpfWZvcih2YXIgRT0wLHc9MDt3PF8ubGVuZ3RoOysrdylpZihfW3ddPDApe2Zvcig7Xy5pbmRleE9mKEUpPj0wOylFKz0xO19bd109RX12YXIgTD1uZXcgQXJyYXkoci5sZW5ndGgpO28oKSxkLl9yZWxpbms9byxkLnR5cGVzPXt1bmlmb3JtczpsKHIpLGF0dHJpYnV0ZXM6bChuKX0sZC5hdHRyaWJ1dGVzPXMocCxkLGIsXyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInVuaWZvcm1zIixhKHAsZCxyLEwpKX0sZS5leHBvcnRzPW99LHsiLi9saWIvR0xFcnJvciI6MTU1LCIuL2xpYi9jcmVhdGUtYXR0cmlidXRlcyI6MTU2LCIuL2xpYi9jcmVhdGUtdW5pZm9ybXMiOjE1NywiLi9saWIvcmVmbGVjdCI6MTU4LCIuL2xpYi9ydW50aW1lLXJlZmxlY3QiOjE1OSwiLi9saWIvc2hhZGVyLWNhY2hlIjoxNjB9XSwxNTU6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXt0aGlzLnNob3J0TWVzc2FnZT1lfHwiIix0aGlzLmxvbmdNZXNzYWdlPXJ8fCIiLHRoaXMucmF3RXJyb3I9dHx8IiIsdGhpcy5tZXNzYWdlPSJnbC1zaGFkZXI6ICIrKGV8fHR8fCIiKSsocj8iXG4iK3I6IiIpLHRoaXMuc3RhY2s9KG5ldyBFcnJvcikuc3RhY2t9bi5wcm90b3R5cGU9bmV3IEVycm9yLG4ucHJvdG90eXBlLm5hbWU9IkdMRXJyb3IiLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sZS5leHBvcnRzPW59LHt9XSwxNTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGksbyl7dGhpcy5fZ2w9dCx0aGlzLl93cmFwcGVyPWUsdGhpcy5faW5kZXg9cix0aGlzLl9sb2NhdGlvbnM9bix0aGlzLl9kaW1lbnNpb249aSx0aGlzLl9jb25zdEZ1bmM9b31mdW5jdGlvbiBpKHQsZSxyLGksbyxhLHMpe2Zvcih2YXIgbD1bImdsIiwidiJdLGM9W10sdT0wO28+dTsrK3UpbC5wdXNoKCJ4Iit1KSxjLnB1c2goIngiK3UpO2wucHVzaCgiaWYoeDAubGVuZ3RoPT09dm9pZCAwKXtyZXR1cm4gZ2wudmVydGV4QXR0cmliIitvKyJmKHYsIitjLmpvaW4oKSsiKX1lbHNle3JldHVybiBnbC52ZXJ0ZXhBdHRyaWIiK28rImZ2KHYseDApfSIpO3ZhciBoPUZ1bmN0aW9uLmFwcGx5KG51bGwsbCksZj1uZXcgbih0LGUscixpLG8saCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEscyx7c2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpW3JdKSxoKHQsaVtyXSxlKSxlfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sZW51bWVyYWJsZTohMH0pfWZ1bmN0aW9uIG8odCxlLHIsbixvLGEscyl7Zm9yKHZhciBsPW5ldyBBcnJheShvKSxjPW5ldyBBcnJheShvKSx1PTA7bz51OysrdSlpKHQsZSxyW3VdLG4sbyxsLHUpLGNbdV09bFt1XTtPYmplY3QuZGVmaW5lUHJvcGVydHkobCwibG9jYXRpb24iLHtzZXQ6ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGU9MDtvPmU7KytlKWNbZV0ubG9jYXRpb249dFtlXTtlbHNlIGZvcih2YXIgZT0wO28+ZTsrK2UpY1tlXS5sb2NhdGlvbj10K2U7cmV0dXJuIHR9LGdldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgQXJyYXkobyksZT0wO28+ZTsrK2UpdFtlXT1uW3JbZV1dO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwfSksbC5wb2ludGVyPWZ1bmN0aW9uKGUsaSxhLHMpe2U9ZXx8dC5GTE9BVCxpPSEhaSxhPWF8fG8qbyxzPXN8fDA7Zm9yKHZhciBsPTA7bz5sOysrbCl7dmFyIGM9bltyW2xdXTt0LnZlcnRleEF0dHJpYlBvaW50ZXIoYyxvLGUsaSxhLHMrbCpvKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGMpfX07dmFyIGg9bmV3IEFycmF5KG8pLGY9dFsidmVydGV4QXR0cmliIitvKyJmdiJdO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHMse3NldDpmdW5jdGlvbihlKXtmb3IodmFyIGk9MDtvPmk7KytpKXt2YXIgYT1uW3JbaV1dO2lmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpLEFycmF5LmlzQXJyYXkoZVswXSkpZi5jYWxsKHQsYSxlW2ldKTtlbHNle2Zvcih2YXIgcz0wO28+czsrK3MpaFtzXT1lW28qaStzXTtmLmNhbGwodCxhLGgpfX1yZXR1cm4gZX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGVudW1lcmFibGU6ITB9KX1mdW5jdGlvbiBhKHQsZSxyLG4pe2Zvcih2YXIgYT17fSxsPTAsYz1yLmxlbmd0aDtjPmw7KytsKXt2YXIgdT1yW2xdLGg9dS5uYW1lLGY9dS50eXBlLGQ9dS5sb2NhdGlvbnM7c3dpdGNoKGYpe2Nhc2UiYm9vbCI6Y2FzZSJpbnQiOmNhc2UiZmxvYXQiOmkodCxlLGRbMF0sbiwxLGEsaCk7YnJlYWs7ZGVmYXVsdDppZihmLmluZGV4T2YoInZlYyIpPj0wKXt2YXIgcD1mLmNoYXJDb2RlQXQoZi5sZW5ndGgtMSktNDg7aWYoMj5wfHxwPjQpdGhyb3cgbmV3IHMoIiIsIkludmFsaWQgZGF0YSB0eXBlIGZvciBhdHRyaWJ1dGUgIitoKyI6ICIrZik7aSh0LGUsZFswXSxuLHAsYSxoKX1lbHNle2lmKCEoZi5pbmRleE9mKCJtYXQiKT49MCkpdGhyb3cgbmV3IHMoIiIsIlVua25vd24gZGF0YSB0eXBlIGZvciBhdHRyaWJ1dGUgIitoKyI6ICIrZik7dmFyIHA9Zi5jaGFyQ29kZUF0KGYubGVuZ3RoLTEpLTQ4O2lmKDI+cHx8cD40KXRocm93IG5ldyBzKCIiLCJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgYXR0cmlidXRlICIraCsiOiAiK2YpO28odCxlLGQsbixwLGEsaCl9fX1yZXR1cm4gYX1lLmV4cG9ydHM9YTt2YXIgcz10KCIuL0dMRXJyb3IiKSxsPW4ucHJvdG90eXBlO2wucG9pbnRlcj1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLG89aS5fZ2wsYT1pLl9sb2NhdGlvbnNbaS5faW5kZXhdO28udmVydGV4QXR0cmliUG9pbnRlcihhLGkuX2RpbWVuc2lvbix0fHxvLkZMT0FULCEhZSxyfHwwLG58fDApLG8uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYSl9LGwuc2V0PWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLl9jb25zdEZ1bmModGhpcy5fbG9jYXRpb25zW3RoaXMuX2luZGV4XSx0LGUscixuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsImxvY2F0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uc1t0aGlzLl9pbmRleF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdCE9PXRoaXMuX2xvY2F0aW9uc1t0aGlzLl9pbmRleF0mJih0aGlzLl9sb2NhdGlvbnNbdGhpcy5faW5kZXhdPTB8dCx0aGlzLl93cmFwcGVyLnByb2dyYW09bnVsbCksMHx0fX0pfSx7Ii4vR0xFcnJvciI6MTU1fV0sMTU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9bmV3IEZ1bmN0aW9uKCJ5IiwicmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHl9Iik7cmV0dXJuIGUodCl9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodCksbj0wO3Q+bjsrK24pcltuXT1lO3JldHVybiByfWZ1bmN0aW9uIG8odCxlLHIsbyl7ZnVuY3Rpb24gbChyKXt2YXIgbj1uZXcgRnVuY3Rpb24oImdsIiwid3JhcHBlciIsImxvY2F0aW9ucyIsInJldHVybiBmdW5jdGlvbigpe3JldHVybiBnbC5nZXRVbmlmb3JtKHdyYXBwZXIucHJvZ3JhbSxsb2NhdGlvbnNbIityKyJdKX0iKTtyZXR1cm4gbih0LGUsbyl9ZnVuY3Rpb24gYyh0LGUscil7c3dpdGNoKHIpe2Nhc2UiYm9vbCI6Y2FzZSJpbnQiOmNhc2Uic2FtcGxlcjJEIjpjYXNlInNhbXBsZXJDdWJlIjpyZXR1cm4iZ2wudW5pZm9ybTFpKGxvY2F0aW9uc1siK2UrIl0sb2JqIit0KyIpIjtjYXNlImZsb2F0IjpyZXR1cm4iZ2wudW5pZm9ybTFmKGxvY2F0aW9uc1siK2UrIl0sb2JqIit0KyIpIjtkZWZhdWx0OnZhciBuPXIuaW5kZXhPZigidmVjIik7aWYoIShuPj0wJiYxPj1uJiZyLmxlbmd0aD09PTQrbikpe2lmKDA9PT1yLmluZGV4T2YoIm1hdCIpJiY0PT09ci5sZW5ndGgpe3ZhciBpPXIuY2hhckNvZGVBdChyLmxlbmd0aC0xKS00ODtpZigyPml8fGk+NCl0aHJvdyBuZXcgcygiIiwiSW52YWxpZCB1bmlmb3JtIGRpbWVuc2lvbiB0eXBlIGZvciBtYXRyaXggIituYW1lKyI6ICIrcik7cmV0dXJuImdsLnVuaWZvcm1NYXRyaXgiK2krImZ2KGxvY2F0aW9uc1siK2UrIl0sZmFsc2Usb2JqIit0KyIpIn10aHJvdyBuZXcgcygiIiwiVW5rbm93biB1bmlmb3JtIGRhdGEgdHlwZSBmb3IgIituYW1lKyI6ICIrcil9dmFyIGk9ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpLTQ4O2lmKDI+aXx8aT40KXRocm93IG5ldyBzKCIiLCJJbnZhbGlkIGRhdGEgdHlwZSIpO3N3aXRjaChyLmNoYXJBdCgwKSl7Y2FzZSJiIjpjYXNlImkiOnJldHVybiJnbC51bmlmb3JtIitpKyJpdihsb2NhdGlvbnNbIitlKyJdLG9iaiIrdCsiKSI7Y2FzZSJ2IjpyZXR1cm4iZ2wudW5pZm9ybSIraSsiZnYobG9jYXRpb25zWyIrZSsiXSxvYmoiK3QrIikiO2RlZmF1bHQ6dGhyb3cgbmV3IHMoIiIsIlVucmVjb2duaXplZCBkYXRhIHR5cGUgZm9yIHZlY3RvciAiK25hbWUrIjogIityKX19fWZ1bmN0aW9uIHUodCxlKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuW1t0LGVdXTt2YXIgcj1bXTtmb3IodmFyIG4gaW4gZSl7dmFyIGk9ZVtuXSxvPXQ7bys9cGFyc2VJbnQobikrIiI9PT1uPyJbIituKyJdIjoiLiIrbiwib2JqZWN0Ij09dHlwZW9mIGk/ci5wdXNoLmFwcGx5KHIsdShvLGkpKTpyLnB1c2goW28saV0pfXJldHVybiByfWZ1bmN0aW9uIGgoZSl7Zm9yKHZhciBuPVsicmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVByb3BlcnR5KG9iail7Il0saT11KCIiLGUpLGE9MDthPGkubGVuZ3RoOysrYSl7dmFyIHM9aVthXSxsPXNbMF0saD1zWzFdO29baF0mJm4ucHVzaChjKGwsaCxyW2hdLnR5cGUpKX1uLnB1c2goInJldHVybiBvYmp9Iik7dmFyIGY9bmV3IEZ1bmN0aW9uKCJnbCIsImxvY2F0aW9ucyIsbi5qb2luKCJcbiIpKTtyZXR1cm4gZih0LG8pfWZ1bmN0aW9uIGYodCl7c3dpdGNoKHQpe2Nhc2UiYm9vbCI6cmV0dXJuITE7Y2FzZSJpbnQiOmNhc2Uic2FtcGxlcjJEIjpjYXNlInNhbXBsZXJDdWJlIjpyZXR1cm4gMDtjYXNlImZsb2F0IjpyZXR1cm4gMDtkZWZhdWx0OnZhciBlPXQuaW5kZXhPZigidmVjIik7aWYoZT49MCYmMT49ZSYmdC5sZW5ndGg9PT00K2Upe3ZhciByPXQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKS00ODtpZigyPnJ8fHI+NCl0aHJvdyBuZXcgcygiIiwiSW52YWxpZCBkYXRhIHR5cGUiKTtyZXR1cm4iYiI9PT10LmNoYXJBdCgwKT9pKHIsITEpOmkociwwKX1pZigwPT09dC5pbmRleE9mKCJtYXQiKSYmND09PXQubGVuZ3RoKXt2YXIgcj10LmNoYXJDb2RlQXQodC5sZW5ndGgtMSktNDg7aWYoMj5yfHxyPjQpdGhyb3cgbmV3IHMoIiIsIkludmFsaWQgdW5pZm9ybSBkaW1lbnNpb24gdHlwZSBmb3IgbWF0cml4ICIrbmFtZSsiOiAiK3QpO3JldHVybiBpKHIqciwwKX10aHJvdyBuZXcgcygiIiwiVW5rbm93biB1bmlmb3JtIGRhdGEgdHlwZSBmb3IgIituYW1lKyI6ICIrdCl9fWZ1bmN0aW9uIGQodCxlLGkpe2lmKCJvYmplY3QiPT10eXBlb2YgaSl7dmFyIGE9cChpKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6bihhKSxzZXQ6aChpKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMX0pfWVsc2Ugb1tpXT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6bChpKSxzZXQ6aChpKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMX0pOnRbZV09ZihyW2ldLnR5cGUpfWZ1bmN0aW9uIHAodCl7dmFyIGU7aWYoQXJyYXkuaXNBcnJheSh0KSl7ZT1uZXcgQXJyYXkodC5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWQoZSxyLHRbcl0pfWVsc2V7ZT17fTtmb3IodmFyIG4gaW4gdClkKGUsbix0W25dKX1yZXR1cm4gZX12YXIgZz1hKHIsITApO3JldHVybntnZXQ6bihwKGcpKSxzZXQ6aChnKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19dmFyIGE9dCgiLi9yZWZsZWN0Iikscz10KCIuL0dMRXJyb3IiKTtlLmV4cG9ydHM9b30seyIuL0dMRXJyb3IiOjE1NSwiLi9yZWZsZWN0IjoxNTh9XSwxNTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj17fSxuPTA7bjx0Lmxlbmd0aDsrK24pZm9yKHZhciBpPXRbbl0ubmFtZSxvPWkuc3BsaXQoIi4iKSxhPXIscz0wO3M8by5sZW5ndGg7KytzKXt2YXIgbD1vW3NdLnNwbGl0KCJbIik7aWYobC5sZW5ndGg+MSl7bFswXWluIGF8fChhW2xbMF1dPVtdKSxhPWFbbFswXV07Zm9yKHZhciBjPTE7YzxsLmxlbmd0aDsrK2Mpe3ZhciB1PXBhcnNlSW50KGxbY10pO2M8bC5sZW5ndGgtMXx8czxvLmxlbmd0aC0xPyh1IGluIGF8fChjPGwubGVuZ3RoLTE/YVt1XT1bXTphW3VdPXt9KSxhPWFbdV0pOmU/YVt1XT1uOmFbdV09dFtuXS50eXBlfX1lbHNlIHM8by5sZW5ndGgtMT8obFswXWluIGF8fChhW2xbMF1dPXt9KSxhPWFbbFswXV0pOmU/YVtsWzBdXT1uOmFbbFswXV09dFtuXS50eXBlfXJldHVybiByfWUuZXhwb3J0cz1ufSx7fV0sMTU5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtpZighcyl7dmFyIHI9T2JqZWN0LmtleXMoYSk7cz17fTtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbil7dmFyIGk9cltuXTtzW3RbaV1dPWFbaV19fXJldHVybiBzW2VdfWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsdC5BQ1RJVkVfVU5JRk9STVMpLGk9W10sbz0wO3I+bzsrK28pe3ZhciBhPXQuZ2V0QWN0aXZlVW5pZm9ybShlLG8pO2lmKGEpe3ZhciBzPW4odCxhLnR5cGUpO2lmKGEuc2l6ZT4xKWZvcih2YXIgbD0wO2w8YS5zaXplOysrbClpLnB1c2goe25hbWU6YS5uYW1lLnJlcGxhY2UoIlswXSIsIlsiK2wrIl0iKSx0eXBlOnN9KTtlbHNlIGkucHVzaCh7bmFtZTphLm5hbWUsdHlwZTpzfSl9fXJldHVybiBpfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIHI9dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsdC5BQ1RJVkVfQVRUUklCVVRFUyksaT1bXSxvPTA7cj5vOysrbyl7dmFyIGE9dC5nZXRBY3RpdmVBdHRyaWIoZSxvKTthJiZpLnB1c2goe25hbWU6YS5uYW1lLHR5cGU6bih0LGEudHlwZSl9KX1yZXR1cm4gaX1yLnVuaWZvcm1zPWksci5hdHRyaWJ1dGVzPW87dmFyIGE9e0ZMT0FUOiJmbG9hdCIsRkxPQVRfVkVDMjoidmVjMiIsRkxPQVRfVkVDMzoidmVjMyIsRkxPQVRfVkVDNDoidmVjNCIsSU5UOiJpbnQiLElOVF9WRUMyOiJpdmVjMiIsSU5UX1ZFQzM6Iml2ZWMzIixJTlRfVkVDNDoiaXZlYzQiLEJPT0w6ImJvb2wiLEJPT0xfVkVDMjoiYnZlYzIiLEJPT0xfVkVDMzoiYnZlYzMiLEJPT0xfVkVDNDoiYnZlYzQiLEZMT0FUX01BVDI6Im1hdDIiLEZMT0FUX01BVDM6Im1hdDMiLEZMT0FUX01BVDQ6Im1hdDQiLFNBTVBMRVJfMkQ6InNhbXBsZXIyRCIsU0FNUExFUl9DVUJFOiJzYW1wbGVyQ3ViZSJ9LHM9bnVsbH0se31dLDE2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSxvLGEpe3RoaXMuaWQ9dCx0aGlzLnNyYz1lLHRoaXMudHlwZT1yLHRoaXMuc2hhZGVyPW4sdGhpcy5jb3VudD1vLHRoaXMucHJvZ3JhbXM9W10sdGhpcy5jYWNoZT1hfWZ1bmN0aW9uIGkodCl7dGhpcy5nbD10LHRoaXMuc2hhZGVycz1be30se31dLHRoaXMucHJvZ3JhbXM9e319ZnVuY3Rpb24gbyh0LGUscil7dmFyIG49dC5jcmVhdGVTaGFkZXIoZSk7aWYodC5zaGFkZXJTb3VyY2UobixyKSx0LmNvbXBpbGVTaGFkZXIobiksIXQuZ2V0U2hhZGVyUGFyYW1ldGVyKG4sdC5DT01QSUxFX1NUQVRVUykpe3ZhciBpPXQuZ2V0U2hhZGVySW5mb0xvZyhuKTt0cnl7dmFyIG89aChpLHIsZSl9Y2F0Y2goYSl7dGhyb3cgY29uc29sZS53YXJuKCJGYWlsZWQgdG8gZm9ybWF0IGNvbXBpbGVyIGVycm9yOiAiK2EpLG5ldyB1KGksIkVycm9yIGNvbXBpbGluZyBzaGFkZXI6XG4iK2kpfXRocm93IG5ldyB1KGksby5zaG9ydCxvLmxvbmcpfXJldHVybiBufWZ1bmN0aW9uIGEodCxlLHIsbixpKXt2YXIgbz10LmNyZWF0ZVByb2dyYW0oKTt0LmF0dGFjaFNoYWRlcihvLGUpLHQuYXR0YWNoU2hhZGVyKG8scik7Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDsrK2EpdC5iaW5kQXR0cmliTG9jYXRpb24obyxpW2FdLG5bYV0pO2lmKHQubGlua1Byb2dyYW0obyksIXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihvLHQuTElOS19TVEFUVVMpKXt2YXIgcz10LmdldFByb2dyYW1JbmZvTG9nKG8pO3Rocm93IG5ldyB1KHMsIkVycm9yIGxpbmtpbmcgcHJvZ3JhbTogIitzKX1yZXR1cm4gb31mdW5jdGlvbiBzKHQpe3ZhciBlPWQuZ2V0KHQpO3JldHVybiBlfHwoZT1uZXcgaSh0KSxkLnNldCh0LGUpKSxlfWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybiBzKHQpLmdldFNoYWRlclJlZmVyZW5jZShlLHIpfWZ1bmN0aW9uIGModCxlLHIsbixpKXtyZXR1cm4gcyh0KS5nZXRQcm9ncmFtKGUscixuLGkpfXIuc2hhZGVyPWwsci5wcm9ncmFtPWM7dmFyIHU9dCgiLi9HTEVycm9yIiksaD10KCJnbC1mb3JtYXQtY29tcGlsZXItZXJyb3IiKSxmPSJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD90KCJ3ZWFrbWFwLXNoaW0iKTpXZWFrTWFwLGQ9bmV3IGYscD0wO24ucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZigwPT09LS10aGlzLmNvdW50KXtmb3IodmFyIHQ9dGhpcy5jYWNoZSxlPXQuZ2wscj10aGlzLnByb2dyYW1zLG49MCxpPXIubGVuZ3RoO2k+bjsrK24pe3ZhciBvPXQucHJvZ3JhbXNbcltuXV07byYmKGRlbGV0ZSB0LnByb2dyYW1zW25dLGUuZGVsZXRlUHJvZ3JhbShvKSl9ZS5kZWxldGVTaGFkZXIodGhpcy5zaGFkZXIpLGRlbGV0ZSB0LnNoYWRlcnNbdGhpcy50eXBlPT09ZS5GUkFHTUVOVF9TSEFERVJ8MF1bdGhpcy5zcmNdfX07dmFyIGc9aS5wcm90b3R5cGU7Zy5nZXRTaGFkZXJSZWZlcmVuY2U9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmdsLGk9dGhpcy5zaGFkZXJzW3Q9PT1yLkZSQUdNRU5UX1NIQURFUnwwXSxhPWlbZV07aWYoYSYmci5pc1NoYWRlcihhLnNoYWRlcikpYS5jb3VudCs9MTtlbHNle3ZhciBzPW8ocix0LGUpO2E9aVtlXT1uZXcgbihwKyssZSx0LHMsW10sMSx0aGlzKX1yZXR1cm4gYX0sZy5nZXRQcm9ncmFtPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPVt0LmlkLGUuaWQsci5qb2luKCI6Iiksbi5qb2luKCI6IildLmpvaW4oIkAiKSxvPXRoaXMucHJvZ3JhbXNbaV07cmV0dXJuIG8mJnRoaXMuZ2wuaXNQcm9ncmFtKG8pfHwodGhpcy5wcm9ncmFtc1tpXT1vPWEodGhpcy5nbCx0LnNoYWRlcixlLnNoYWRlcixyLG4pLHQucHJvZ3JhbXMucHVzaChpKSxlLnByb2dyYW1zLnB1c2goaSkpLG99fSx7Ii4vR0xFcnJvciI6MTU1LCJnbC1mb3JtYXQtY29tcGlsZXItZXJyb3IiOjE2MSwid2Vha21hcC1zaGltIjoxNzJ9XSwxNjE6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49YShlKXx8Im9mIHVua25vd24gbmFtZSAoc2VlIG5wbSBnbHNsLXNoYWRlci1uYW1lKSIsbD0idW5rbm93biB0eXBlIjt2b2lkIDAhPT1yJiYobD1yPT09by5GUkFHTUVOVF9TSEFERVI/ImZyYWdtZW50IjoidmVydGV4Iik7Zm9yKHZhciBjPWkoIkVycm9yIGNvbXBpbGluZyAlcyBzaGFkZXIgJXM6XG4iLGwsbiksdT1pKCIlcyVzIixjLHQpLGg9dC5zcGxpdCgiXG4iKSxmPXt9LGQ9MDtkPGgubGVuZ3RoO2QrKyl7dmFyIHA9aFtkXTtpZigiIiE9PXApe3ZhciBnPXBhcnNlSW50KHAuc3BsaXQoIjoiKVsyXSk7aWYoaXNOYU4oZykpdGhyb3cgbmV3IEVycm9yKGkoIkNvdWxkIG5vdCBwYXJzZSBlcnJvcjogJXMiLHApKTtmW2ddPXB9fWZvcih2YXIgdj1zKGUpLnNwbGl0KCJcbiIpLGQ9MDtkPHYubGVuZ3RoO2QrKylpZihmW2QrM118fGZbZCsyXXx8ZltkKzFdKXt2YXIgbT12W2RdO2lmKGMrPW0rIlxuIixmW2QrMV0pe3ZhciB5PWZbZCsxXTt5PXkuc3Vic3RyKHkuc3BsaXQoIjoiLDMpLmpvaW4oIjoiKS5sZW5ndGgrMSkudHJpbSgpLGMrPWkoIl5eXiAlc1xuXG4iLHkpfX1yZXR1cm57ImxvbmciOmMudHJpbSgpLCJzaG9ydCI6dS50cmltKCl9fXZhciBpPXQoInNwcmludGYtanMiKS5zcHJpbnRmLG89dCgiZ2wtY29uc3RhbnRzL2xvb2t1cCIpLGE9dCgiZ2xzbC1zaGFkZXItbmFtZSIpLHM9dCgiYWRkLWxpbmUtbnVtYmVycyIpO2UuZXhwb3J0cz1ufSx7ImFkZC1saW5lLW51bWJlcnMiOjE2MiwiZ2wtY29uc3RhbnRzL2xvb2t1cCI6MTY2LCJnbHNsLXNoYWRlci1uYW1lIjoxNjcsInNwcmludGYtanMiOjE2OX1dLDE2MjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIpe2U9Im51bWJlciI9PXR5cGVvZiBlP2U6MSxyPXJ8fCI6ICI7dmFyIG49dC5zcGxpdCgvXHI/XG4vKSxvPVN0cmluZyhuLmxlbmd0aCtlLTEpLmxlbmd0aDtyZXR1cm4gbi5tYXAoZnVuY3Rpb24odCxuKXt2YXIgYT1uK2Uscz1TdHJpbmcoYSkubGVuZ3RoLGw9aShhLG8tcyk7cmV0dXJuIGwrcit0fSkuam9pbigiXG4iKX12YXIgaT10KCJwYWQtbGVmdCIpO2UuZXhwb3J0cz1ufSx7InBhZC1sZWZ0IjoxNjN9XSwxNjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicmVwZWF0LXN0cmluZyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHI9InVuZGVmaW5lZCIhPXR5cGVvZiByP3IrIiI6IiAiLG4ocixlKSt0fX0seyJyZXBlYXQtc3RyaW5nIjoxNjR9XSwxNjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZXBlYXQtc3RyaW5nIGV4cGVjdHMgYSBzdHJpbmcuIik7aWYoMT09PWUpcmV0dXJuIHQ7aWYoMj09PWUpcmV0dXJuIHQrdDt2YXIgcj10Lmxlbmd0aCplO2ZvcihpPT09dCYmInVuZGVmaW5lZCIhPXR5cGVvZiBpfHwoaT10LG89IiIpO3I+by5sZW5ndGgmJmU+MCYmKDEmZSYmKG8rPXQpLGU+Pj0xKTspdCs9dDtyZXR1cm4gby5zdWJzdHIoMCxyKX12YXIgaSxvPSIiO2UuZXhwb3J0cz1ufSx7fV0sMTY1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXswOiJOT05FIiwxOiJPTkUiLDI6IkxJTkVfTE9PUCIsMzoiTElORV9TVFJJUCIsNDoiVFJJQU5HTEVTIiw1OiJUUklBTkdMRV9TVFJJUCIsNjoiVFJJQU5HTEVfRkFOIiwyNTY6IkRFUFRIX0JVRkZFUl9CSVQiLDUxMjoiTkVWRVIiLDUxMzoiTEVTUyIsNTE0OiJFUVVBTCIsNTE1OiJMRVFVQUwiLDUxNjoiR1JFQVRFUiIsNTE3OiJOT1RFUVVBTCIsNTE4OiJHRVFVQUwiLDUxOToiQUxXQVlTIiw3Njg6IlNSQ19DT0xPUiIsNzY5OiJPTkVfTUlOVVNfU1JDX0NPTE9SIiw3NzA6IlNSQ19BTFBIQSIsNzcxOiJPTkVfTUlOVVNfU1JDX0FMUEhBIiw3NzI6IkRTVF9BTFBIQSIsNzczOiJPTkVfTUlOVVNfRFNUX0FMUEhBIiw3NzQ6IkRTVF9DT0xPUiIsNzc1OiJPTkVfTUlOVVNfRFNUX0NPTE9SIiw3NzY6IlNSQ19BTFBIQV9TQVRVUkFURSIsMTAyNDoiU1RFTkNJTF9CVUZGRVJfQklUIiwxMDI4OiJGUk9OVCIsMTAyOToiQkFDSyIsMTAzMjoiRlJPTlRfQU5EX0JBQ0siLDEyODA6IklOVkFMSURfRU5VTSIsMTI4MToiSU5WQUxJRF9WQUxVRSIsMTI4MjoiSU5WQUxJRF9PUEVSQVRJT04iLDEyODU6Ik9VVF9PRl9NRU1PUlkiLDEyODY6IklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIiwyMzA0OiJDVyIsMjMwNToiQ0NXIiwyODQ5OiJMSU5FX1dJRFRIIiwyODg0OiJDVUxMX0ZBQ0UiLDI4ODU6IkNVTExfRkFDRV9NT0RFIiwyODg2OiJGUk9OVF9GQUNFIiwyOTI4OiJERVBUSF9SQU5HRSIsMjkyOToiREVQVEhfVEVTVCIsMjkzMDoiREVQVEhfV1JJVEVNQVNLIiwyOTMxOiJERVBUSF9DTEVBUl9WQUxVRSIsMjkzMjoiREVQVEhfRlVOQyIsMjk2MDoiU1RFTkNJTF9URVNUIiwyOTYxOiJTVEVOQ0lMX0NMRUFSX1ZBTFVFIiwyOTYyOiJTVEVOQ0lMX0ZVTkMiLDI5NjM6IlNURU5DSUxfVkFMVUVfTUFTSyIsMjk2NDoiU1RFTkNJTF9GQUlMIiwyOTY1OiJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCIsMjk2NjoiU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MiLDI5Njc6IlNURU5DSUxfUkVGIiwyOTY4OiJTVEVOQ0lMX1dSSVRFTUFTSyIsMjk3ODoiVklFV1BPUlQiLDMwMjQ6IkRJVEhFUiIsMzA0MjoiQkxFTkQiLDMwODg6IlNDSVNTT1JfQk9YIiwzMDg5OiJTQ0lTU09SX1RFU1QiLDMxMDY6IkNPTE9SX0NMRUFSX1ZBTFVFIiwzMTA3OiJDT0xPUl9XUklURU1BU0siLDMzMTc6IlVOUEFDS19BTElHTk1FTlQiLDMzMzM6IlBBQ0tfQUxJR05NRU5UIiwzMzc5OiJNQVhfVEVYVFVSRV9TSVpFIiwzMzg2OiJNQVhfVklFV1BPUlRfRElNUyIsMzQwODoiU1VCUElYRUxfQklUUyIsMzQxMDoiUkVEX0JJVFMiLDM0MTE6IkdSRUVOX0JJVFMiLDM0MTI6IkJMVUVfQklUUyIsMzQxMzoiQUxQSEFfQklUUyIsMzQxNDoiREVQVEhfQklUUyIsMzQxNToiU1RFTkNJTF9CSVRTIiwzNTUzOiJURVhUVVJFXzJEIiw0MzUyOiJET05UX0NBUkUiLDQzNTM6IkZBU1RFU1QiLDQzNTQ6Ik5JQ0VTVCIsNTEyMDoiQllURSIsNTEyMToiVU5TSUdORURfQllURSIsNTEyMjoiU0hPUlQiLDUxMjM6IlVOU0lHTkVEX1NIT1JUIiw1MTI0OiJJTlQiLDUxMjU6IlVOU0lHTkVEX0lOVCIsNTEyNjoiRkxPQVQiLDUzODY6IklOVkVSVCIsNTg5MDoiVEVYVFVSRSIsNjQwMToiU1RFTkNJTF9JTkRFWCIsNjQwMjoiREVQVEhfQ09NUE9ORU5UIiw2NDA2OiJBTFBIQSIsNjQwNzoiUkdCIiw2NDA4OiJSR0JBIiw2NDA5OiJMVU1JTkFOQ0UiLDY0MTA6IkxVTUlOQU5DRV9BTFBIQSIsNzY4MDoiS0VFUCIsNzY4MToiUkVQTEFDRSIsNzY4MjoiSU5DUiIsNzY4MzoiREVDUiIsNzkzNjoiVkVORE9SIiw3OTM3OiJSRU5ERVJFUiIsNzkzODoiVkVSU0lPTiIsOTcyODoiTkVBUkVTVCIsOTcyOToiTElORUFSIiw5OTg0OiJORUFSRVNUX01JUE1BUF9ORUFSRVNUIiw5OTg1OiJMSU5FQVJfTUlQTUFQX05FQVJFU1QiLDk5ODY6Ik5FQVJFU1RfTUlQTUFQX0xJTkVBUiIsOTk4NzoiTElORUFSX01JUE1BUF9MSU5FQVIiLDEwMjQwOiJURVhUVVJFX01BR19GSUxURVIiLDEwMjQxOiJURVhUVVJFX01JTl9GSUxURVIiLDEwMjQyOiJURVhUVVJFX1dSQVBfUyIsMTAyNDM6IlRFWFRVUkVfV1JBUF9UIiwxMDQ5NzoiUkVQRUFUIiwxMDc1MjoiUE9MWUdPTl9PRkZTRVRfVU5JVFMiLDE2Mzg0OiJDT0xPUl9CVUZGRVJfQklUIiwzMjc2OToiQ09OU1RBTlRfQ09MT1IiLDMyNzcwOiJPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IiLDMyNzcxOiJDT05TVEFOVF9BTFBIQSIsMzI3NzI6Ik9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSIsMzI3NzM6IkJMRU5EX0NPTE9SIiwzMjc3NDoiRlVOQ19BREQiLDMyNzc3OiJCTEVORF9FUVVBVElPTl9SR0IiLDMyNzc4OiJGVU5DX1NVQlRSQUNUIiwzMjc3OToiRlVOQ19SRVZFUlNFX1NVQlRSQUNUIiwzMjgxOToiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsMzI4MjA6IlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLDMyODIzOiJQT0xZR09OX09GRlNFVF9GSUxMIiwzMjgyNDoiUE9MWUdPTl9PRkZTRVRfRkFDVE9SIiwzMjg1NDoiUkdCQTQiLDMyODU1OiJSR0I1X0ExIiwzMjg3MzoiVEVYVFVSRV9CSU5ESU5HXzJEIiwzMjkyNjoiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIiwzMjkyODoiU0FNUExFX0NPVkVSQUdFIiwzMjkzNjoiU0FNUExFX0JVRkZFUlMiLDMyOTM3OiJTQU1QTEVTIiwzMjkzODoiU0FNUExFX0NPVkVSQUdFX1ZBTFVFIiwzMjkzOToiU0FNUExFX0NPVkVSQUdFX0lOVkVSVCIsMzI5Njg6IkJMRU5EX0RTVF9SR0IiLDMyOTY5OiJCTEVORF9TUkNfUkdCIiwzMjk3MDoiQkxFTkRfRFNUX0FMUEhBIiwzMjk3MToiQkxFTkRfU1JDX0FMUEhBIiwzMzA3MToiQ0xBTVBfVE9fRURHRSIsMzMxNzA6IkdFTkVSQVRFX01JUE1BUF9ISU5UIiwzMzE4OToiREVQVEhfQ09NUE9ORU5UMTYiLDMzMzA2OiJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiLDMzNjM1OiJVTlNJR05FRF9TSE9SVF81XzZfNSIsMzM2NDg6Ik1JUlJPUkVEX1JFUEVBVCIsMzM5MDE6IkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSIsMzM5MDI6IkFMSUFTRURfTElORV9XSURUSF9SQU5HRSIsMzM5ODQ6IlRFWFRVUkUwIiwzMzk4NToiVEVYVFVSRTEiLDMzOTg2OiJURVhUVVJFMiIsMzM5ODc6IlRFWFRVUkUzIiwzMzk4ODoiVEVYVFVSRTQiLDMzOTg5OiJURVhUVVJFNSIsMzM5OTA6IlRFWFRVUkU2IiwzMzk5MToiVEVYVFVSRTciLDMzOTkyOiJURVhUVVJFOCIsMzM5OTM6IlRFWFRVUkU5IiwzMzk5NDoiVEVYVFVSRTEwIiwzMzk5NToiVEVYVFVSRTExIiwzMzk5NjoiVEVYVFVSRTEyIiwzMzk5NzoiVEVYVFVSRTEzIiwzMzk5ODoiVEVYVFVSRTE0IiwzMzk5OToiVEVYVFVSRTE1IiwzNGUzOiJURVhUVVJFMTYiLDM0MDAxOiJURVhUVVJFMTciLDM0MDAyOiJURVhUVVJFMTgiLDM0MDAzOiJURVhUVVJFMTkiLDM0MDA0OiJURVhUVVJFMjAiLDM0MDA1OiJURVhUVVJFMjEiLDM0MDA2OiJURVhUVVJFMjIiLDM0MDA3OiJURVhUVVJFMjMiLDM0MDA4OiJURVhUVVJFMjQiLDM0MDA5OiJURVhUVVJFMjUiLDM0MDEwOiJURVhUVVJFMjYiLDM0MDExOiJURVhUVVJFMjciLDM0MDEyOiJURVhUVVJFMjgiLDM0MDEzOiJURVhUVVJFMjkiLDM0MDE0OiJURVhUVVJFMzAiLDM0MDE1OiJURVhUVVJFMzEiLDM0MDE2OiJBQ1RJVkVfVEVYVFVSRSIsMzQwMjQ6Ik1BWF9SRU5ERVJCVUZGRVJfU0laRSIsMzQwNDE6IkRFUFRIX1NURU5DSUwiLDM0MDU1OiJJTkNSX1dSQVAiLDM0MDU2OiJERUNSX1dSQVAiLDM0MDY3OiJURVhUVVJFX0NVQkVfTUFQIiwzNDA2ODoiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIiwzNDA2OToiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YIiwzNDA3MDoiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YIiwzNDA3MToiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZIiwzNDA3MjoiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZIiwzNDA3MzoiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aIiwzNDA3NDoiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aIiwzNDA3NjoiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSIsMzQzMzg6IlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCIsMzQzMzk6IlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSIsMzQzNDA6IlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFIiwzNDM0MToiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIiwzNDM0MjoiQ1VSUkVOVF9WRVJURVhfQVRUUklCIiwzNDM3MzoiVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSIiwzNDQ2NjoiTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIiwzNDQ2NzoiQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMiLDM0NjYwOiJCVUZGRVJfU0laRSIsMzQ2NjE6IkJVRkZFUl9VU0FHRSIsMzQ4MTY6IlNURU5DSUxfQkFDS19GVU5DIiwzNDgxNzoiU1RFTkNJTF9CQUNLX0ZBSUwiLDM0ODE4OiJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMIiwzNDgxOToiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyIsMzQ4Nzc6IkJMRU5EX0VRVUFUSU9OX0FMUEhBIiwzNDkyMToiTUFYX1ZFUlRFWF9BVFRSSUJTIiwzNDkyMjoiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEIiwzNDkzMDoiTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMiLDM0OTYyOiJBUlJBWV9CVUZGRVIiLDM0OTYzOiJFTEVNRU5UX0FSUkFZX0JVRkZFUiIsMzQ5NjQ6IkFSUkFZX0JVRkZFUl9CSU5ESU5HIiwzNDk2NToiRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyIsMzQ5NzU6IlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkciLDM1MDQwOiJTVFJFQU1fRFJBVyIsMzUwNDQ6IlNUQVRJQ19EUkFXIiwzNTA0ODoiRFlOQU1JQ19EUkFXIiwzNTYzMjoiRlJBR01FTlRfU0hBREVSIiwzNTYzMzoiVkVSVEVYX1NIQURFUiIsMzU2NjA6Ik1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyIsMzU2NjE6Ik1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTIiwzNTY2MzoiU0hBREVSX1RZUEUiLDM1NjY0OiJGTE9BVF9WRUMyIiwzNTY2NToiRkxPQVRfVkVDMyIsMzU2NjY6IkZMT0FUX1ZFQzQiLDM1NjY3OiJJTlRfVkVDMiIsMzU2Njg6IklOVF9WRUMzIiwzNTY2OToiSU5UX1ZFQzQiLDM1NjcwOiJCT09MIiwzNTY3MToiQk9PTF9WRUMyIiwzNTY3MjoiQk9PTF9WRUMzIiwzNTY3MzoiQk9PTF9WRUM0IiwzNTY3NDoiRkxPQVRfTUFUMiIsMzU2NzU6IkZMT0FUX01BVDMiLDM1Njc2OiJGTE9BVF9NQVQ0IiwzNTY3ODoiU0FNUExFUl8yRCIsMzU2ODA6IlNBTVBMRVJfQ1VCRSIsMzU3MTI6IkRFTEVURV9TVEFUVVMiLDM1NzEzOiJDT01QSUxFX1NUQVRVUyIsMzU3MTQ6IkxJTktfU1RBVFVTIiwzNTcxNToiVkFMSURBVEVfU1RBVFVTIiwzNTcxNjoiSU5GT19MT0dfTEVOR1RIIiwzNTcxNzoiQVRUQUNIRURfU0hBREVSUyIsMzU3MTg6IkFDVElWRV9VTklGT1JNUyIsMzU3MTk6IkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgiLDM1NzIwOiJTSEFERVJfU09VUkNFX0xFTkdUSCIsMzU3MjE6IkFDVElWRV9BVFRSSUJVVEVTIiwzNTcyMjoiQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIiwzNTcyNDoiU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OIiwzNTcyNToiQ1VSUkVOVF9QUk9HUkFNIiwzNjAwMzoiU1RFTkNJTF9CQUNLX1JFRiIsMzYwMDQ6IlNURU5DSUxfQkFDS19WQUxVRV9NQVNLIiwzNjAwNToiU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyIsMzYwMDY6IkZSQU1FQlVGRkVSX0JJTkRJTkciLDM2MDA3OiJSRU5ERVJCVUZGRVJfQklORElORyIsMzYwNDg6IkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUiLDM2MDQ5OiJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FIiwzNjA1MDoiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMIiwzNjA1MToiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UiLDM2MDUzOiJGUkFNRUJVRkZFUl9DT01QTEVURSIsMzYwNTQ6IkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCIsMzYwNTU6IkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UIiwzNjA1NzoiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIiwzNjA2MToiRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQiLDM2MDY0OiJDT0xPUl9BVFRBQ0hNRU5UMCIsMzYwOTY6IkRFUFRIX0FUVEFDSE1FTlQiLDM2MTI4OiJTVEVOQ0lMX0FUVEFDSE1FTlQiLDM2MTYwOiJGUkFNRUJVRkZFUiIsMzYxNjE6IlJFTkRFUkJVRkZFUiIsMzYxNjI6IlJFTkRFUkJVRkZFUl9XSURUSCIsMzYxNjM6IlJFTkRFUkJVRkZFUl9IRUlHSFQiLDM2MTY0OiJSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUIiwzNjE2ODoiU1RFTkNJTF9JTkRFWDgiLDM2MTc2OiJSRU5ERVJCVUZGRVJfUkVEX1NJWkUiLDM2MTc3OiJSRU5ERVJCVUZGRVJfR1JFRU5fU0laRSIsMzYxNzg6IlJFTkRFUkJVRkZFUl9CTFVFX1NJWkUiLDM2MTc5OiJSRU5ERVJCVUZGRVJfQUxQSEFfU0laRSIsMzYxODA6IlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFIiwzNjE4MToiUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSIsMzYxOTQ6IlJHQjU2NSIsMzYzMzY6IkxPV19GTE9BVCIsMzYzMzc6Ik1FRElVTV9GTE9BVCIsMzYzMzg6IkhJR0hfRkxPQVQiLDM2MzM5OiJMT1dfSU5UIiwzNjM0MDoiTUVESVVNX0lOVCIsMzYzNDE6IkhJR0hfSU5UIiwzNjM0NjoiU0hBREVSX0NPTVBJTEVSIiwzNjM0NzoiTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMiLDM2MzQ4OiJNQVhfVkFSWUlOR19WRUNUT1JTIiwzNjM0OToiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyIsMzc0NDA6IlVOUEFDS19GTElQX1lfV0VCR0wiLDM3NDQxOiJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wiLDM3NDQyOiJDT05URVhUX0xPU1RfV0VCR0wiLDM3NDQzOiJVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIiwzNzQ0NDoiQlJPV1NFUl9ERUZBVUxUX1dFQkdMIn19LHt9XSwxNjY6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLzEuMC9udW1iZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfX0seyIuLzEuMC9udW1iZXJzIjoxNjV9XSwxNjc6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT1BcnJheS5pc0FycmF5KHQpP3Q6aSh0KSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07aWYoInByZXByb2Nlc3NvciI9PT1uLnR5cGUpe3ZhciBhPW4uZGF0YS5tYXRjaCgvXCNkZWZpbmVccytTSEFERVJfTkFNRShfQjY0KT9ccysoLispJC8pO2lmKGEmJmFbMl0pe3ZhciBzPWFbMV0sbD1hWzJdO3JldHVybihzP28obCk6bCkudHJpbSgpfX19fXZhciBpPXQoImdsc2wtdG9rZW5pemVyIiksbz10KCJhdG9iLWxpdGUiKTtlLmV4cG9ydHM9bn0seyJhdG9iLWxpdGUiOjE2OCwiZ2xzbC10b2tlbml6ZXIiOjE5Mn1dLDE2ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYXRvYih0KX19LHt9XSwKMTY5OltmdW5jdGlvbihlLHIsbil7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoKXt2YXIgdD1hcmd1bWVudHNbMF0sZT1yLmNhY2hlO3JldHVybiBlW3RdJiZlLmhhc093blByb3BlcnR5KHQpfHwoZVt0XT1yLnBhcnNlKHQpKSxyLmZvcm1hdC5jYWxsKG51bGwsZVt0XSxhcmd1bWVudHMpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gQXJyYXkoZSsxKS5qb2luKHQpfXZhciBhPXtub3Rfc3RyaW5nOi9bXnNdLyxudW1iZXI6L1tkaWVmZ10vLGpzb246L1tqXS8sbm90X2pzb246L1teal0vLHRleHQ6L15bXlx4MjVdKy8sbW9kdWxvOi9eXHgyNXsyfS8scGxhY2Vob2xkZXI6L15ceDI1KD86KFsxLTldXGQqKVwkfFwoKFteXCldKylcKSk/KFwrKT8oMHwnW14kXSk/KC0pPyhcZCspPyg/OlwuKFxkKykpPyhbYi1naWpvc3V4WF0pLyxrZXk6L14oW2Etel9dW2Etel9cZF0qKS9pLGtleV9hY2Nlc3M6L15cLihbYS16X11bYS16X1xkXSopL2ksaW5kZXhfYWNjZXNzOi9eXFsoXGQrKVxdLyxzaWduOi9eW1wrXC1dL307ci5mb3JtYXQ9ZnVuY3Rpb24odCxlKXt2YXIgbixzLGwsYyx1LGgsZixkPTEscD10Lmxlbmd0aCxnPSIiLHY9W10sbT0hMCx5PSIiO2ZvcihzPTA7cD5zO3MrKylpZihnPWkodFtzXSksInN0cmluZyI9PT1nKXZbdi5sZW5ndGhdPXRbc107ZWxzZSBpZigiYXJyYXkiPT09Zyl7aWYoYz10W3NdLGNbMl0pZm9yKG49ZVtkXSxsPTA7bDxjWzJdLmxlbmd0aDtsKyspe2lmKCFuLmhhc093blByb3BlcnR5KGNbMl1bbF0pKXRocm93IG5ldyBFcnJvcihyKCJbc3ByaW50Zl0gcHJvcGVydHkgJyVzJyBkb2VzIG5vdCBleGlzdCIsY1syXVtsXSkpO249bltjWzJdW2xdXX1lbHNlIG49Y1sxXT9lW2NbMV1dOmVbZCsrXTtpZigiZnVuY3Rpb24iPT1pKG4pJiYobj1uKCkpLGEubm90X3N0cmluZy50ZXN0KGNbOF0pJiZhLm5vdF9qc29uLnRlc3QoY1s4XSkmJiJudW1iZXIiIT1pKG4pJiZpc05hTihuKSl0aHJvdyBuZXcgVHlwZUVycm9yKHIoIltzcHJpbnRmXSBleHBlY3RpbmcgbnVtYmVyIGJ1dCBmb3VuZCAlcyIsaShuKSkpO3N3aXRjaChhLm51bWJlci50ZXN0KGNbOF0pJiYobT1uPj0wKSxjWzhdKXtjYXNlImIiOm49bi50b1N0cmluZygyKTticmVhaztjYXNlImMiOm49U3RyaW5nLmZyb21DaGFyQ29kZShuKTticmVhaztjYXNlImQiOmNhc2UiaSI6bj1wYXJzZUludChuLDEwKTticmVhaztjYXNlImoiOm49SlNPTi5zdHJpbmdpZnkobixudWxsLGNbNl0/cGFyc2VJbnQoY1s2XSk6MCk7YnJlYWs7Y2FzZSJlIjpuPWNbN10/bi50b0V4cG9uZW50aWFsKGNbN10pOm4udG9FeHBvbmVudGlhbCgpO2JyZWFrO2Nhc2UiZiI6bj1jWzddP3BhcnNlRmxvYXQobikudG9GaXhlZChjWzddKTpwYXJzZUZsb2F0KG4pO2JyZWFrO2Nhc2UiZyI6bj1jWzddP3BhcnNlRmxvYXQobikudG9QcmVjaXNpb24oY1s3XSk6cGFyc2VGbG9hdChuKTticmVhaztjYXNlIm8iOm49bi50b1N0cmluZyg4KTticmVhaztjYXNlInMiOm49KG49U3RyaW5nKG4pKSYmY1s3XT9uLnN1YnN0cmluZygwLGNbN10pOm47YnJlYWs7Y2FzZSJ1IjpuPj4+PTA7YnJlYWs7Y2FzZSJ4IjpuPW4udG9TdHJpbmcoMTYpO2JyZWFrO2Nhc2UiWCI6bj1uLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfWEuanNvbi50ZXN0KGNbOF0pP3Zbdi5sZW5ndGhdPW46KCFhLm51bWJlci50ZXN0KGNbOF0pfHxtJiYhY1szXT95PSIiOih5PW0/IisiOiItIixuPW4udG9TdHJpbmcoKS5yZXBsYWNlKGEuc2lnbiwiIikpLGg9Y1s0XT8iMCI9PT1jWzRdPyIwIjpjWzRdLmNoYXJBdCgxKToiICIsZj1jWzZdLSh5K24pLmxlbmd0aCx1PWNbNl0mJmY+MD9vKGgsZik6IiIsdlt2Lmxlbmd0aF09Y1s1XT95K24rdToiMCI9PT1oP3krdStuOnUreStuKX1yZXR1cm4gdi5qb2luKCIiKX0sci5jYWNoZT17fSxyLnBhcnNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LHI9W10sbj1bXSxpPTA7ZTspe2lmKG51bGwhPT0ocj1hLnRleHQuZXhlYyhlKSkpbltuLmxlbmd0aF09clswXTtlbHNlIGlmKG51bGwhPT0ocj1hLm1vZHVsby5leGVjKGUpKSluW24ubGVuZ3RoXT0iJSI7ZWxzZXtpZihudWxsPT09KHI9YS5wbGFjZWhvbGRlci5leGVjKGUpKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltzcHJpbnRmXSB1bmV4cGVjdGVkIHBsYWNlaG9sZGVyIik7aWYoclsyXSl7aXw9MTt2YXIgbz1bXSxzPXJbMl0sbD1bXTtpZihudWxsPT09KGw9YS5rZXkuZXhlYyhzKSkpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJbc3ByaW50Zl0gZmFpbGVkIHRvIHBhcnNlIG5hbWVkIGFyZ3VtZW50IGtleSIpO2ZvcihvW28ubGVuZ3RoXT1sWzFdOyIiIT09KHM9cy5zdWJzdHJpbmcobFswXS5sZW5ndGgpKTspaWYobnVsbCE9PShsPWEua2V5X2FjY2Vzcy5leGVjKHMpKSlvW28ubGVuZ3RoXT1sWzFdO2Vsc2V7aWYobnVsbD09PShsPWEuaW5kZXhfYWNjZXNzLmV4ZWMocykpKXRocm93IG5ldyBTeW50YXhFcnJvcigiW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXkiKTtvW28ubGVuZ3RoXT1sWzFdfXJbMl09b31lbHNlIGl8PTI7aWYoMz09PWkpdGhyb3cgbmV3IEVycm9yKCJbc3ByaW50Zl0gbWl4aW5nIHBvc2l0aW9uYWwgYW5kIG5hbWVkIHBsYWNlaG9sZGVycyBpcyBub3QgKHlldCkgc3VwcG9ydGVkIik7bltuLmxlbmd0aF09cn1lPWUuc3Vic3RyaW5nKHJbMF0ubGVuZ3RoKX1yZXR1cm4gbn07dmFyIHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuPShlfHxbXSkuc2xpY2UoMCksbi5zcGxpY2UoMCwwLHQpLHIuYXBwbHkobnVsbCxuKX07InVuZGVmaW5lZCIhPXR5cGVvZiBuPyhuLnNwcmludGY9cixuLnZzcHJpbnRmPXMpOihlLnNwcmludGY9cixlLnZzcHJpbnRmPXMsImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYW1kJiZ0KGZ1bmN0aW9uKCl7cmV0dXJue3NwcmludGY6cix2c3ByaW50ZjpzfX0pKX0oInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/dGhpczp3aW5kb3cpfSx7fV0sMTcwOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihlKXtpZigoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSkmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiV2Vha21hcC1zaGltOiBLZXkgbXVzdCBiZSBvYmplY3QiKTt2YXIgcj1lLnZhbHVlT2YodCk7cmV0dXJuIHImJnIuaWRlbnRpdHk9PT10P3I6aShlLHQpfX12YXIgaT10KCIuL2hpZGRlbi1zdG9yZS5qcyIpO2UuZXhwb3J0cz1ufSx7Ii4vaGlkZGVuLXN0b3JlLmpzIjoxNzF9XSwxNzE6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9e2lkZW50aXR5OmV9LG49dC52YWx1ZU9mO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmFsdWVPZiIse3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZT9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpyfSx3cml0YWJsZTohMH0pLHJ9ZS5leHBvcnRzPW59LHt9XSwxNzI6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKCl7dmFyIHQ9aSgpO3JldHVybntnZXQ6ZnVuY3Rpb24oZSxyKXt2YXIgbj10KGUpO3JldHVybiBuLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP24udmFsdWU6cn0sc2V0OmZ1bmN0aW9uKGUscil7dChlKS52YWx1ZT1yfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuInZhbHVlImluIHQoZSl9LCJkZWxldGUiOmZ1bmN0aW9uKGUpe3JldHVybiBkZWxldGUgdChlKS52YWx1ZX19fXZhciBpPXQoIi4vY3JlYXRlLXN0b3JlLmpzIik7ZS5leHBvcnRzPW59LHsiLi9jcmVhdGUtc3RvcmUuanMiOjE3MH1dLDE3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3RoaXMucGxvdD10LHRoaXMuZW5hYmxlPVshMCwhMCwhMSwhMV0sdGhpcy53aWR0aD1bMSwxLDEsMV0sdGhpcy5jb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmNlbnRlcj1bMS8wLDEvMF19ZnVuY3Rpb24gaSh0LGUpe3ZhciByPW5ldyBuKHQpO3JldHVybiByLnVwZGF0ZShlKSx0LmFkZE92ZXJsYXkocikscn1lLmV4cG9ydHM9aTt2YXIgbz1uLnByb3RvdHlwZTtvLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9LHRoaXMuZW5hYmxlPSh0LmVuYWJsZXx8WyEwLCEwLCExLCExXSkuc2xpY2UoKSx0aGlzLndpZHRoPSh0LndpZHRofHxbMSwxLDEsMV0pLnNsaWNlKCksdGhpcy5jb2xvcj0odC5jb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgpfSksdGhpcy5jZW50ZXI9KHQuY2VudGVyfHxbMS8wLDEvMF0pLnNsaWNlKCksdGhpcy5wbG90LnNldE92ZXJsYXlEaXJ0eSgpfSxvLmRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVuYWJsZSxlPXRoaXMud2lkdGgscj10aGlzLmNvbG9yLG49dGhpcy5jZW50ZXIsaT10aGlzLnBsb3Qsbz1pLmxpbmUsYT1pLmRhdGFCb3gscz1pLnZpZXdCb3g7aWYoby5iaW5kKCksYVswXTw9blswXSYmblswXTw9YVsyXSYmYVsxXTw9blsxXSYmblsxXTw9YVszXSl7dmFyIGw9c1swXSsoblswXS1hWzBdKS8oYVsyXS1hWzBdKSooc1syXS1zWzBdKSxjPXNbMV0rKG5bMV0tYVsxXSkvKGFbM10tYVsxXSkqKHNbM10tc1sxXSk7dFswXSYmby5kcmF3TGluZShsLGMsc1swXSxjLGVbMF0sclswXSksdFsxXSYmby5kcmF3TGluZShsLGMsbCxzWzFdLGVbMV0sclsxXSksdFsyXSYmby5kcmF3TGluZShsLGMsc1syXSxjLGVbMl0sclsyXSksdFszXSYmby5kcmF3TGluZShsLGMsbCxzWzNdLGVbM10sclszXSl9fSxvLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnBsb3QucmVtb3ZlT3ZlcmxheSh0aGlzKX19LHt9XSwxNzQ6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbC1zaGFkZXIiKSxpPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWM0IHV2O1xuYXR0cmlidXRlIHZlYzMgZjtcbmF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uLCBpbnZlcnNlTW9kZWw7XG51bmlmb3JtIHZlYzMgbGlnaHRQb3NpdGlvbiwgZXllUG9zaXRpb247XG5cbnZhcnlpbmcgZmxvYXQgdmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xuXG52b2lkIG1haW4oKSB7XG4gIHdvcmxkQ29vcmRpbmF0ZSA9IHZlYzModXYuencsIGYueCk7XG4gIHZlYzQgd29ybGRQb3NpdGlvbiA9IG1vZGVsICogdmVjNCh3b3JsZENvb3JkaW5hdGUsIDEuMCk7XG4gIHZlYzQgY2xpcFBvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiB3b3JsZFBvc2l0aW9uO1xuICBnbF9Qb3NpdGlvbiA9IGNsaXBQb3NpdGlvbjtcbiAga2lsbCA9IGYueTtcbiAgdmFsdWUgPSBmLno7XG4gIHBsYW5lQ29vcmRpbmF0ZSA9IHV2Lnh5O1xuXG4gIC8vTGlnaHRpbmcgZ2VvbWV0cnkgcGFyYW1ldGVyc1xuICB2ZWM0IGNhbWVyYUNvb3JkaW5hdGUgPSB2aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgY2FtZXJhQ29vcmRpbmF0ZS54eXogLz0gY2FtZXJhQ29vcmRpbmF0ZS53O1xuICBsaWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRpb24gLSBjYW1lcmFDb29yZGluYXRlLnh5ejtcbiAgZXllRGlyZWN0aW9uICAgPSBleWVQb3NpdGlvbiAtIGNhbWVyYUNvb3JkaW5hdGUueHl6O1xuICBzdXJmYWNlTm9ybWFsICA9IG5vcm1hbGl6ZSgodmVjNChub3JtYWwsMCkgKiBpbnZlcnNlTW9kZWwpLnh5eik7XG59XG4iLG89InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5EaXN0cmlidXRpb25fMl8wKGZsb2F0IHgsIGZsb2F0IHJvdWdobmVzcykge1xuICBmbG9hdCBOZG90SCA9IG1heCh4LCAwLjAwMDEpO1xuICBmbG9hdCBjb3MyQWxwaGEgPSBOZG90SCAqIE5kb3RIO1xuICBmbG9hdCB0YW4yQWxwaGEgPSAoY29zMkFscGhhIC0gMS4wKSAvIGNvczJBbHBoYTtcbiAgZmxvYXQgcm91Z2huZXNzMiA9IHJvdWdobmVzcyAqIHJvdWdobmVzcztcbiAgZmxvYXQgZGVub20gPSAzLjE0MTU5MjY1MzU4OTc5MyAqIHJvdWdobmVzczIgKiBjb3MyQWxwaGEgKiBjb3MyQWxwaGE7XG4gIHJldHVybiBleHAodGFuMkFscGhhIC8gcm91Z2huZXNzMikgLyBkZW5vbTtcbn1cblxuXG5cbmZsb2F0IGJlY2ttYW5uU3BlY3VsYXJfMV8xKFxuICB2ZWMzIGxpZ2h0RGlyZWN0aW9uLFxuICB2ZWMzIHZpZXdEaXJlY3Rpb24sXG4gIHZlYzMgc3VyZmFjZU5vcm1hbCxcbiAgZmxvYXQgcm91Z2huZXNzKSB7XG4gIHJldHVybiBiZWNrbWFubkRpc3RyaWJ1dGlvbl8yXzAoZG90KHN1cmZhY2VOb3JtYWwsIG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24pKSwgcm91Z2huZXNzKTtcbn1cblxuXG5cbnVuaWZvcm0gdmVjMyBsb3dlckJvdW5kLCB1cHBlckJvdW5kO1xudW5pZm9ybSBmbG9hdCBjb250b3VyVGludDtcbnVuaWZvcm0gdmVjNCBjb250b3VyQ29sb3I7XG51bmlmb3JtIHNhbXBsZXIyRCBjb2xvcm1hcDtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCByb3VnaG5lc3MsIGZyZXNuZWwsIGthbWJpZW50LCBrZGlmZnVzZSwga3NwZWN1bGFyLCBvcGFjaXR5O1xuXG52YXJ5aW5nIGZsb2F0IHZhbHVlLCBraWxsO1xudmFyeWluZyB2ZWMzIHdvcmxkQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmKGtpbGwgPiAwLjAgfHxcbiAgICBhbnkobGVzc1RoYW4od29ybGRDb29yZGluYXRlLCBjbGlwQm91bmRzWzBdKSkgfHwgYW55KGdyZWF0ZXJUaGFuKHdvcmxkQ29vcmRpbmF0ZSwgY2xpcEJvdW5kc1sxXSkpKSB7XG4gICAgZGlzY2FyZDtcbiAgfVxuXG4gIHZlYzMgTiA9IG5vcm1hbGl6ZShzdXJmYWNlTm9ybWFsKTtcbiAgdmVjMyBWID0gbm9ybWFsaXplKGV5ZURpcmVjdGlvbik7XG4gIHZlYzMgTCA9IG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbik7XG5cbiAgaWYoZ2xfRnJvbnRGYWNpbmcpIHtcbiAgICBOID0gLU47XG4gIH1cblxuICBmbG9hdCBzcGVjdWxhciA9IGJlY2ttYW5uU3BlY3VsYXJfMV8xKEwsIFYsIE4sIHJvdWdobmVzcyk7XG4gIGZsb2F0IGRpZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4sIEwpLCAwLjApLCAxLjApO1xuXG4gIHZlYzQgc3VyZmFjZUNvbG9yID0gdGV4dHVyZTJEKGNvbG9ybWFwLCB2ZWMyKHZhbHVlLCB2YWx1ZSkpO1xuICB2ZWM0IGxpdENvbG9yID0gc3VyZmFjZUNvbG9yLmEgKiB2ZWM0KGRpZmZ1c2UgKiBzdXJmYWNlQ29sb3IucmdiICsga3NwZWN1bGFyICogdmVjMygxLDEsMSkgKiBzcGVjdWxhciwgIDEuMCk7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gbWl4KGxpdENvbG9yLCBjb250b3VyQ29sb3IsIGNvbnRvdXJUaW50KSAqIG9wYWNpdHk7XG59XG4iLGE9InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzQgdXY7XG5hdHRyaWJ1dGUgZmxvYXQgZjtcblxudW5pZm9ybSBtYXQzIHBlcm11dGF0aW9uO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSBmbG9hdCBoZWlnaHQsIHpPZmZzZXQ7XG5cbnZhcnlpbmcgZmxvYXQgdmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgZGF0YUNvb3JkaW5hdGUgPSBwZXJtdXRhdGlvbiAqIHZlYzModXYueHksIGhlaWdodCk7XG4gIHZlYzQgd29ybGRQb3NpdGlvbiA9IG1vZGVsICogdmVjNChkYXRhQ29vcmRpbmF0ZSwgMS4wKTtcblxuICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgY2xpcFBvc2l0aW9uLnogPSBjbGlwUG9zaXRpb24ueiArIHpPZmZzZXQ7XG5cbiAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gIHZhbHVlID0gZjtcbiAga2lsbCA9IC0xLjA7XG4gIHdvcmxkQ29vcmRpbmF0ZSA9IGRhdGFDb29yZGluYXRlO1xuICBwbGFuZUNvb3JkaW5hdGUgPSB1di56dztcblxuICAvL0Rvbid0IGRvIGxpZ2h0aW5nIGZvciBjb250b3Vyc1xuICBzdXJmYWNlTm9ybWFsICAgPSB2ZWMzKDEsMCwwKTtcbiAgZXllRGlyZWN0aW9uICAgID0gdmVjMygwLDEsMCk7XG4gIGxpZ2h0RGlyZWN0aW9uICA9IHZlYzMoMCwwLDEpO1xufVxuIixzPSJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG5cbnZhcnlpbmcgZmxvYXQgdmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBzdXJmYWNlTm9ybWFsO1xuXG52ZWMyIHNwbGl0RmxvYXQoZmxvYXQgdikge1xuICBmbG9hdCB2aCA9IDI1NS4wICogdjtcbiAgZmxvYXQgdXBwZXIgPSBmbG9vcih2aCk7XG4gIGZsb2F0IGxvd2VyID0gZnJhY3QodmgpO1xuICByZXR1cm4gdmVjMih1cHBlciAvIDI1NS4wLCBmbG9vcihsb3dlciAqIDE2LjApIC8gMTYuMCk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYoa2lsbCA+IDAuMCB8fFxuICAgIGFueShsZXNzVGhhbih3b3JsZENvb3JkaW5hdGUsIGNsaXBCb3VuZHNbMF0pKSB8fCBhbnkoZ3JlYXRlclRoYW4od29ybGRDb29yZGluYXRlLCBjbGlwQm91bmRzWzFdKSkpIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIHZlYzIgdXggPSBzcGxpdEZsb2F0KHBsYW5lQ29vcmRpbmF0ZS54IC8gc2hhcGUueCk7XG4gIHZlYzIgdXkgPSBzcGxpdEZsb2F0KHBsYW5lQ29vcmRpbmF0ZS55IC8gc2hhcGUueSk7XG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQocGlja0lkLCB1eC54LCB1eS54LCB1eC55ICsgKHV5LnkvMTYuMCkpO1xufVxuIjtyLmNyZWF0ZVNoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQsaSxvLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZS5hdHRyaWJ1dGVzLm5vcm1hbC5sb2NhdGlvbj0yLGV9LHIuY3JlYXRlUGlja1NoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQsaSxzLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZS5hdHRyaWJ1dGVzLm5vcm1hbC5sb2NhdGlvbj0yLGV9LHIuY3JlYXRlQ29udG91clNoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQsYSxvLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJmbG9hdCJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZX0sci5jcmVhdGVQaWNrQ29udG91clNoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQsYSxzLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJmbG9hdCJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZX19LHsiZ2wtc2hhZGVyIjoxNTR9XSwxNzU6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMjBdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDoyMH1dLDE3NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2lmKHQgaW4gbClyZXR1cm4gbFt0XTtmb3IodmFyIGU9W10scj0wO3Q+cjsrK3IpZS5wdXNoKCJvdXQiLHIsInM9MC41KihpbnAiLHIsImwtaW5wIixyLCJyKTsiKTtmb3IodmFyIG49WyJhcnJheSJdLGk9WyJqdW5rIl0scj0wO3Q+cjsrK3Ipe24ucHVzaCgiYXJyYXkiKSxpLnB1c2goIm91dCIrcisicyIpO3ZhciBvPWEodCk7b1tyXT0tMSxuLnB1c2goe2FycmF5OjAsb2Zmc2V0Om8uc2xpY2UoKX0pLG9bcl09MSxuLnB1c2goe2FycmF5OjAsb2Zmc2V0Om8uc2xpY2UoKX0pLGkucHVzaCgiaW5wIityKyJsIiwiaW5wIityKyJyIil9cmV0dXJuIGxbdF09cyh7YXJnczpuLHByZTp1LHBvc3Q6dSxib2R5Ontib2R5OmUuam9pbigiIiksYXJnczppLm1hcChmdW5jdGlvbih0KXtyZXR1cm57bmFtZTp0LGx2YWx1ZTowPT09dC5pbmRleE9mKCJvdXQiKSxydmFsdWU6MD09PXQuaW5kZXhPZigiaW5wIiksY291bnQ6Imp1bmsiIT09dHwwfX0pLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZnVuY05hbWU6ImZkVGVtcGxhdGUiK3R9KX1mdW5jdGlvbiBpKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciByPW8tZS5sZW5ndGgsbj1bXSxpPVtdLHM9W10sbD0wO28+bDsrK2wpZS5pbmRleE9mKGwrMSk+PTA/cy5wdXNoKCIwIik6ZS5pbmRleE9mKC0obCsxKSk+PTA/cy5wdXNoKCJzWyIrbCsiXS0xIik6KHMucHVzaCgiLTEiKSxuLnB1c2goIjEiKSxpLnB1c2goInNbIitsKyJdLTIiKSk7dmFyIGM9Ii5sbygiK24uam9pbigpKyIpLmhpKCIraS5qb2luKCkrIikiO2lmKDA9PT1uLmxlbmd0aCYmKGM9IiIpLHI+MCl7YS5wdXNoKCJpZigxIik7Zm9yKHZhciBsPTA7bz5sOysrbCllLmluZGV4T2YobCsxKT49MHx8ZS5pbmRleE9mKC0obCsxKSk+PTB8fGEucHVzaCgiJiZzWyIsbCwiXT4yIik7YS5wdXNoKCIpe2dyYWQiLHIsIihzcmMucGljaygiLHMuam9pbigpLCIpIixjKTtmb3IodmFyIGw9MDtvPmw7KytsKWUuaW5kZXhPZihsKzEpPj0wfHxlLmluZGV4T2YoLShsKzEpKT49MHx8YS5wdXNoKCIsZHN0LnBpY2soIixzLmpvaW4oKSwiLCIsbCwiKSIsYyk7YS5wdXNoKCIpOyIpfWZvcih2YXIgbD0wO2w8ZS5sZW5ndGg7KytsKXt2YXIgdT1NYXRoLmFicyhlW2xdKS0xLGg9ImRzdC5waWNrKCIrcy5qb2luKCkrIiwiK3UrIikiK2M7c3dpdGNoKHRbdV0pe2Nhc2UiY2xhbXAiOnZhciBmPXMuc2xpY2UoKSxkPXMuc2xpY2UoKTtlW2xdPDA/Zlt1XT0ic1siK3UrIl0tMiI6ZFt1XT0iMSIsMD09PXI/YS5wdXNoKCJpZihzWyIsdSwiXT4xKXtkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwLjUqKHNyYy5nZXQoIixmLmpvaW4oKSwiKS1zcmMuZ2V0KCIsZC5qb2luKCksIikpKX1lbHNle2RzdC5zZXQoIixzLmpvaW4oKSwiLCIsdSwiLDApfTsiKTphLnB1c2goImlmKHNbIix1LCJdPjEpe2RpZmYoIixoLCIsc3JjLnBpY2soIixmLmpvaW4oKSwiKSIsYywiLHNyYy5waWNrKCIsZC5qb2luKCksIikiLGMsIik7fWVsc2V7emVybygiLGgsIik7fTsiKTticmVhaztjYXNlIm1pcnJvciI6MD09PXI/YS5wdXNoKCJkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwKTsiKTphLnB1c2goInplcm8oIixoLCIpOyIpO2JyZWFrO2Nhc2Uid3JhcCI6dmFyIHA9cy5zbGljZSgpLGc9cy5zbGljZSgpO2VbbF08MD8ocFt1XT0ic1siK3UrIl0tMiIsZ1t1XT0iMCIpOihwW3VdPSJzWyIrdSsiXS0xIixnW3VdPSIxIiksMD09PXI/YS5wdXNoKCJpZihzWyIsdSwiXT4yKXtkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwLjUqKHNyYy5nZXQoIixwLmpvaW4oKSwiKS1zcmMuZ2V0KCIsZy5qb2luKCksIikpKX1lbHNle2RzdC5zZXQoIixzLmpvaW4oKSwiLCIsdSwiLDApfTsiKTphLnB1c2goImlmKHNbIix1LCJdPjIpe2RpZmYoIixoLCIsc3JjLnBpY2soIixwLmpvaW4oKSwiKSIsYywiLHNyYy5waWNrKCIsZy5qb2luKCksIikiLGMsIik7fWVsc2V7emVybygiLGgsIik7fTsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogSW52YWxpZCBib3VuZGFyeSBjb25kaXRpb24iKX19cj4wJiZhLnB1c2goIn07Iil9dmFyIHI9dC5qb2luKCksaT1jW3JdO2lmKGkpcmV0dXJuIGk7Zm9yKHZhciBvPXQubGVuZ3RoLGE9WyJmdW5jdGlvbiBncmFkaWVudChkc3Qsc3JjKXt2YXIgcz1zcmMuc2hhcGUuc2xpY2UoKTsiXSxzPTA7MTw8bz5zOysrcyl7Zm9yKHZhciB1PVtdLGQ9MDtvPmQ7KytkKXMmMTw8ZCYmdS5wdXNoKGQrMSk7Zm9yKHZhciBwPTA7cDwxPDx1Lmxlbmd0aDsrK3Ape2Zvcih2YXIgZz11LnNsaWNlKCksZD0wO2Q8dS5sZW5ndGg7KytkKXAmMTw8ZCYmKGdbZF09LWdbZF0pO2UoZyl9fWEucHVzaCgicmV0dXJuIGRzdDt9O3JldHVybiBncmFkaWVudCIpO2Zvcih2YXIgdj1bImRpZmYiLCJ6ZXJvIl0sbT1baCxmXSxzPTE7bz49czsrK3Mpdi5wdXNoKCJncmFkIitzKSxtLnB1c2gobihzKSk7di5wdXNoKGEuam9pbigiIikpO3ZhciB5PUZ1bmN0aW9uLmFwcGx5KHZvaWQgMCx2KSxpPXkuYXBwbHkodm9pZCAwLG0pO3JldHVybiBsW3JdPWksaX1mdW5jdGlvbiBvKHQsZSxyKXtpZihBcnJheS5pc0FycmF5KHIpKXtpZihyLmxlbmd0aCE9PWUuZGltZW5zaW9uKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogaW52YWxpZCBib3VuZGFyeSBjb25kaXRpb25zIil9ZWxzZSByPSJzdHJpbmciPT10eXBlb2Ygcj9hKGUuZGltZW5zaW9uLHIpOmEoZS5kaW1lbnNpb24sImNsYW1wIik7aWYodC5kaW1lbnNpb24hPT1lLmRpbWVuc2lvbisxKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogb3V0cHV0IGRpbWVuc2lvbiBtdXN0IGJlICsxIGlucHV0IGRpbWVuc2lvbiIpO2lmKHQuc2hhcGVbZS5kaW1lbnNpb25dIT09ZS5kaW1lbnNpb24pdGhyb3cgbmV3IEVycm9yKCJuZGFycmF5LWdyYWRpZW50OiBvdXRwdXQgc2hhcGUgbXVzdCBtYXRjaCBpbnB1dCBzaGFwZSIpO2Zvcih2YXIgbj0wO248ZS5kaW1lbnNpb247KytuKWlmKHQuc2hhcGVbbl0hPT1lLnNoYXBlW25dKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogc2hhcGUgbWlzbWF0Y2giKTtpZigwPT09ZS5zaXplKXJldHVybiB0O2lmKGUuZGltZW5zaW9uPD0wKXJldHVybiB0LnNldCgwKSx0O3ZhciBvPWkocik7cmV0dXJuIG8odCxlKX1lLmV4cG9ydHM9bzt2YXIgYT10KCJkdXAiKSxzPXQoImN3aXNlLWNvbXBpbGVyIiksbD17fSxjPXt9LHU9e2JvZHk6IiIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGg9cyh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJhcnJheSJdLHByZTp1LHBvc3Q6dSxib2R5OnthcmdzOlt7bmFtZToib3V0IixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJsZWZ0IixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJyaWdodCIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToib3V0PTAuNSoobGVmdC1yaWdodCkiLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZnVuY05hbWU6ImNkaWZmIn0pLGY9cyh7YXJnczpbImFycmF5Il0scHJlOnUscG9zdDp1LGJvZHk6e2FyZ3M6W3tuYW1lOiJvdXQiLGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX1dLGJvZHk6Im91dD0wIix0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGZ1bmNOYW1lOiJ6ZXJvIn0pfSx7ImN3aXNlLWNvbXBpbGVyIjo2NixkdXA6NzJ9XSwxNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibmRhcnJheSIpLGk9dCgiLi9kb0NvbnZlcnQuanMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbz10LGE9MTtvIGluc3RhbmNlb2YgQXJyYXk7KXIucHVzaChvLmxlbmd0aCksYSo9by5sZW5ndGgsbz1vWzBdO3JldHVybiAwPT09ci5sZW5ndGg/bigpOihlfHwoZT1uKG5ldyBGbG9hdDY0QXJyYXkoYSkscikpLGkoZSx0KSxlKX19LHsiLi9kb0NvbnZlcnQuanMiOjE3OCxuZGFycmF5OjIxMH1dLDE3ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCJjd2lzZS1jb21waWxlciIpKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiLCJpbmRleCJdLHByZTp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7XG52YXIgX2lubGluZV8xX3Y9X2lubGluZV8xX2FyZzFfLF9pbmxpbmVfMV9pXG5mb3IoX2lubGluZV8xX2k9MDtfaW5saW5lXzFfaTxfaW5saW5lXzFfYXJnMl8ubGVuZ3RoLTE7KytfaW5saW5lXzFfaSkge1xuX2lubGluZV8xX3Y9X2lubGluZV8xX3ZbX2lubGluZV8xX2FyZzJfW19pbmxpbmVfMV9pXV1cbn1cbl9pbmxpbmVfMV9hcmcwXz1faW5saW5lXzFfdltfaW5saW5lXzFfYXJnMl9bX2lubGluZV8xX2FyZzJfLmxlbmd0aC0xXV1cbn0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMV9hcmcxXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjR9XSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6WyJfaW5saW5lXzFfaSIsIl9pbmxpbmVfMV92Il19LHBvc3Q6e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZnVuY05hbWU6ImNvbnZlcnQiLGJsb2NrU2l6ZTo2NH0pfSx7ImN3aXNlLWNvbXBpbGVyIjo2Nn1dLDE3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSl7dGhpcy5wb3NpdGlvbj10LHRoaXMuaW5kZXg9ZSx0aGlzLnV2PXIsdGhpcy5sZXZlbD1uLHRoaXMuZGF0YUNvb3JkaW5hdGU9aX1mdW5jdGlvbiBpKHQpe3ZhciBlPXgoW3koe2NvbG9ybWFwOnQsbnNoYWRlczpOLGZvcm1hdDoicmdiYSJ9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0sdFsxXSx0WzJdLDI1NSp0WzNdXX0pXSk7cmV0dXJuIGIuZGl2c2VxKGUsMjU1KSxlfWZ1bmN0aW9uIG8odCxlLHIsaSxvLGEscyxsLGMsdSxoLGYsZCxwKXt0aGlzLmdsPXQsdGhpcy5zaGFwZT1lLHRoaXMuYm91bmRzPXIsdGhpcy5pbnRlbnNpdHlCb3VuZHM9W10sdGhpcy5fc2hhZGVyPWksdGhpcy5fcGlja1NoYWRlcj1vLHRoaXMuX2Nvb3JkaW5hdGVCdWZmZXI9YSx0aGlzLl92YW89cyx0aGlzLl9jb2xvck1hcD1sLHRoaXMuX2NvbnRvdXJTaGFkZXI9Yyx0aGlzLl9jb250b3VyUGlja1NoYWRlcj11LHRoaXMuX2NvbnRvdXJCdWZmZXI9aCx0aGlzLl9jb250b3VyVkFPPWYsdGhpcy5fY29udG91ck9mZnNldHM9W1tdLFtdLFtdXSx0aGlzLl9jb250b3VyQ291bnRzPVtbXSxbXSxbXV0sdGhpcy5fdmVydGV4Q291bnQ9MCx0aGlzLl9waWNrUmVzdWx0PW5ldyBuKFswLDAsMF0sWzAsMF0sWzAsMF0sWzAsMCwwXSxbMCwwLDBdKSx0aGlzLl9keW5hbWljQnVmZmVyPWQsdGhpcy5fZHluYW1pY1ZBTz1wLHRoaXMuX2R5bmFtaWNPZmZzZXRzPVswLDAsMF0sdGhpcy5fZHluYW1pY0NvdW50cz1bMCwwLDBdLHRoaXMuY29udG91cldpZHRoPVsxLDEsMV0sdGhpcy5jb250b3VyTGV2ZWxzPVtbMV0sWzFdLFsxXV0sdGhpcy5jb250b3VyVGludD1bMCwwLDBdLHRoaXMuY29udG91ckNvbG9yPVtbLjUsLjUsLjUsMV0sWy41LC41LC41LDFdLFsuNSwuNSwuNSwxXV0sdGhpcy5zaG93Q29udG91cj0hMCx0aGlzLnNob3dTdXJmYWNlPSEwLHRoaXMuZW5hYmxlSGlnaGxpZ2h0PVshMCwhMCwhMF0sdGhpcy5oaWdobGlnaHRDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuaGlnaGxpZ2h0VGludD1bMSwxLDFdLHRoaXMuaGlnaGxpZ2h0TGV2ZWw9Wy0xLC0xLC0xXSx0aGlzLmVuYWJsZUR5bmFtaWM9WyEwLCEwLCEwXSx0aGlzLmR5bmFtaWNMZXZlbD1bTmFOLE5hTixOYU5dLHRoaXMuZHluYW1pY0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5keW5hbWljVGludD1bMSwxLDFdLHRoaXMuZHluYW1pY1dpZHRoPVsxLDEsMV0sdGhpcy5heGVzQm91bmRzPVtbMS8wLDEvMCwxLzBdLFstKDEvMCksLSgxLzApLC0oMS8wKV1dLHRoaXMuc3VyZmFjZVByb2plY3Q9WyExLCExLCExXSx0aGlzLmNvbnRvdXJQcm9qZWN0PVtbITEsITEsITFdLFshMSwhMSwhMV0sWyExLCExLCExXV0sdGhpcy5jb2xvckJvdW5kcz1bITEsITFdLHRoaXMuX2ZpZWxkPVtfKG0ubWFsbG9jRmxvYXQoMTAyNCksWzAsMF0pLF8obS5tYWxsb2NGbG9hdCgxMDI0KSxbMCwwXSksXyhtLm1hbGxvY0Zsb2F0KDEwMjQpLFswLDBdKV0sdGhpcy5waWNrSWQ9MSx0aGlzLmNsaXBCb3VuZHM9W1stKDEvMCksLSgxLzApLC0oMS8wKV0sWzEvMCwxLzAsMS8wXV0sdGhpcy5zbmFwVG9EYXRhPSExLHRoaXMub3BhY2l0eT0xLHRoaXMubGlnaHRQb3NpdGlvbj1bMTAsMWU0LDBdLHRoaXMuYW1iaWVudExpZ2h0PS44LHRoaXMuZGlmZnVzZUxpZ2h0PS44LHRoaXMuc3BlY3VsYXJMaWdodD0yLHRoaXMucm91Z2huZXNzPS41LHRoaXMuZnJlc25lbD0xLjUsdGhpcy5kaXJ0eT0hMH1mdW5jdGlvbiBhKHQsZSl7dmFyIHIsbixpLG89ZS5heGVzJiZlLmF4ZXMubGFzdEN1YmVQcm9wcy5heGlzfHxGLGE9ZS5zaG93U3VyZmFjZSxzPWUuc2hvd0NvbnRvdXI7Zm9yKHI9MDszPnI7KytyKWZvcihhPWF8fGUuc3VyZmFjZVByb2plY3Rbcl0sbj0wOzM+bjsrK24pcz1zfHxlLmNvbnRvdXJQcm9qZWN0W3JdW25dO2ZvcihyPTA7Mz5yOysrcil7dmFyIGw9RC5wcm9qZWN0aW9uc1tyXTtmb3Iobj0wOzE2Pm47KytuKWxbbl09MDtmb3Iobj0wOzQ+bjsrK24pbFs1Km5dPTE7bFs1KnJdPTAsbFsxMityXT1lLmF4ZXNCb3VuZHNbKyhvW3JdPjApXVtyXSxBKGwsdC5tb2RlbCxsKTt2YXIgYz1ELmNsaXBCb3VuZHNbcl07Zm9yKGk9MDsyPmk7KytpKWZvcihuPTA7Mz5uOysrbiljW2ldW25dPXQuY2xpcEJvdW5kc1tpXVtuXTtjWzBdW3JdPS0xZTgsY1sxXVtyXT0xZTh9cmV0dXJuIEQuc2hvd1N1cmZhY2U9YSxELnNob3dDb250b3VyPXMsRH1mdW5jdGlvbiBzKHQsZSl7dD10fHx7fTt2YXIgcj10aGlzLmdsO3IuZGlzYWJsZShyLkNVTExfRkFDRSksdGhpcy5fY29sb3JNYXAuYmluZCgwKTt2YXIgbj1CO24ubW9kZWw9dC5tb2RlbHx8UixuLnZpZXc9dC52aWV3fHxSLG4ucHJvamVjdGlvbj10LnByb2plY3Rpb258fFIsbi5sb3dlckJvdW5kPVt0aGlzLmJvdW5kc1swXVswXSx0aGlzLmJvdW5kc1swXVsxXSx0aGlzLmNvbG9yQm91bmRzWzBdfHx0aGlzLmJvdW5kc1swXVsyXV0sbi51cHBlckJvdW5kPVt0aGlzLmJvdW5kc1sxXVswXSx0aGlzLmJvdW5kc1sxXVsxXSx0aGlzLmNvbG9yQm91bmRzWzFdfHx0aGlzLmJvdW5kc1sxXVsyXV0sbi5jb250b3VyQ29sb3I9dGhpcy5jb250b3VyQ29sb3JbMF0sbi5pbnZlcnNlTW9kZWw9ayhuLmludmVyc2VNb2RlbCxuLm1vZGVsKTtmb3IodmFyIGk9MDsyPmk7KytpKWZvcih2YXIgbz1uLmNsaXBCb3VuZHNbaV0scz0wOzM+czsrK3Mpb1tzXT1NYXRoLm1pbihNYXRoLm1heCh0aGlzLmNsaXBCb3VuZHNbaV1bc10sLTFlOCksMWU4KTtuLmthbWJpZW50PXRoaXMuYW1iaWVudExpZ2h0LG4ua2RpZmZ1c2U9dGhpcy5kaWZmdXNlTGlnaHQsbi5rc3BlY3VsYXI9dGhpcy5zcGVjdWxhckxpZ2h0LG4ucm91Z2huZXNzPXRoaXMucm91Z2huZXNzLG4uZnJlc25lbD10aGlzLmZyZXNuZWwsbi5vcGFjaXR5PXRoaXMub3BhY2l0eSxuLmhlaWdodD0wLG4ucGVybXV0YXRpb249Vjt2YXIgbD1VO2ZvcihBKGwsbi52aWV3LG4ubW9kZWwpLEEobCxuLnByb2plY3Rpb24sbCksayhsLGwpLGk9MDszPmk7KytpKW4uZXllUG9zaXRpb25baV09bFsxMitpXS9sWzE1XTt2YXIgYz1sWzE1XTtmb3IoaT0wOzM+aTsrK2kpYys9dGhpcy5saWdodFBvc2l0aW9uW2ldKmxbNCppKzNdO2ZvcihpPTA7Mz5pOysraSl7dmFyIHU9bFsxMitpXTtmb3Iocz0wOzM+czsrK3MpdSs9bFs0KnMraV0qdGhpcy5saWdodFBvc2l0aW9uW3NdO24ubGlnaHRQb3NpdGlvbltpXT11L2N9dmFyIGg9YShuLHRoaXMpO2lmKGguc2hvd1N1cmZhY2UmJmU9PT10aGlzLm9wYWNpdHk8MSl7Zm9yKHRoaXMuX3NoYWRlci5iaW5kKCksdGhpcy5fc2hhZGVyLnVuaWZvcm1zPW4sdGhpcy5fdmFvLmJpbmQoKSx0aGlzLnNob3dTdXJmYWNlJiZ0aGlzLl92ZXJ0ZXhDb3VudCYmdGhpcy5fdmFvLmRyYXcoci5UUklBTkdMRVMsdGhpcy5fdmVydGV4Q291bnQpLGk9MDszPmk7KytpKXRoaXMuc3VyZmFjZVByb2plY3RbaV0mJnRoaXMudmVydGV4Q291bnQmJih0aGlzLl9zaGFkZXIudW5pZm9ybXMubW9kZWw9aC5wcm9qZWN0aW9uc1tpXSx0aGlzLl9zaGFkZXIudW5pZm9ybXMuY2xpcEJvdW5kcz1oLmNsaXBCb3VuZHNbaV0sdGhpcy5fdmFvLmRyYXcoci5UUklBTkdMRVMsdGhpcy5fdmVydGV4Q291bnQpKTt0aGlzLl92YW8udW5iaW5kKCl9aWYoaC5zaG93Q29udG91ciYmIWUpe3ZhciBmPXRoaXMuX2NvbnRvdXJTaGFkZXI7bi5rYW1iaWVudD0xLG4ua2RpZmZ1c2U9MCxuLmtzcGVjdWxhcj0wLG4ub3BhY2l0eT0xLGYuYmluZCgpLGYudW5pZm9ybXM9bjt2YXIgZD10aGlzLl9jb250b3VyVkFPO2ZvcihkLmJpbmQoKSxpPTA7Mz5pOysraSlmb3IoZi51bmlmb3Jtcy5wZXJtdXRhdGlvbj1JW2ldLHIubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW2ldKSxzPTA7czx0aGlzLmNvbnRvdXJMZXZlbHNbaV0ubGVuZ3RoOysrcyl0aGlzLl9jb250b3VyQ291bnRzW2ldW3NdJiYocz09PXRoaXMuaGlnaGxpZ2h0TGV2ZWxbaV0/KGYudW5pZm9ybXMuY29udG91ckNvbG9yPXRoaXMuaGlnaGxpZ2h0Q29sb3JbaV0sZi51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmhpZ2hsaWdodFRpbnRbaV0pOjAhPT1zJiZzLTEhPT10aGlzLmhpZ2hsaWdodExldmVsW2ldfHwoZi51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5jb250b3VyQ29sb3JbaV0sZi51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmNvbnRvdXJUaW50W2ldKSxmLnVuaWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbaV1bc10sZC5kcmF3KHIuTElORVMsdGhpcy5fY29udG91ckNvdW50c1tpXVtzXSx0aGlzLl9jb250b3VyT2Zmc2V0c1tpXVtzXSkpO2ZvcihpPTA7Mz5pOysraSlmb3IoZi51bmlmb3Jtcy5tb2RlbD1oLnByb2plY3Rpb25zW2ldLGYudW5pZm9ybXMuY2xpcEJvdW5kcz1oLmNsaXBCb3VuZHNbaV0scz0wOzM+czsrK3MpaWYodGhpcy5jb250b3VyUHJvamVjdFtpXVtzXSl7Zi51bmlmb3Jtcy5wZXJtdXRhdGlvbj1JW3NdLHIubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW3NdKTtmb3IodmFyIHA9MDtwPHRoaXMuY29udG91ckxldmVsc1tzXS5sZW5ndGg7KytwKXA9PT10aGlzLmhpZ2hsaWdodExldmVsW3NdPyhmLnVuaWZvcm1zLmNvbnRvdXJDb2xvcj10aGlzLmhpZ2hsaWdodENvbG9yW3NdLGYudW5pZm9ybXMuY29udG91clRpbnQ9dGhpcy5oaWdobGlnaHRUaW50W3NdKTowIT09cCYmcC0xIT09dGhpcy5oaWdobGlnaHRMZXZlbFtzXXx8KGYudW5pZm9ybXMuY29udG91ckNvbG9yPXRoaXMuY29udG91ckNvbG9yW3NdLGYudW5pZm9ybXMuY29udG91clRpbnQ9dGhpcy5jb250b3VyVGludFtzXSksZi51bmlmb3Jtcy5oZWlnaHQ9dGhpcy5jb250b3VyTGV2ZWxzW3NdW3BdLGQuZHJhdyhyLkxJTkVTLHRoaXMuX2NvbnRvdXJDb3VudHNbc11bcF0sdGhpcy5fY29udG91ck9mZnNldHNbc11bcF0pfWZvcihkPXRoaXMuX2R5bmFtaWNWQU8sZC5iaW5kKCksaT0wOzM+aTsrK2kpaWYoMCE9PXRoaXMuX2R5bmFtaWNDb3VudHNbaV0pZm9yKGYudW5pZm9ybXMubW9kZWw9bi5tb2RlbCxmLnVuaWZvcm1zLmNsaXBCb3VuZHM9bi5jbGlwQm91bmRzLGYudW5pZm9ybXMucGVybXV0YXRpb249SVtpXSxyLmxpbmVXaWR0aCh0aGlzLmR5bmFtaWNXaWR0aFtpXSksZi51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5keW5hbWljQ29sb3JbaV0sZi51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmR5bmFtaWNUaW50W2ldLGYudW5pZm9ybXMuaGVpZ2h0PXRoaXMuZHluYW1pY0xldmVsW2ldLGQuZHJhdyhyLkxJTkVTLHRoaXMuX2R5bmFtaWNDb3VudHNbaV0sdGhpcy5fZHluYW1pY09mZnNldHNbaV0pLHM9MDszPnM7KytzKXRoaXMuY29udG91clByb2plY3Rbc11baV0mJihmLnVuaWZvcm1zLm1vZGVsPWgucHJvamVjdGlvbnNbc10sZi51bmlmb3Jtcy5jbGlwQm91bmRzPWguY2xpcEJvdW5kc1tzXSxkLmRyYXcoci5MSU5FUyx0aGlzLl9keW5hbWljQ291bnRzW2ldLHRoaXMuX2R5bmFtaWNPZmZzZXRzW2ldKSk7ZC51bmJpbmQoKX19ZnVuY3Rpb24gbCh0LGUpe3ZhciByPWUuc2hhcGUuc2xpY2UoKSxuPXQuc2hhcGUuc2xpY2UoKTtiLmFzc2lnbih0LmxvKDEsMSkuaGkoclswXSxyWzFdKSxlKSxiLmFzc2lnbih0LmxvKDEpLmhpKHJbMF0sMSksZS5oaShyWzBdLDEpKSxiLmFzc2lnbih0LmxvKDEsblsxXS0xKS5oaShyWzBdLDEpLGUubG8oMCxyWzFdLTEpLmhpKHJbMF0sMSkpLGIuYXNzaWduKHQubG8oMCwxKS5oaSgxLHJbMV0pLGUuaGkoMSkpLGIuYXNzaWduKHQubG8oblswXS0xLDEpLmhpKDEsclsxXSksZS5sbyhyWzBdLTEpKSx0LnNldCgwLDAsZS5nZXQoMCwwKSksdC5zZXQoMCxuWzFdLTEsZS5nZXQoMCxyWzFdLTEpKSx0LnNldChuWzBdLTEsMCxlLmdldChyWzBdLTEsMCkpLHQuc2V0KG5bMF0tMSxuWzFdLTEsZS5nZXQoclswXS0xLHJbMV0tMSkpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9bZSh0WzBdKSxlKHRbMV0pLGUodFsyXSldOltlKHQpLGUodCksZSh0KV19ZnVuY3Rpb24gdSh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8zPT09dC5sZW5ndGg/W3RbMF0sdFsxXSx0WzJdLDFdOlt0WzBdLHRbMV0sdFsyXSx0WzNdXTpbMCwwLDAsMV19ZnVuY3Rpb24gaCh0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVyblt1KHRbMF0pLHUodFsxXSksdSh0WzJdKV07dmFyIGU9dSh0KTtyZXR1cm5bZS5zbGljZSgpLGUuc2xpY2UoKSxlLnNsaWNlKCldfX1mdW5jdGlvbiBmKHQpe3ZhciBlPXQuZ2wscj1MKGUpLG49QyhlKSxpPVMoZSksYT1QKGUpLHM9cChlKSxsPWcoZSxbe2J1ZmZlcjpzLHNpemU6NCxzdHJpZGU6eixvZmZzZXQ6MH0se2J1ZmZlcjpzLHNpemU6MyxzdHJpZGU6eixvZmZzZXQ6MTZ9LHtidWZmZXI6cyxzaXplOjMsc3RyaWRlOnosb2Zmc2V0OjI4fV0pLGM9cChlKSx1PWcoZSxbe2J1ZmZlcjpjLHNpemU6NCxzdHJpZGU6MjAsb2Zmc2V0OjB9LHtidWZmZXI6YyxzaXplOjEsc3RyaWRlOjIwLG9mZnNldDoxNn1dKSxoPXAoZSksZj1nKGUsW3tidWZmZXI6aCxzaXplOjIsdHlwZTplLkZMT0FUfV0pLGQ9dihlLDEsTixlLlJHQkEsZS5VTlNJR05FRF9CWVRFKTtkLm1pbkZpbHRlcj1lLkxJTkVBUixkLm1hZ0ZpbHRlcj1lLkxJTkVBUjt2YXIgbT1uZXcgbyhlLFswLDBdLFtbMCwwLDBdLFswLDAsMF1dLHIsbixzLGwsZCxpLGEsYyx1LGgsZikseT17bGV2ZWxzOltbXSxbXSxbXV19O2Zvcih2YXIgYiBpbiB0KXlbYl09dFtiXTtyZXR1cm4geS5jb2xvcm1hcD15LmNvbG9ybWFwfHwiamV0IixtLnVwZGF0ZSh5KSxtfWUuZXhwb3J0cz1mO3ZhciBkPXQoImJpdC10d2lkZGxlIikscD10KCJnbC1idWZmZXIiKSxnPXQoImdsLXZhbyIpLHY9dCgiZ2wtdGV4dHVyZTJkIiksbT10KCJ0eXBlZGFycmF5LXBvb2wiKSx5PXQoImNvbG9ybWFwIiksYj10KCJuZGFycmF5LW9wcyIpLHg9dCgibmRhcnJheS1wYWNrIiksXz10KCJuZGFycmF5Iiksdz10KCJzdXJmYWNlLW5ldHMiKSxBPXQoImdsLW1hdDQvbXVsdGlwbHkiKSxrPXQoImdsLW1hdDQvaW52ZXJ0IiksTT10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLFQ9dCgibmRhcnJheS1ncmFkaWVudCIpLEU9dCgiLi9saWIvc2hhZGVycyIpLEw9RS5jcmVhdGVTaGFkZXIsUz1FLmNyZWF0ZUNvbnRvdXJTaGFkZXIsQz1FLmNyZWF0ZVBpY2tTaGFkZXIsUD1FLmNyZWF0ZVBpY2tDb250b3VyU2hhZGVyLHo9NDAsUj1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sTz1bWzAsMF0sWzAsMV0sWzEsMF0sWzEsMV0sWzEsMF0sWzAsMV1dLEk9W1swLDAsMCwwLDAsMCwwLDAsMF0sWzAsMCwwLDAsMCwwLDAsMCwwXSxbMCwwLDAsMCwwLDAsMCwwLDBdXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDszPnQ7Kyt0KXt2YXIgZT1JW3RdLHI9KHQrMSklMyxuPSh0KzIpJTM7ZVtyKzBdPTEsZVtuKzNdPTEsZVt0KzZdPTF9fSgpO3ZhciBOPTI2NSxqPW8ucHJvdG90eXBlO2ouaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk8MX0sai5pc09wYXF1ZT1mdW5jdGlvbigpe2lmKHRoaXMub3BhY2l0eT49MSlyZXR1cm4hMDtmb3IodmFyIHQ9MDszPnQ7Kyt0KWlmKHRoaXMuX2NvbnRvdXJDb3VudHNbdF0ubGVuZ3RoPjB8fHRoaXMuX2R5bmFtaWNDb3VudHNbdF0+MClyZXR1cm4hMDtyZXR1cm4hMX0sai5waWNrU2xvdHM9MSxqLnNldFBpY2tCYXNlPWZ1bmN0aW9uKHQpe3RoaXMucGlja0lkPXR9O3ZhciBGPVswLDAsMF0sRD17c2hvd1N1cmZhY2U6ITEsc2hvd0NvbnRvdXI6ITEscHJvamVjdGlvbnM6W1Iuc2xpY2UoKSxSLnNsaWNlKCksUi5zbGljZSgpXSxjbGlwQm91bmRzOltbWzAsMCwwXSxbMCwwLDBdXSxbWzAsMCwwXSxbMCwwLDBdXSxbWzAsMCwwXSxbMCwwLDBdXV19LEI9e21vZGVsOlIsdmlldzpSLHByb2plY3Rpb246UixpbnZlcnNlTW9kZWw6Ui5zbGljZSgpLGxvd2VyQm91bmQ6WzAsMCwwXSx1cHBlckJvdW5kOlswLDAsMF0sY29sb3JNYXA6MCxjbGlwQm91bmRzOltbMCwwLDBdLFswLDAsMF1dLGhlaWdodDowLGNvbnRvdXJUaW50OjAsY29udG91ckNvbG9yOlswLDAsMCwxXSxwZXJtdXRhdGlvbjpbMSwwLDAsMCwxLDAsMCwwLDFdLHpPZmZzZXQ6LTFlLTQsa2FtYmllbnQ6MSxrZGlmZnVzZToxLGtzcGVjdWxhcjoxLGxpZ2h0UG9zaXRpb246WzFlMywxZTMsMWUzXSxleWVQb3NpdGlvbjpbMCwwLDBdLHJvdWdobmVzczoxLGZyZXNuZWw6MSxvcGFjaXR5OjF9LFU9Ui5zbGljZSgpLFY9WzEsMCwwLDAsMSwwLDAsMCwxXTtqLmRyYXc9ZnVuY3Rpb24odCl7cmV0dXJuIHMuY2FsbCh0aGlzLHQsITEpfSxqLmRyYXdUcmFuc3BhcmVudD1mdW5jdGlvbih0KXtyZXR1cm4gcy5jYWxsKHRoaXMsdCwhMCl9O3ZhciBxPXttb2RlbDpSLHZpZXc6Uixwcm9qZWN0aW9uOlIsaW52ZXJzZU1vZGVsOlIsY2xpcEJvdW5kczpbWzAsMCwwXSxbMCwwLDBdXSxoZWlnaHQ6MCxzaGFwZTpbMCwwXSxwaWNrSWQ6MCxsb3dlckJvdW5kOlswLDAsMF0sdXBwZXJCb3VuZDpbMCwwLDBdLHpPZmZzZXQ6MCxwZXJtdXRhdGlvbjpbMSwwLDAsMCwxLDAsMCwwLDFdLGxpZ2h0UG9zaXRpb246WzAsMCwwXSxleWVQb3NpdGlvbjpbMCwwLDBdfTtqLmRyYXdQaWNrPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDtlLmRpc2FibGUoZS5DVUxMX0ZBQ0UpO3ZhciByPXE7ci5tb2RlbD10Lm1vZGVsfHxSLHIudmlldz10LnZpZXd8fFIsci5wcm9qZWN0aW9uPXQucHJvamVjdGlvbnx8UixyLnNoYXBlPXRoaXMuX2ZpZWxkWzJdLnNoYXBlLHIucGlja0lkPXRoaXMucGlja0lkLzI1NSxyLmxvd2VyQm91bmQ9dGhpcy5ib3VuZHNbMF0sci51cHBlckJvdW5kPXRoaXMuYm91bmRzWzFdLHIucGVybXV0YXRpb249Vjtmb3IodmFyIG49MDsyPm47KytuKWZvcih2YXIgaT1yLmNsaXBCb3VuZHNbbl0sbz0wOzM+bzsrK28paVtvXT1NYXRoLm1pbihNYXRoLm1heCh0aGlzLmNsaXBCb3VuZHNbbl1bb10sLTFlOCksMWU4KTt2YXIgcz1hKHIsdGhpcyk7aWYocy5zaG93U3VyZmFjZSl7Zm9yKHRoaXMuX3BpY2tTaGFkZXIuYmluZCgpLHRoaXMuX3BpY2tTaGFkZXIudW5pZm9ybXM9cix0aGlzLl92YW8uYmluZCgpLHRoaXMuX3Zhby5kcmF3KGUuVFJJQU5HTEVTLHRoaXMuX3ZlcnRleENvdW50KSxuPTA7Mz5uOysrbil0aGlzLnN1cmZhY2VQcm9qZWN0W25dJiYodGhpcy5fcGlja1NoYWRlci51bmlmb3Jtcy5tb2RlbD1zLnByb2plY3Rpb25zW25dLHRoaXMuX3BpY2tTaGFkZXIudW5pZm9ybXMuY2xpcEJvdW5kcz1zLmNsaXBCb3VuZHNbbl0sdGhpcy5fdmFvLmRyYXcoZS5UUklBTkdMRVMsdGhpcy5fdmVydGV4Q291bnQpKTt0aGlzLl92YW8udW5iaW5kKCl9aWYocy5zaG93Q29udG91cil7dmFyIGw9dGhpcy5fY29udG91clBpY2tTaGFkZXI7bC5iaW5kKCksbC51bmlmb3Jtcz1yO3ZhciBjPXRoaXMuX2NvbnRvdXJWQU87Zm9yKGMuYmluZCgpLG89MDszPm87KytvKWZvcihlLmxpbmVXaWR0aCh0aGlzLmNvbnRvdXJXaWR0aFtvXSksbC51bmlmb3Jtcy5wZXJtdXRhdGlvbj1JW29dLG49MDtuPHRoaXMuY29udG91ckxldmVsc1tvXS5sZW5ndGg7KytuKXRoaXMuX2NvbnRvdXJDb3VudHNbb11bbl0mJihsLnVuaWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbb11bbl0sYy5kcmF3KGUuTElORVMsdGhpcy5fY29udG91ckNvdW50c1tvXVtuXSx0aGlzLl9jb250b3VyT2Zmc2V0c1tvXVtuXSkpO2ZvcihuPTA7Mz5uOysrbilmb3IobC51bmlmb3Jtcy5tb2RlbD1zLnByb2plY3Rpb25zW25dLGwudW5pZm9ybXMuY2xpcEJvdW5kcz1zLmNsaXBCb3VuZHNbbl0sbz0wOzM+bzsrK28paWYodGhpcy5jb250b3VyUHJvamVjdFtuXVtvXSl7bC51bmlmb3Jtcy5wZXJtdXRhdGlvbj1JW29dLGUubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW29dKTtmb3IodmFyIHU9MDt1PHRoaXMuY29udG91ckxldmVsc1tvXS5sZW5ndGg7Kyt1KXRoaXMuX2NvbnRvdXJDb3VudHNbb11bdV0mJihsLnVuaWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbb11bdV0sYy5kcmF3KGUuTElORVMsdGhpcy5fY29udG91ckNvdW50c1tvXVt1XSx0aGlzLl9jb250b3VyT2Zmc2V0c1tvXVt1XSkpfWMudW5iaW5kKCl9fSxqLnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO3ZhciBlPXRoaXMuX2ZpZWxkWzJdLnNoYXBlLHI9dGhpcy5fcGlja1Jlc3VsdCxuPWVbMF0qKHQudmFsdWVbMF0rKHQudmFsdWVbMl0+PjQpLzE2KS8yNTUsaT1NYXRoLmZsb29yKG4pLG89bi1pLGE9ZVsxXSoodC52YWx1ZVsxXSsoMTUmdC52YWx1ZVsyXSkvMTYpLzI1NSxzPU1hdGguZmxvb3IoYSksbD1hLXM7aSs9MSxzKz0xO3ZhciBjPXIucG9zaXRpb247Y1swXT1jWzFdPWNbMl09MDtmb3IodmFyIHU9MDsyPnU7Kyt1KWZvcih2YXIgaD11P286MS1vLGY9MDsyPmY7KytmKWZvcih2YXIgZD1mP2w6MS1sLHA9aSt1LGc9cytmLHY9aCpkLG09MDszPm07KyttKWNbbV0rPXRoaXMuX2ZpZWxkW21dLmdldChwLGcpKnY7Zm9yKHZhciB5PXRoaXMuX3BpY2tSZXN1bHQubGV2ZWwsYj0wOzM+YjsrK2IpaWYoeVtiXT1NLmxlKHRoaXMuY29udG91ckxldmVsc1tiXSxjW2JdKSx5W2JdPDApdGhpcy5jb250b3VyTGV2ZWxzW2JdLmxlbmd0aD4wJiYoeVtiXT0wKTtlbHNlIGlmKHlbYl08dGhpcy5jb250b3VyTGV2ZWxzW2JdLmxlbmd0aC0xKXt2YXIgeD10aGlzLmNvbnRvdXJMZXZlbHNbYl1beVtiXV0sXz10aGlzLmNvbnRvdXJMZXZlbHNbYl1beVtiXSsxXTtNYXRoLmFicyh4LWNbYl0pPk1hdGguYWJzKF8tY1tiXSkmJih5W2JdKz0xKX1mb3Ioci5pbmRleFswXT0uNT5vP2k6aSsxLHIuaW5kZXhbMV09LjU+bD9zOnMrMSxyLnV2WzBdPW4vZVswXSxyLnV2WzFdPWEvZVsxXSxtPTA7Mz5tOysrbSlyLmRhdGFDb29yZGluYXRlW21dPXRoaXMuX2ZpZWxkW21dLmdldChyLmluZGV4WzBdLHIuaW5kZXhbMV0pO3JldHVybiByfSxqLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9LHRoaXMuZGlydHk9ITAsImNvbnRvdXJXaWR0aCJpbiB0JiYodGhpcy5jb250b3VyV2lkdGg9Yyh0LmNvbnRvdXJXaWR0aCxOdW1iZXIpKSwic2hvd0NvbnRvdXIiaW4gdCYmKHRoaXMuc2hvd0NvbnRvdXI9Yyh0LnNob3dDb250b3VyLEJvb2xlYW4pKSwic2hvd1N1cmZhY2UiaW4gdCYmKHRoaXMuc2hvd1N1cmZhY2U9ISF0LnNob3dTdXJmYWNlKSwiY29udG91clRpbnQiaW4gdCYmKHRoaXMuY29udG91clRpbnQ9Yyh0LmNvbnRvdXJUaW50LEJvb2xlYW4pKSwiY29udG91ckNvbG9yImluIHQmJih0aGlzLmNvbnRvdXJDb2xvcj1oKHQuY29udG91ckNvbG9yKSksImNvbnRvdXJQcm9qZWN0ImluIHQmJih0aGlzLmNvbnRvdXJQcm9qZWN0PWModC5jb250b3VyUHJvamVjdCxmdW5jdGlvbih0KXtyZXR1cm4gYyh0LEJvb2xlYW4pfSkpLCJzdXJmYWNlUHJvamVjdCJpbiB0JiYodGhpcy5zdXJmYWNlUHJvamVjdD10LnN1cmZhY2VQcm9qZWN0KSwiZHluYW1pY0NvbG9yImluIHQmJih0aGlzLmR5bmFtaWNDb2xvcj1oKHQuZHluYW1pY0NvbG9yKSksImR5bmFtaWNUaW50ImluIHQmJih0aGlzLmR5bmFtaWNUaW50PWModC5keW5hbWljVGludCxOdW1iZXIpKSwiZHluYW1pY1dpZHRoImluIHQmJih0aGlzLmR5bmFtaWNXaWR0aD1jKHQuZHluYW1pY1dpZHRoLE51bWJlcikpLCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9dC5vcGFjaXR5KSwiY29sb3JCb3VuZHMiaW4gdCYmKHRoaXMuY29sb3JCb3VuZHM9dC5jb2xvckJvdW5kcyk7dmFyIGU9dC5maWVsZHx8dC5jb29yZHMmJnQuY29vcmRzWzJdfHxudWxsLHI9ITE7aWYoZXx8KGU9dGhpcy5fZmllbGRbMl0uc2hhcGVbMF18fHRoaXMuX2ZpZWxkWzJdLnNoYXBlWzJdP3RoaXMuX2ZpZWxkWzJdLmxvKDEsMSkuaGkodGhpcy5fZmllbGRbMl0uc2hhcGVbMF0tMix0aGlzLl9maWVsZFsyXS5zaGFwZVsxXS0yKTp0aGlzLl9maWVsZFsyXS5oaSgwLDApKSwiZmllbGQiaW4gdHx8ImNvb3JkcyJpbiB0KXt2YXIgbj0oZS5zaGFwZVswXSsyKSooZS5zaGFwZVsxXSsyKTtuPnRoaXMuX2ZpZWxkWzJdLmRhdGEubGVuZ3RoJiYobS5mcmVlRmxvYXQodGhpcy5fZmllbGRbMl0uZGF0YSksdGhpcy5fZmllbGRbMl0uZGF0YT1tLm1hbGxvY0Zsb2F0KGQubmV4dFBvdzIobikpKSx0aGlzLl9maWVsZFsyXT1fKHRoaXMuX2ZpZWxkWzJdLmRhdGEsW2Uuc2hhcGVbMF0rMixlLnNoYXBlWzFdKzJdKSxsKHRoaXMuX2ZpZWxkWzJdLGUpLHRoaXMuc2hhcGU9ZS5zaGFwZS5zbGljZSgpO2Zvcih2YXIgbz10aGlzLnNoYXBlLGE9MDsyPmE7KythKXRoaXMuX2ZpZWxkWzJdLnNpemU+dGhpcy5fZmllbGRbYV0uZGF0YS5sZW5ndGgmJihtLmZyZWVGbG9hdCh0aGlzLl9maWVsZFthXS5kYXRhKSx0aGlzLl9maWVsZFthXS5kYXRhPW0ubWFsbG9jRmxvYXQodGhpcy5fZmllbGRbMl0uc2l6ZSkpLHRoaXMuX2ZpZWxkW2FdPV8odGhpcy5fZmllbGRbYV0uZGF0YSxbb1swXSsyLG9bMV0rMl0pO2lmKHQuY29vcmRzKXt2YXIgcz10LmNvb3JkcztpZighQXJyYXkuaXNBcnJheShzKXx8MyE9PXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtc3VyZmFjZTogaW52YWxpZCBjb29yZGluYXRlcyBmb3IgeC95Iik7Zm9yKGE9MDsyPmE7KythKXt2YXIgdT1zW2FdO2Zvcih5PTA7Mj55OysreSlpZih1LnNoYXBlW3ldIT09b1t5XSl0aHJvdyBuZXcgRXJyb3IoImdsLXN1cmZhY2U6IGNvb3JkcyBoYXZlIGluY29ycmVjdCBzaGFwZSIpO2wodGhpcy5fZmllbGRbYV0sdSl9fWVsc2UgaWYodC50aWNrcyl7dmFyIGY9dC50aWNrcztpZighQXJyYXkuaXNBcnJheShmKXx8MiE9PWYubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtc3VyZmFjZTogaW52YWxpZCB0aWNrcyIpO2ZvcihhPTA7Mj5hOysrYSl7dmFyIHA9ZlthXTtpZigoQXJyYXkuaXNBcnJheShwKXx8cC5sZW5ndGgpJiYocD1fKHApKSxwLnNoYXBlWzBdIT09b1thXSl0aHJvdyBuZXcgRXJyb3IoImdsLXN1cmZhY2U6IGludmFsaWQgdGljayBsZW5ndGgiKTt2YXIgZz1fKHAuZGF0YSxvKTtnLnN0cmlkZVthXT1wLnN0cmlkZVswXSxnLnN0cmlkZVsxXmFdPTAsbCh0aGlzLl9maWVsZFthXSxnKX19ZWxzZXtmb3IoYT0wOzI+YTsrK2Epe3ZhciB2PVswLDBdO3ZbYV09MSx0aGlzLl9maWVsZFthXT1fKHRoaXMuX2ZpZWxkW2FdLmRhdGEsW29bMF0rMixvWzFdKzJdLHYsMCl9dGhpcy5fZmllbGRbMF0uc2V0KDAsMCwwKTtmb3IodmFyIHk9MDt5PG9bMF07Kyt5KXRoaXMuX2ZpZWxkWzBdLnNldCh5KzEsMCx5KTtmb3IodGhpcy5fZmllbGRbMF0uc2V0KG9bMF0rMSwwLG9bMF0tMSksdGhpcy5fZmllbGRbMV0uc2V0KDAsMCwwKSx5PTA7eTxvWzFdOysreSl0aGlzLl9maWVsZFsxXS5zZXQoMCx5KzEseSk7dGhpcy5fZmllbGRbMV0uc2V0KDAsb1sxXSsxLG9bMV0tMSl9dmFyIGI9dGhpcy5fZmllbGQseD1fKG0ubWFsbG9jRmxvYXQoMypiWzJdLnNpemUqMiksWzMsb1swXSsyLG9bMV0rMiwyXSk7Zm9yKGE9MDszPmE7KythKVQoeC5waWNrKGEpLGJbYV0sIm1pcnJvciIpO3ZhciBBPV8obS5tYWxsb2NGbG9hdCgzKmJbMl0uc2l6ZSksW29bMF0rMixvWzFdKzIsM10pO2ZvcihhPTA7YTxvWzBdKzI7KythKWZvcih5PTA7eTxvWzFdKzI7Kyt5KXt2YXIgaz14LmdldCgwLGEseSwwKSxNPXguZ2V0KDAsYSx5LDEpLEU9eC5nZXQoMSxhLHksMCksTD14LmdldCgxLGEseSwxKSxTPXguZ2V0KDIsYSx5LDApLEM9eC5nZXQoMixhLHksMSksUD1FKkMtTCpTLHo9UypNLUMqayxSPWsqTC1NKkUsST1NYXRoLnNxcnQoUCpQK3oqeitSKlIpOzFlLTg+ST8oST1NYXRoLm1heChNYXRoLmFicyhQKSxNYXRoLmFicyh6KSxNYXRoLmFicyhSKSksMWUtOD5JPyhSPTEsej1QPTAsST0xKTpJPTEvSSk6ST0xL01hdGguc3FydChJKSxBLnNldChhLHksMCxQKkkpLEEuc2V0KGEseSwxLHoqSSksQS5zZXQoYSx5LDIsUipJKX1tLmZyZWUoeC5kYXRhKTt2YXIgTj1bMS8wLDEvMCwxLzBdLGo9Wy0oMS8wKSwtKDEvMCksLSgxLzApXSxGPTEvMCxEPS0oMS8wKSxCPShvWzBdLTEpKihvWzFdLTEpKjYsVT1tLm1hbGxvY0Zsb2F0KGQubmV4dFBvdzIoMTAqQikpLFY9MCxxPTA7Zm9yKGE9MDthPG9bMF0tMTsrK2EpdDpmb3IoeT0wO3k8b1sxXS0xOysreSl7Zm9yKHZhciBIPTA7Mj5IOysrSClmb3IodmFyIEc9MDsyPkc7KytHKWZvcih2YXIgWT0wOzM+WTsrK1kpe3ZhciBYPXRoaXMuX2ZpZWxkW1ldLmdldCgxK2ErSCwxK3krRyk7aWYoaXNOYU4oWCl8fCFpc0Zpbml0ZShYKSljb250aW51ZSB0fWZvcihZPTA7Nj5ZOysrWSl7dmFyIFc9YStPW1ldWzBdLFo9eStPW1ldWzFdLCQ9dGhpcy5fZmllbGRbMF0uZ2V0KFcrMSxaKzEpLEs9dGhpcy5fZmllbGRbMV0uZ2V0KFcrMSxaKzEpO1g9dGhpcy5fZmllbGRbMl0uZ2V0KFcrMSxaKzEpO3ZhciBRPVg7UD1BLmdldChXKzEsWisxLDApLHo9QS5nZXQoVysxLForMSwxKSxSPUEuZ2V0KFcrMSxaKzEsMiksdC5pbnRlbnNpdHkmJihRPXQuaW50ZW5zaXR5LmdldChXLFopKSxVW1YrK109VyxVW1YrK109WixVW1YrK109JCxVW1YrK109SyxVW1YrK109WCxVW1YrK109MCxVW1YrK109USxVW1YrK109UCxVW1YrK109eixVW1YrK109UixOWzBdPU1hdGgubWluKE5bMF0sJCksTlsxXT1NYXRoLm1pbihOWzFdLEspLE5bMl09TWF0aC5taW4oTlsyXSxYKSxGPU1hdGgubWluKEYsUSksalswXT1NYXRoLm1heChqWzBdLCQpLGpbMV09TWF0aC5tYXgoalsxXSxLKSxqWzJdPU1hdGgubWF4KGpbMl0sWCksRD1NYXRoLm1heChELFEpLHErPTF9fWZvcih0LmludGVuc2l0eUJvdW5kcyYmKEY9K3QuaW50ZW5zaXR5Qm91bmRzWzBdLEQ9K3QuaW50ZW5zaXR5Qm91bmRzWzFdKSxhPTY7Vj5hO2ErPTEwKVVbYV09KFVbYV0tRikvKEQtRik7dGhpcy5fdmVydGV4Q291bnQ9cSx0aGlzLl9jb29yZGluYXRlQnVmZmVyLnVwZGF0ZShVLnN1YmFycmF5KDAsVikpLG0uZnJlZUZsb2F0KFUpLG0uZnJlZShBLmRhdGEpLHRoaXMuYm91bmRzPVtOLGpdLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5fHx0aGlzLl9maWVsZFsyXSx0aGlzLmludGVuc2l0eUJvdW5kc1swXT09PUYmJnRoaXMuaW50ZW5zaXR5Qm91bmRzWzFdPT09RHx8KHI9ITApLHRoaXMuaW50ZW5zaXR5Qm91bmRzPVtGLERdfWlmKCJsZXZlbHMiaW4gdCl7dmFyIEo9dC5sZXZlbHM7Zm9yKEo9QXJyYXkuaXNBcnJheShKWzBdKT9KLnNsaWNlKCk6W1tdLFtdLEpdLGE9MDszPmE7KythKUpbYV09SlthXS5zbGljZSgpLEouc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KTt0OmZvcihhPTA7Mz5hOysrYSl7aWYoSlthXS5sZW5ndGghPT10aGlzLmNvbnRvdXJMZXZlbHNbYV0ubGVuZ3RoKXtyPSEwO2JyZWFrfWZvcih5PTA7eTxKW2FdLmxlbmd0aDsrK3kpaWYoSlthXVt5XSE9PXRoaXMuY29udG91ckxldmVsc1thXVt5XSl7cj0hMDticmVhayB0fX10aGlzLmNvbnRvdXJMZXZlbHM9Sn1pZihyKXtiPXRoaXMuX2ZpZWxkLG89dGhpcy5zaGFwZTtmb3IodmFyIHR0PVtdLGV0PTA7Mz5ldDsrK2V0KXtKPXRoaXMuY29udG91ckxldmVsc1tldF07dmFyIHJ0PVtdLG50PVtdLGl0PVswLDAsMF07Zm9yKGE9MDthPEoubGVuZ3RoOysrYSl7dmFyIG90PXcodGhpcy5fZmllbGRbZXRdLEpbYV0pO3J0LnB1c2godHQubGVuZ3RoLzV8MCkscT0wO3Q6Zm9yKHk9MDt5PG90LmNlbGxzLmxlbmd0aDsrK3kpe3ZhciBhdD1vdC5jZWxsc1t5XTtmb3IoWT0wOzI+WTsrK1kpe3ZhciBzdD1vdC5wb3NpdGlvbnNbYXRbWV1dLGx0PXN0WzBdLGN0PTB8TWF0aC5mbG9vcihsdCksdXQ9bHQtY3QsaHQ9c3RbMV0sZnQ9MHxNYXRoLmZsb29yKGh0KSxkdD1odC1mdCxwdD0hMTtlOmZvcih2YXIgZ3Q9MDszPmd0OysrZ3Qpe2l0W2d0XT0wO3ZhciB2dD0oZXQrZ3QrMSklMztmb3IoSD0wOzI+SDsrK0gpe3ZhciBtdD1IP3V0OjEtdXQ7Zm9yKFc9MHxNYXRoLm1pbihNYXRoLm1heChjdCtILDApLG9bMF0pLEc9MDsyPkc7KytHKXt2YXIgeXQ9Rz9kdDoxLWR0O2lmKFo9MHxNYXRoLm1pbihNYXRoLm1heChmdCtHLDApLG9bMV0pLFg9Mj5ndD90aGlzLl9maWVsZFt2dF0uZ2V0KFcsWik6KHRoaXMuaW50ZW5zaXR5LmdldChXLFopLXRoaXMuaW50ZW5zaXR5Qm91bmRzWzBdKS8odGhpcy5pbnRlbnNpdHlCb3VuZHNbMV0tdGhpcy5pbnRlbnNpdHlCb3VuZHNbMF0pLCFpc0Zpbml0ZShYKXx8aXNOYU4oWCkpe3B0PSEwO2JyZWFrIGV9dmFyIGJ0PW10Knl0O2l0W2d0XSs9YnQqWH19fWlmKHB0KXtpZihZPjApe2Zvcih2YXIgeHQ9MDs1Pnh0OysreHQpdHQucG9wKCk7cS09MX1jb250aW51ZSB0fXR0LnB1c2goaXRbMF0saXRbMV0sc3RbMF0sc3RbMV0saXRbMl0pLHErPTF9fW50LnB1c2gocSl9dGhpcy5fY29udG91ck9mZnNldHNbZXRdPXJ0LHRoaXMuX2NvbnRvdXJDb3VudHNbZXRdPW50fXZhciBfdD1tLm1hbGxvY0Zsb2F0KHR0Lmxlbmd0aCk7Zm9yKGE9MDthPHR0Lmxlbmd0aDsrK2EpX3RbYV09dHRbYV07dGhpcy5fY29udG91ckJ1ZmZlci51cGRhdGUoX3QpLG0uZnJlZUZsb2F0KF90KX10LmNvbG9ybWFwJiZ0aGlzLl9jb2xvck1hcC5zZXRQaXhlbHMoaSh0LmNvbG9ybWFwKSl9LGouZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX3NoYWRlci5kaXNwb3NlKCksdGhpcy5fdmFvLmRpc3Bvc2UoKSx0aGlzLl9jb29yZGluYXRlQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLl9jb2xvck1hcC5kaXNwb3NlKCksdGhpcy5fY29udG91ckJ1ZmZlci5kaXNwb3NlKCksdGhpcy5fY29udG91clZBTy5kaXNwb3NlKCksdGhpcy5fY29udG91clNoYWRlci5kaXNwb3NlKCksdGhpcy5fY29udG91clBpY2tTaGFkZXIuZGlzcG9zZSgpLHRoaXMuX2R5bmFtaWNCdWZmZXIuZGlzcG9zZSgpLHRoaXMuX2R5bmFtaWNWQU8uZGlzcG9zZSgpO2Zvcih2YXIgdD0wOzM+dDsrK3QpbS5mcmVlRmxvYXQodGhpcy5fZmllbGRbdF0uZGF0YSl9LGouaGlnaGxpZ2h0PWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiB0aGlzLl9keW5hbWljQ291bnRzPVswLDAsMF0sdGhpcy5keWFuYW1pY0xldmVsPVtOYU4sTmFOLE5hTl0sdm9pZCh0aGlzLmhpZ2hsaWdodExldmVsPVstMSwtMSwtMV0pO2Zvcih2YXIgZT0wOzM+ZTsrK2UpdGhpcy5lbmFibGVIaWdobGlnaHRbZV0/dGhpcy5oaWdobGlnaHRMZXZlbFtlXT10LmxldmVsW2VdOnRoaXMuaGlnaGxpZ2h0TGV2ZWxbZV09LTE7dmFyIHI7aWYocj10aGlzLnNuYXBUb0RhdGE/dC5kYXRhQ29vcmRpbmF0ZTp0LnBvc2l0aW9uLHRoaXMuZW5hYmxlRHluYW1pY1swXSYmclswXSE9PXRoaXMuZHluYW1pY0xldmVsWzBdfHx0aGlzLmVuYWJsZUR5bmFtaWNbMV0mJnJbMV0hPT10aGlzLmR5bmFtaWNMZXZlbFsxXXx8dGhpcy5lbmFibGVEeW5hbWljWzJdJiZyWzJdIT09dGhpcy5keW5hbWljTGV2ZWxbMl0pewpmb3IodmFyIG49MCxpPXRoaXMuc2hhcGUsbz1tLm1hbGxvY0Zsb2F0KDEyKmlbMF0qaVsxXSksYT0wOzM+YTsrK2EpaWYodGhpcy5lbmFibGVEeW5hbWljW2FdKXt0aGlzLmR5bmFtaWNMZXZlbFthXT1yW2FdO3ZhciBzPShhKzEpJTMsbD0oYSsyKSUzLGM9dGhpcy5fZmllbGRbYV0sdT10aGlzLl9maWVsZFtzXSxoPXRoaXMuX2ZpZWxkW2xdLGY9KHRoaXMuaW50ZW5zaXR5LHcoYyxyW2FdKSksZD1mLmNlbGxzLHA9Zi5wb3NpdGlvbnM7Zm9yKHRoaXMuX2R5bmFtaWNPZmZzZXRzW2FdPW4sZT0wO2U8ZC5sZW5ndGg7KytlKWZvcih2YXIgZz1kW2VdLHY9MDsyPnY7Kyt2KXt2YXIgeT1wW2dbdl1dLGI9K3lbMF0seD0wfGIsXz0wfE1hdGgubWluKHgrMSxpWzBdKSxBPWIteCxrPTEtQSxNPSt5WzFdLFQ9MHxNLEU9MHxNYXRoLm1pbihUKzEsaVsxXSksTD1NLVQsUz0xLUwsQz1rKlMsUD1rKkwsej1BKlMsUj1BKkwsTz1DKnUuZ2V0KHgsVCkrUCp1LmdldCh4LEUpK3oqdS5nZXQoXyxUKStSKnUuZ2V0KF8sRSksST1DKmguZ2V0KHgsVCkrUCpoLmdldCh4LEUpK3oqaC5nZXQoXyxUKStSKmguZ2V0KF8sRSk7aWYoaXNOYU4oTyl8fGlzTmFOKEkpKXt2JiYobi09MSk7YnJlYWt9b1syKm4rMF09TyxvWzIqbisxXT1JLG4rPTF9dGhpcy5fZHluYW1pY0NvdW50c1thXT1uLXRoaXMuX2R5bmFtaWNPZmZzZXRzW2FdfWVsc2UgdGhpcy5keW5hbWljTGV2ZWxbYV09TmFOLHRoaXMuX2R5bmFtaWNDb3VudHNbYV09MDt0aGlzLl9keW5hbWljQnVmZmVyLnVwZGF0ZShvLnN1YmFycmF5KDAsMipuKSksbS5mcmVlRmxvYXQobyl9fX0seyIuL2xpYi9zaGFkZXJzIjoxNzQsImJpbmFyeS1zZWFyY2gtYm91bmRzIjoxNzUsImJpdC10d2lkZGxlIjo0OSxjb2xvcm1hcDo1NywiZ2wtYnVmZmVyIjo3NSwiZ2wtbWF0NC9pbnZlcnQiOjk0LCJnbC1tYXQ0L211bHRpcGx5Ijo5NiwiZ2wtdGV4dHVyZTJkIjoxODAsImdsLXZhbyI6MTg0LG5kYXJyYXk6MjEwLCJuZGFycmF5LWdyYWRpZW50IjoxNzYsIm5kYXJyYXktb3BzIjoyMDksIm5kYXJyYXktcGFjayI6MTc3LCJzdXJmYWNlLW5ldHMiOjIyOSwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwxODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2PVt0LkxJTkVBUix0Lk5FQVJFU1RfTUlQTUFQX0xJTkVBUix0LkxJTkVBUl9NSVBNQVBfTkVBUkVTVCx0LkxJTkVBUl9NSVBNQVBfTkVBUkVTVF0sbT1bdC5ORUFSRVNULHQuTElORUFSLHQuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCx0Lk5FQVJFU1RfTUlQTUFQX0xJTkVBUix0LkxJTkVBUl9NSVBNQVBfTkVBUkVTVCx0LkxJTkVBUl9NSVBNQVBfTElORUFSXSx5PVt0LlJFUEVBVCx0LkNMQU1QX1RPX0VER0UsdC5NSVJST1JFRF9SRVBFQVRdfWZ1bmN0aW9uIGkodCxlLHIpe3ZhciBuPXQuZ2wsaT1uLmdldFBhcmFtZXRlcihuLk1BWF9URVhUVVJFX1NJWkUpO2lmKDA+ZXx8ZT5pfHwwPnJ8fHI+aSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCB0ZXh0dXJlIHNpemUiKTtyZXR1cm4gdC5fc2hhcGU9W2Uscl0sdC5iaW5kKCksbi50ZXhJbWFnZTJEKG4uVEVYVFVSRV8yRCwwLHQuZm9ybWF0LGUsciwwLHQuZm9ybWF0LHQudHlwZSxudWxsKSx0Ll9taXBMZXZlbHM9WzBdLHR9ZnVuY3Rpb24gbyh0LGUscixuLGksbyl7dGhpcy5nbD10LHRoaXMuaGFuZGxlPWUsdGhpcy5mb3JtYXQ9aSx0aGlzLnR5cGU9byx0aGlzLl9zaGFwZT1bcixuXSx0aGlzLl9taXBMZXZlbHM9WzBdLHRoaXMuX21hZ0ZpbHRlcj10Lk5FQVJFU1QsdGhpcy5fbWluRmlsdGVyPXQuTkVBUkVTVCx0aGlzLl93cmFwUz10LkNMQU1QX1RPX0VER0UsdGhpcy5fd3JhcFQ9dC5DTEFNUF9UT19FREdFLHRoaXMuX2FuaXNvU2FtcGxlcz0xO3ZhciBhPXRoaXMscz1bdGhpcy5fd3JhcFMsdGhpcy5fd3JhcFRdO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHMsW3tnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5fd3JhcFN9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gYS53cmFwUz10fX0se2dldDpmdW5jdGlvbigpe3JldHVybiBhLl93cmFwVH0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBhLndyYXBUPXR9fV0pLHRoaXMuX3dyYXBWZWN0b3I9czt2YXIgbD1bdGhpcy5fc2hhcGVbMF0sdGhpcy5fc2hhcGVbMV1dO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwsW3tnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5fc2hhcGVbMF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gYS53aWR0aD10fX0se2dldDpmdW5jdGlvbigpe3JldHVybiBhLl9zaGFwZVsxXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBhLmhlaWdodD10fX1dKSx0aGlzLl9zaGFwZVZlY3Rvcj1sfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gMz09PXQubGVuZ3RoPzE9PT1lWzJdJiZlWzFdPT09dFswXSp0WzJdJiZlWzBdPT09dFsyXToxPT09ZVswXSYmZVsxXT09PXRbMF19ZnVuY3Rpb24gcyh0LGUscixuLGksbyxzLGwpe3ZhciBjPWwuZHR5cGUsdT1sLnNoYXBlLnNsaWNlKCk7aWYodS5sZW5ndGg8Mnx8dS5sZW5ndGg+Myl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCBuZGFycmF5LCBtdXN0IGJlIDJkIG9yIDNkIik7dmFyIGg9MCxmPTAsdj1hKHUsbC5zdHJpZGUuc2xpY2UoKSk7ImZsb2F0MzIiPT09Yz9oPXQuRkxPQVQ6ImZsb2F0NjQiPT09Yz8oaD10LkZMT0FULHY9ITEsYz0iZmxvYXQzMiIpOiJ1aW50OCI9PT1jP2g9dC5VTlNJR05FRF9CWVRFOihoPXQuVU5TSUdORURfQllURSx2PSExLGM9InVpbnQ4Iik7dmFyIG09MTtpZigyPT09dS5sZW5ndGgpZj10LkxVTUlOQU5DRSx1PVt1WzBdLHVbMV0sMV0sbD1kKGwuZGF0YSx1LFtsLnN0cmlkZVswXSxsLnN0cmlkZVsxXSwxXSxsLm9mZnNldCk7ZWxzZXtpZigzIT09dS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgc2hhcGUgZm9yIHRleHR1cmUiKTtpZigxPT09dVsyXSlmPXQuQUxQSEE7ZWxzZSBpZigyPT09dVsyXSlmPXQuTFVNSU5BTkNFX0FMUEhBO2Vsc2UgaWYoMz09PXVbMl0pZj10LlJHQjtlbHNle2lmKDQhPT11WzJdKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIHNoYXBlIGZvciBwaXhlbCBjb29yZHMiKTtmPXQuUkdCQX1tPXVbMl19aWYoZiE9PXQuTFVNSU5BTkNFJiZmIT09dC5BTFBIQXx8aSE9PXQuTFVNSU5BTkNFJiZpIT09dC5BTFBIQXx8KGY9aSksZiE9PWkpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEluY29tcGF0aWJsZSB0ZXh0dXJlIGZvcm1hdCBmb3Igc2V0UGl4ZWxzIik7dmFyIHk9bC5zaXplLHg9cy5pbmRleE9mKG4pPDA7aWYoeCYmcy5wdXNoKG4pLGg9PT1vJiZ2KTA9PT1sLm9mZnNldCYmbC5kYXRhLmxlbmd0aD09PXk/eD90LnRleEltYWdlMkQodC5URVhUVVJFXzJELG4saSx1WzBdLHVbMV0sMCxpLG8sbC5kYXRhKTp0LnRleFN1YkltYWdlMkQodC5URVhUVVJFXzJELG4sZSxyLHVbMF0sdVsxXSxpLG8sbC5kYXRhKTp4P3QudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsbixpLHVbMF0sdVsxXSwwLGksbyxsLmRhdGEuc3ViYXJyYXkobC5vZmZzZXQsbC5vZmZzZXQreSkpOnQudGV4U3ViSW1hZ2UyRCh0LlRFWFRVUkVfMkQsbixlLHIsdVswXSx1WzFdLGksbyxsLmRhdGEuc3ViYXJyYXkobC5vZmZzZXQsbC5vZmZzZXQreSkpO2Vsc2V7dmFyIF87Xz1vPT09dC5GTE9BVD9nLm1hbGxvY0Zsb2F0MzIoeSk6Zy5tYWxsb2NVaW50OCh5KTt2YXIgdz1kKF8sdSxbdVsyXSx1WzJdKnVbMF0sMV0pO2g9PT10LkZMT0FUJiZvPT09dC5VTlNJR05FRF9CWVRFP2IodyxsKTpwLmFzc2lnbih3LGwpLHg/dC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCxuLGksdVswXSx1WzFdLDAsaSxvLF8uc3ViYXJyYXkoMCx5KSk6dC50ZXhTdWJJbWFnZTJEKHQuVEVYVFVSRV8yRCxuLGUscix1WzBdLHVbMV0saSxvLF8uc3ViYXJyYXkoMCx5KSksbz09PXQuRkxPQVQ/Zy5mcmVlRmxvYXQzMihfKTpnLmZyZWVVaW50OChfKX19ZnVuY3Rpb24gbCh0KXt2YXIgZT10LmNyZWF0ZVRleHR1cmUoKTtyZXR1cm4gdC5iaW5kVGV4dHVyZSh0LlRFWFRVUkVfMkQsZSksdC50ZXhQYXJhbWV0ZXJpKHQuVEVYVFVSRV8yRCx0LlRFWFRVUkVfTUlOX0ZJTFRFUix0Lk5FQVJFU1QpLHQudGV4UGFyYW1ldGVyaSh0LlRFWFRVUkVfMkQsdC5URVhUVVJFX01BR19GSUxURVIsdC5ORUFSRVNUKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJFXzJELHQuVEVYVFVSRV9XUkFQX1MsdC5DTEFNUF9UT19FREdFKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJFXzJELHQuVEVYVFVSRV9XUkFQX1QsdC5DTEFNUF9UT19FREdFKSxlfWZ1bmN0aW9uIGModCxlLHIsbixpKXt2YXIgYT10LmdldFBhcmFtZXRlcih0Lk1BWF9URVhUVVJFX1NJWkUpO2lmKDA+ZXx8ZT5hfHwwPnJ8fHI+YSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCB0ZXh0dXJlIHNoYXBlIik7aWYoaT09PXQuRkxPQVQmJiF0LmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXQiKSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogRmxvYXRpbmcgcG9pbnQgdGV4dHVyZXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7dmFyIHM9bCh0KTtyZXR1cm4gdC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCwwLG4sZSxyLDAsbixpLG51bGwpLG5ldyBvKHQscyxlLHIsbixpKX1mdW5jdGlvbiB1KHQsZSxyLG4pe3ZhciBpPWwodCk7cmV0dXJuIHQudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsMCxyLHIsbixlKSxuZXcgbyh0LGksMHxlLndpZHRoLDB8ZS5oZWlnaHQscixuKX1mdW5jdGlvbiBoKHQsZSl7dmFyIHI9ZS5kdHlwZSxuPWUuc2hhcGUuc2xpY2UoKSxpPXQuZ2V0UGFyYW1ldGVyKHQuTUFYX1RFWFRVUkVfU0laRSk7aWYoblswXTwwfHxuWzBdPml8fG5bMV08MHx8blsxXT5pKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIHRleHR1cmUgc2l6ZSIpO3ZhciBzPWEobixlLnN0cmlkZS5zbGljZSgpKSxjPTA7ImZsb2F0MzIiPT09cj9jPXQuRkxPQVQ6ImZsb2F0NjQiPT09cj8oYz10LkZMT0FULHM9ITEscj0iZmxvYXQzMiIpOiJ1aW50OCI9PT1yP2M9dC5VTlNJR05FRF9CWVRFOihjPXQuVU5TSUdORURfQllURSxzPSExLHI9InVpbnQ4Iik7dmFyIHU9MDtpZigyPT09bi5sZW5ndGgpdT10LkxVTUlOQU5DRSxuPVtuWzBdLG5bMV0sMV0sZT1kKGUuZGF0YSxuLFtlLnN0cmlkZVswXSxlLnN0cmlkZVsxXSwxXSxlLm9mZnNldCk7ZWxzZXtpZigzIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgc2hhcGUgZm9yIHRleHR1cmUiKTtpZigxPT09blsyXSl1PXQuQUxQSEE7ZWxzZSBpZigyPT09blsyXSl1PXQuTFVNSU5BTkNFX0FMUEhBO2Vsc2UgaWYoMz09PW5bMl0pdT10LlJHQjtlbHNle2lmKDQhPT1uWzJdKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIHNoYXBlIGZvciBwaXhlbCBjb29yZHMiKTt1PXQuUkdCQX19YyE9PXQuRkxPQVR8fHQuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHwoYz10LlVOU0lHTkVEX0JZVEUscz0hMSk7dmFyIGgsZix2PWUuc2l6ZTtpZihzKWg9MD09PWUub2Zmc2V0JiZlLmRhdGEubGVuZ3RoPT09dj9lLmRhdGE6ZS5kYXRhLnN1YmFycmF5KGUub2Zmc2V0LGUub2Zmc2V0K3YpO2Vsc2V7dmFyIG09W25bMl0sblsyXSpuWzBdLDFdO2Y9Zy5tYWxsb2ModixyKTt2YXIgeT1kKGYsbixtLDApOyJmbG9hdDMyIiE9PXImJiJmbG9hdDY0IiE9PXJ8fGMhPT10LlVOU0lHTkVEX0JZVEU/cC5hc3NpZ24oeSxlKTpiKHksZSksaD1mLnN1YmFycmF5KDAsdil9dmFyIHg9bCh0KTtyZXR1cm4gdC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCwwLHUsblswXSxuWzFdLDAsdSxjLGgpLHN8fGcuZnJlZShmKSxuZXcgbyh0LHgsblswXSxuWzFdLHUsYyl9ZnVuY3Rpb24gZih0KXtpZihhcmd1bWVudHMubGVuZ3RoPD0xKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBNaXNzaW5nIGFyZ3VtZW50cyBmb3IgdGV4dHVyZTJkIGNvbnN0cnVjdG9yIik7aWYodnx8bih0KSwibnVtYmVyIj09dHlwZW9mIGFyZ3VtZW50c1sxXSlyZXR1cm4gYyh0LGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdfHx0LlJHQkEsYXJndW1lbnRzWzRdfHx0LlVOU0lHTkVEX0JZVEUpO2lmKEFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzFdKSlyZXR1cm4gYyh0LDB8YXJndW1lbnRzWzFdWzBdLDB8YXJndW1lbnRzWzFdWzFdLGFyZ3VtZW50c1syXXx8dC5SR0JBLGFyZ3VtZW50c1szXXx8dC5VTlNJR05FRF9CWVRFKTtpZigib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1sxXSl7dmFyIGU9YXJndW1lbnRzWzFdO2lmKGUgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8ZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fGUgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50fHxlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKXJldHVybiB1KHQsZSxhcmd1bWVudHNbMl18fHQuUkdCQSxhcmd1bWVudHNbM118fHQuVU5TSUdORURfQllURSk7aWYoZS5zaGFwZSYmZS5kYXRhJiZlLnN0cmlkZSlyZXR1cm4gaCh0LGUpfXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIGFyZ3VtZW50cyBmb3IgdGV4dHVyZTJkIGNvbnN0cnVjdG9yIil9dmFyIGQ9dCgibmRhcnJheSIpLHA9dCgibmRhcnJheS1vcHMiKSxnPXQoInR5cGVkYXJyYXktcG9vbCIpO2UuZXhwb3J0cz1mO3ZhciB2PW51bGwsbT1udWxsLHk9bnVsbCxiPWZ1bmN0aW9uKHQsZSl7cC5tdWxzKHQsZSwyNTUpfSx4PW8ucHJvdG90eXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHgse21pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21pbkZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuYmluZCgpO3ZhciBlPXRoaXMuZ2w7aWYodGhpcy50eXBlPT09ZS5GTE9BVCYmdi5pbmRleE9mKHQpPj0wJiYoZS5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpfHwodD1lLk5FQVJFU1QpKSxtLmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5rbm93biBmaWx0ZXIgbW9kZSAiK3QpO3JldHVybiBlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9NSU5fRklMVEVSLHQpLHRoaXMuX21pbkZpbHRlcj10fX0sbWFnRmlsdGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5iaW5kKCk7dmFyIGU9dGhpcy5nbDtpZih0aGlzLnR5cGU9PT1lLkZMT0FUJiZ2LmluZGV4T2YodCk+PTAmJihlLmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIil8fCh0PWUuTkVBUkVTVCkpLG0uaW5kZXhPZih0KTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtub3duIGZpbHRlciBtb2RlICIrdCk7cmV0dXJuIGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX01BR19GSUxURVIsdCksdGhpcy5fbWFnRmlsdGVyPXR9fSxtaXBTYW1wbGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5pc29TYW1wbGVzfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYW5pc29TYW1wbGVzO2lmKHRoaXMuX2FuaXNvU2FtcGxlcz0wfE1hdGgubWF4KHQsMSksZSE9PXRoaXMuX2FuaXNvU2FtcGxlcyl7dmFyIHI9Z2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtyJiZ0aGlzLmdsLnRleFBhcmFtZXRlcmYodGhpcy5nbC5URVhUVVJFXzJELHIuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsdGhpcy5fYW5pc29TYW1wbGVzKX1yZXR1cm4gdGhpcy5fYW5pc29TYW1wbGVzfX0sd3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuYmluZCgpLHkuaW5kZXhPZih0KTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtub3duIHdyYXAgbW9kZSAiK3QpO3JldHVybiB0aGlzLmdsLnRleFBhcmFtZXRlcmkodGhpcy5nbC5URVhUVVJFXzJELHRoaXMuZ2wuVEVYVFVSRV9XUkFQX1MsdCksdGhpcy5fd3JhcFM9dH19LHdyYXBUOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcFR9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLmJpbmQoKSx5LmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5rbm93biB3cmFwIG1vZGUgIit0KTtyZXR1cm4gdGhpcy5nbC50ZXhQYXJhbWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCx0aGlzLmdsLlRFWFRVUkVfV1JBUF9ULHQpLHRoaXMuX3dyYXBUPXR9fSx3cmFwOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcFZlY3Rvcn0sc2V0OmZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCl8fCh0PVt0LHRdKSwyIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IE11c3Qgc3BlY2lmeSB3cmFwIG1vZGUgZm9yIHJvd3MgYW5kIGNvbHVtbnMiKTtmb3IodmFyIGU9MDsyPmU7KytlKWlmKHkuaW5kZXhPZih0W2VdKTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtub3duIHdyYXAgbW9kZSAiK3QpO3RoaXMuX3dyYXBTPXRbMF0sdGhpcy5fd3JhcFQ9dFsxXTt2YXIgcj10aGlzLmdsO3JldHVybiB0aGlzLmJpbmQoKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1MsdGhpcy5fd3JhcFMpLHIudGV4UGFyYW1ldGVyaShyLlRFWFRVUkVfMkQsci5URVhUVVJFX1dSQVBfVCx0aGlzLl93cmFwVCksdH19LHNoYXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hhcGVWZWN0b3J9LHNldDpmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZigyIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgdGV4dHVyZSBzaGFwZSIpfWVsc2UgdD1bMHx0LDB8dF07cmV0dXJuIGkodGhpcywwfHRbMF0sMHx0WzFdKSxbMHx0WzBdLDB8dFsxXV19fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NoYXBlWzBdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9MHx0LGkodGhpcyx0LHRoaXMuX3NoYXBlWzFdKSx0fX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hhcGVbMV19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdD0wfHQsaSh0aGlzLHRoaXMuX3NoYXBlWzBdLHQpLHR9fX0pLHguYmluZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsO3JldHVybiB2b2lkIDAhPT10JiZlLmFjdGl2ZVRleHR1cmUoZS5URVhUVVJFMCsoMHx0KSksZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQsdGhpcy5oYW5kbGUpLHZvaWQgMCE9PXQ/MHx0OmUuZ2V0UGFyYW1ldGVyKGUuQUNUSVZFX1RFWFRVUkUpLWUuVEVYVFVSRTB9LHguZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2wuZGVsZXRlVGV4dHVyZSh0aGlzLmhhbmRsZSl9LHguZ2VuZXJhdGVNaXBtYXA9ZnVuY3Rpb24oKXt0aGlzLmJpbmQoKSx0aGlzLmdsLmdlbmVyYXRlTWlwbWFwKHRoaXMuZ2wuVEVYVFVSRV8yRCk7Zm9yKHZhciB0PU1hdGgubWluKHRoaXMuX3NoYXBlWzBdLHRoaXMuX3NoYXBlWzFdKSxlPTA7dD4wOysrZSx0Pj4+PTEpdGhpcy5fbWlwTGV2ZWxzLmluZGV4T2YoZSk8MCYmdGhpcy5fbWlwTGV2ZWxzLnB1c2goZSl9LHguc2V0UGl4ZWxzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMuZ2w7aWYodGhpcy5iaW5kKCksQXJyYXkuaXNBcnJheShlKT8obj1yLHI9MHxlWzFdLGU9MHxlWzBdKTooZT1lfHwwLHI9cnx8MCksbj1ufHwwLHQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dCBpbnN0YW5jZW9mIEltYWdlRGF0YXx8dCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KXt2YXIgbz10aGlzLl9taXBMZXZlbHMuaW5kZXhPZihuKTwwO28/KGkudGV4SW1hZ2UyRChpLlRFWFRVUkVfMkQsMCx0aGlzLmZvcm1hdCx0aGlzLmZvcm1hdCx0aGlzLnR5cGUsdCksdGhpcy5fbWlwTGV2ZWxzLnB1c2gobikpOmkudGV4U3ViSW1hZ2UyRChpLlRFWFRVUkVfMkQsbixlLHIsdGhpcy5mb3JtYXQsdGhpcy50eXBlLHQpfWVsc2V7aWYoISh0LnNoYXBlJiZ0LnN0cmlkZSYmdC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7aWYodC5zaGFwZS5sZW5ndGg8Mnx8ZSt0LnNoYXBlWzFdPnRoaXMuX3NoYXBlWzFdPj4+bnx8cit0LnNoYXBlWzBdPnRoaXMuX3NoYXBlWzBdPj4+bnx8MD5lfHwwPnIpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IFRleHR1cmUgZGltZW5zaW9ucyBhcmUgb3V0IG9mIGJvdW5kcyIpO3MoaSxlLHIsbix0aGlzLmZvcm1hdCx0aGlzLnR5cGUsdGhpcy5fbWlwTGV2ZWxzLHQpfX19LHtuZGFycmF5OjIxMCwibmRhcnJheS1vcHMiOjIwOSwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwxODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7ZT9lLmJpbmQoKTp0LmJpbmRCdWZmZXIodC5FTEVNRU5UX0FSUkFZX0JVRkZFUixudWxsKTt2YXIgbj0wfHQuZ2V0UGFyYW1ldGVyKHQuTUFYX1ZFUlRFWF9BVFRSSUJTKTtpZihyKXtpZihyLmxlbmd0aD5uKXRocm93IG5ldyBFcnJvcigiZ2wtdmFvOiBUb28gbWFueSB2ZXJ0ZXggYXR0cmlidXRlcyIpO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgbz1yW2ldO2lmKG8uYnVmZmVyKXt2YXIgYT1vLmJ1ZmZlcixzPW8uc2l6ZXx8NCxsPW8udHlwZXx8dC5GTE9BVCxjPSEhby5ub3JtYWxpemVkLHU9by5zdHJpZGV8fDAsaD1vLm9mZnNldHx8MDthLmJpbmQoKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLHQudmVydGV4QXR0cmliUG9pbnRlcihpLHMsbCxjLHUsaCl9ZWxzZXtpZigibnVtYmVyIj09dHlwZW9mIG8pdC52ZXJ0ZXhBdHRyaWIxZihpLG8pO2Vsc2UgaWYoMT09PW8ubGVuZ3RoKXQudmVydGV4QXR0cmliMWYoaSxvWzBdKTtlbHNlIGlmKDI9PT1vLmxlbmd0aCl0LnZlcnRleEF0dHJpYjJmKGksb1swXSxvWzFdKTtlbHNlIGlmKDM9PT1vLmxlbmd0aCl0LnZlcnRleEF0dHJpYjNmKGksb1swXSxvWzFdLG9bMl0pO2Vsc2V7aWYoNCE9PW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtdmFvOiBJbnZhbGlkIHZlcnRleCBhdHRyaWJ1dGUiKTt0LnZlcnRleEF0dHJpYjRmKGksb1swXSxvWzFdLG9bMl0sb1szXSl9dC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaSl9fWZvcig7bj5pOysraSl0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpKX1lbHNle3QuYmluZEJ1ZmZlcih0LkFSUkFZX0JVRkZFUixudWxsKTtmb3IodmFyIGk9MDtuPmk7KytpKXQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpfX1lLmV4cG9ydHM9bn0se31dLDE4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3RoaXMuZ2w9dCx0aGlzLl9lbGVtZW50cz1udWxsLHRoaXMuX2F0dHJpYnV0ZXM9bnVsbCx0aGlzLl9lbGVtZW50c1R5cGU9dC5VTlNJR05FRF9TSE9SVH1mdW5jdGlvbiBpKHQpe3JldHVybiBuZXcgbih0KX12YXIgbz10KCIuL2RvLWJpbmQuanMiKTtuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7byh0aGlzLmdsLHRoaXMuX2VsZW1lbnRzLHRoaXMuX2F0dHJpYnV0ZXMpfSxuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuX2VsZW1lbnRzPWUsdGhpcy5fYXR0cmlidXRlcz10LHRoaXMuX2VsZW1lbnRzVHlwZT1yfHx0aGlzLmdsLlVOU0lHTkVEX1NIT1JUfSxuLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7fSxuLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlLHIpe3I9cnx8MDt2YXIgbj10aGlzLmdsO3RoaXMuX2VsZW1lbnRzP24uZHJhd0VsZW1lbnRzKHQsZSx0aGlzLl9lbGVtZW50c1R5cGUscik6bi5kcmF3QXJyYXlzKHQscixlKX0sZS5leHBvcnRzPWl9LHsiLi9kby1iaW5kLmpzIjoxODF9XSwxODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGksbyl7dGhpcy5sb2NhdGlvbj10LHRoaXMuZGltZW5zaW9uPWUsdGhpcy5hPXIsdGhpcy5iPW4sdGhpcy5jPWksdGhpcy5kPW99ZnVuY3Rpb24gaSh0LGUscil7dGhpcy5nbD10LHRoaXMuX2V4dD1lLHRoaXMuaGFuZGxlPXIsdGhpcy5fYXR0cmlicz1bXSx0aGlzLl91c2VFbGVtZW50cz0hMSx0aGlzLl9lbGVtZW50c1R5cGU9dC5VTlNJR05FRF9TSE9SVH1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIG5ldyBpKHQsZSxlLmNyZWF0ZVZlcnRleEFycmF5T0VTKCkpfXZhciBhPXQoIi4vZG8tYmluZC5qcyIpO24ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuZGltZW5zaW9uKXtjYXNlIDE6dC52ZXJ0ZXhBdHRyaWIxZih0aGlzLmxvY2F0aW9uLHRoaXMuYSk7YnJlYWs7Y2FzZSAyOnQudmVydGV4QXR0cmliMmYodGhpcy5sb2NhdGlvbix0aGlzLmEsdGhpcy5iKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZih0aGlzLmxvY2F0aW9uLHRoaXMuYSx0aGlzLmIsdGhpcy5jKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0Zih0aGlzLmxvY2F0aW9uLHRoaXMuYSx0aGlzLmIsdGhpcy5jLHRoaXMuZCl9fSxpLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5fZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh0aGlzLmhhbmRsZSk7Zm9yKHZhciB0PTA7dDx0aGlzLl9hdHRyaWJzLmxlbmd0aDsrK3QpdGhpcy5fYXR0cmlic1t0XS5iaW5kKHRoaXMuZ2wpfSxpLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLl9leHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpfSxpLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHRoaXMuaGFuZGxlKX0saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLmJpbmQoKSxhKHRoaXMuZ2wsZSx0KSx0aGlzLnVuYmluZCgpLHRoaXMuX2F0dHJpYnMubGVuZ3RoPTAsdClmb3IodmFyIGk9MDtpPHQubGVuZ3RoOysraSl7dmFyIG89dFtpXTsibnVtYmVyIj09dHlwZW9mIG8/dGhpcy5fYXR0cmlicy5wdXNoKG5ldyBuKGksMSxvKSk6QXJyYXkuaXNBcnJheShvKSYmdGhpcy5fYXR0cmlicy5wdXNoKG5ldyBuKGksby5sZW5ndGgsb1swXSxvWzFdLG9bMl0sb1szXSkpfXRoaXMuX3VzZUVsZW1lbnRzPSEhZSx0aGlzLl9lbGVtZW50c1R5cGU9cnx8dGhpcy5nbC5VTlNJR05FRF9TSE9SVH0saS5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0LGUscil7cj1yfHwwO3ZhciBuPXRoaXMuZ2w7dGhpcy5fdXNlRWxlbWVudHM/bi5kcmF3RWxlbWVudHModCxlLHRoaXMuX2VsZW1lbnRzVHlwZSxyKTpuLmRyYXdBcnJheXModCxyLGUpfSxlLmV4cG9ydHM9b30seyIuL2RvLWJpbmQuanMiOjE4MX1dLDE4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4pe3ZhciBhLHM9dC5nZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7cmV0dXJuIGE9cz9pKHQscyk6byh0KSxhLnVwZGF0ZShlLHIsbiksYX12YXIgaT10KCIuL2xpYi92YW8tbmF0aXZlLmpzIiksbz10KCIuL2xpYi92YW8tZW11bGF0ZWQuanMiKTtlLmV4cG9ydHM9bn0seyIuL2xpYi92YW8tZW11bGF0ZWQuanMiOjE4MiwiLi9saWIvdmFvLW5hdGl2ZS5qcyI6MTgzfV0sMTg1OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0sbz1lWzJdLGE9ZVszXTtyZXR1cm4gdFswXT1yWzBdKm4rcls0XSppK3JbOF0qbytyWzEyXSphLHRbMV09clsxXSpuK3JbNV0qaStyWzldKm8rclsxM10qYSx0WzJdPXJbMl0qbityWzZdKmkrclsxMF0qbytyWzE0XSphLHRbM109clszXSpuK3JbN10qaStyWzExXSpvK3JbMTVdKmEsdH1lLmV4cG9ydHM9bn0se31dLDE4NjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7ZnVuY3Rpb24gZSh0KXt0Lmxlbmd0aCYmVi5wdXNoKHt0eXBlOkFbQl0sZGF0YTp0LHBvc2l0aW9uOkcsbGluZTpxLGNvbHVtbjpIfSl9ZnVuY3Rpb24gcih0KXtGPTAsVys9dCxqPVcubGVuZ3RoO2Zvcih2YXIgZTtJPVdbRl0saj5GOyl7c3dpdGNoKGU9RixCKXtjYXNlIGg6Rj1MKCk7YnJlYWs7Y2FzZSBmOkY9RSgpO2JyZWFrO2Nhc2UgZDpGPVQoKTticmVhaztjYXNlIHA6Rj1TKCk7YnJlYWs7Y2FzZSBnOkY9eigpO2JyZWFrO2Nhc2UgdzpGPVAoKTticmVhaztjYXNlIHY6Rj1SKCk7YnJlYWs7Y2FzZSB1OkY9TygpO2JyZWFrO2Nhc2UgeDpGPU0oKTticmVhaztjYXNlIGM6Rj1rKCl9aWYoZSE9PUYpc3dpdGNoKFdbZV0pe2Nhc2UiXG4iOkg9MCwrK3E7YnJlYWs7ZGVmYXVsdDorK0h9fXJldHVybiBEKz1GLFc9Vy5zbGljZShGKSxWfWZ1bmN0aW9uIG4odCl7cmV0dXJuIFUubGVuZ3RoJiZlKFUuam9pbigiIikpLEI9XyxlKCIoZW9mKSIpLFZ9ZnVuY3Rpb24gaygpe3JldHVybiBVPVUubGVuZ3RoP1tdOlUsIi8iPT09TiYmIioiPT09ST8oRz1EK0YtMSxCPWgsTj1JLEYrMSk6Ii8iPT09TiYmIi8iPT09ST8oRz1EK0YtMSxCPWYsTj1JLEYrMSk6IiMiPT09ST8oQj1kLEc9RCtGLEYpOi9ccy8udGVzdChJKT8oQj14LEc9RCtGLEYpOihZPS9cZC8udGVzdChJKSxYPS9bXlx3X10vLnRlc3QoSSksRz1EK0YsQj1ZP2c6WD9wOnUsRil9ZnVuY3Rpb24gTSgpe3JldHVybi9bXlxzXS9nLnRlc3QoSSk/KGUoVS5qb2luKCIiKSksQj1jLEYpOihVLnB1c2goSSksTj1JLEYrMSl9ZnVuY3Rpb24gVCgpe3JldHVybiJcbiI9PT1JJiYiXFwiIT09Tj8oZShVLmpvaW4oIiIpKSxCPWMsRik6KFUucHVzaChJKSxOPUksRisxKX1mdW5jdGlvbiBFKCl7cmV0dXJuIFQoKX1mdW5jdGlvbiBMKCl7cmV0dXJuIi8iPT09SSYmIioiPT09Tj8oVS5wdXNoKEkpLGUoVS5qb2luKCIiKSksQj1jLEYrMSk6KFUucHVzaChJKSxOPUksRisxKX1mdW5jdGlvbiBTKCl7aWYoIi4iPT09TiYmL1xkLy50ZXN0KEkpKXJldHVybiBCPXYsRjtpZigiLyI9PT1OJiYiKiI9PT1JKXJldHVybiBCPWgsRjtpZigiLyI9PT1OJiYiLyI9PT1JKXJldHVybiBCPWYsRjtpZigiLiI9PT1JJiZVLmxlbmd0aCl7Zm9yKDtDKFUpOyk7cmV0dXJuIEI9dixGfWlmKCI7Ij09PUl8fCIpIj09PUl8fCIoIj09PUkpe2lmKFUubGVuZ3RoKWZvcig7QyhVKTspO3JldHVybiBlKEkpLEI9YyxGKzF9dmFyIHQ9Mj09PVUubGVuZ3RoJiYiPSIhPT1JO2lmKC9bXHdfXGRcc10vLnRlc3QoSSl8fHQpe2Zvcig7QyhVKTspO3JldHVybiBCPWMsRn1yZXR1cm4gVS5wdXNoKEkpLE49SSxGKzF9ZnVuY3Rpb24gQyh0KXtmb3IodmFyIHIsbixpPTA7Oyl7aWYocj1vLmluZGV4T2YodC5zbGljZSgwLHQubGVuZ3RoK2kpLmpvaW4oIiIpKSxuPW9bcl0sLTE9PT1yKXtpZihpLS0rdC5sZW5ndGg+MCljb250aW51ZTtuPXQuc2xpY2UoMCwxKS5qb2luKCIiKX1yZXR1cm4gZShuKSxHKz1uLmxlbmd0aCxVPVUuc2xpY2Uobi5sZW5ndGgpLFUubGVuZ3RofX1mdW5jdGlvbiBQKCl7cmV0dXJuL1teYS1mQS1GMC05XS8udGVzdChJKT8oZShVLmpvaW4oIiIpKSxCPWMsRik6KFUucHVzaChJKSxOPUksRisxKX1mdW5jdGlvbiB6KCl7cmV0dXJuIi4iPT09ST8oVS5wdXNoKEkpLEI9dixOPUksRisxKTovW2VFXS8udGVzdChJKT8oVS5wdXNoKEkpLEI9dixOPUksRisxKToieCI9PT1JJiYxPT09VS5sZW5ndGgmJiIwIj09PVVbMF0/KEI9dyxVLnB1c2goSSksTj1JLEYrMSk6L1teXGRdLy50ZXN0KEkpPyhlKFUuam9pbigiIikpLEI9YyxGKTooVS5wdXNoKEkpLE49SSxGKzEpfWZ1bmN0aW9uIFIoKXtyZXR1cm4iZiI9PT1JJiYoVS5wdXNoKEkpLE49SSxGKz0xKSwvW2VFXS8udGVzdChJKT8oVS5wdXNoKEkpLE49SSxGKzEpOiItIj09PUkmJi9bZUVdLy50ZXN0KE4pPyhVLnB1c2goSSksTj1JLEYrMSk6L1teXGRdLy50ZXN0KEkpPyhlKFUuam9pbigiIikpLEI9YyxGKTooVS5wdXNoKEkpLE49SSxGKzEpfWZ1bmN0aW9uIE8oKXtpZigvW15cZFx3X10vLnRlc3QoSSkpe3ZhciB0PVUuam9pbigiIik7cmV0dXJuIEI9JC5pbmRleE9mKHQpPi0xP2I6Wi5pbmRleE9mKHQpPi0xP3k6bSxlKFUuam9pbigiIikpLEI9YyxGfXJldHVybiBVLnB1c2goSSksTj1JLEYrMX12YXIgSSxOLGosRj0wLEQ9MCxCPWMsVT1bXSxWPVtdLHE9MSxIPTAsRz0wLFk9ITEsWD0hMSxXPSIiO3Q9dHx8e307dmFyIFo9YSwkPWk7cmV0dXJuIjMwMCBlcyI9PT10LnZlcnNpb24mJihaPWwsJD1zKSxmdW5jdGlvbih0KXtyZXR1cm4gVj1bXSxudWxsIT09dD9yKHQpOm4oKX19ZS5leHBvcnRzPW47dmFyIGk9dCgiLi9saWIvbGl0ZXJhbHMiKSxvPXQoIi4vbGliL29wZXJhdG9ycyIpLGE9dCgiLi9saWIvYnVpbHRpbnMiKSxzPXQoIi4vbGliL2xpdGVyYWxzLTMwMGVzIiksbD10KCIuL2xpYi9idWlsdGlucy0zMDBlcyIpLGM9OTk5LHU9OTk5OSxoPTAsZj0xLGQ9MixwPTMsZz00LHY9NSxtPTYseT03LGI9OCx4PTksXz0xMCx3PTExLEE9WyJibG9jay1jb21tZW50IiwibGluZS1jb21tZW50IiwicHJlcHJvY2Vzc29yIiwib3BlcmF0b3IiLCJpbnRlZ2VyIiwiZmxvYXQiLCJpZGVudCIsImJ1aWx0aW4iLCJrZXl3b3JkIiwid2hpdGVzcGFjZSIsImVvZiIsImludGVnZXIiXX0seyIuL2xpYi9idWlsdGlucyI6MTg4LCIuL2xpYi9idWlsdGlucy0zMDBlcyI6MTg3LCIuL2xpYi9saXRlcmFscyI6MTkwLCIuL2xpYi9saXRlcmFscy0zMDBlcyI6MTg5LCIuL2xpYi9vcGVyYXRvcnMiOjE5MX1dLDE4NzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vYnVpbHRpbnMiKTtuPW4uc2xpY2UoKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIS9eKGdsXF98dGV4dHVyZSkvLnRlc3QodCl9KSxlLmV4cG9ydHM9bi5jb25jYXQoWyJnbF9WZXJ0ZXhJRCIsImdsX0luc3RhbmNlSUQiLCJnbF9Qb3NpdGlvbiIsImdsX1BvaW50U2l6ZSIsImdsX0ZyYWdDb29yZCIsImdsX0Zyb250RmFjaW5nIiwiZ2xfRnJhZ0RlcHRoIiwiZ2xfUG9pbnRDb29yZCIsImdsX01heFZlcnRleEF0dHJpYnMiLCJnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyIsImdsX01heFZlcnRleE91dHB1dFZlY3RvcnMiLCJnbF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyIsImdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyIsImdsX01heFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyIsImdsX01heERyYXdCdWZmZXJzIiwiZ2xfTWluUHJvZ3JhbVRleGVsT2Zmc2V0IiwiZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0IiwiZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMiLCJnbF9EZXB0aFJhbmdlIiwidHJ1bmMiLCJyb3VuZCIsInJvdW5kRXZlbiIsImlzbmFuIiwiaXNpbmYiLCJmbG9hdEJpdHNUb0ludCIsImZsb2F0Qml0c1RvVWludCIsImludEJpdHNUb0Zsb2F0IiwidWludEJpdHNUb0Zsb2F0IiwicGFja1Nub3JtMngxNiIsInVucGFja1Nub3JtMngxNiIsInBhY2tVbm9ybTJ4MTYiLCJ1bnBhY2tVbm9ybTJ4MTYiLCJwYWNrSGFsZjJ4MTYiLCJ1bnBhY2tIYWxmMngxNiIsIm91dGVyUHJvZHVjdCIsInRyYW5zcG9zZSIsImRldGVybWluYW50IiwiaW52ZXJzZSIsInRleHR1cmUiLCJ0ZXh0dXJlU2l6ZSIsInRleHR1cmVQcm9qIiwidGV4dHVyZUxvZCIsInRleHR1cmVPZmZzZXQiLCJ0ZXhlbEZldGNoIiwidGV4ZWxGZXRjaE9mZnNldCIsInRleHR1cmVQcm9qT2Zmc2V0IiwidGV4dHVyZUxvZE9mZnNldCIsInRleHR1cmVQcm9qTG9kIiwidGV4dHVyZVByb2pMb2RPZmZzZXQiLCJ0ZXh0dXJlR3JhZCIsInRleHR1cmVHcmFkT2Zmc2V0IiwidGV4dHVyZVByb2pHcmFkIiwidGV4dHVyZVByb2pHcmFkT2Zmc2V0Il0pfSx7Ii4vYnVpbHRpbnMiOjE4OH1dLDE4ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bImFicyIsImFjb3MiLCJhbGwiLCJhbnkiLCJhc2luIiwiYXRhbiIsImNlaWwiLCJjbGFtcCIsImNvcyIsImNyb3NzIiwiZEZkeCIsImRGZHkiLCJkZWdyZWVzIiwiZGlzdGFuY2UiLCJkb3QiLCJlcXVhbCIsImV4cCIsImV4cDIiLCJmYWNlZm9yd2FyZCIsImZsb29yIiwiZnJhY3QiLCJnbF9CYWNrQ29sb3IiLCJnbF9CYWNrTGlnaHRNb2RlbFByb2R1Y3QiLCJnbF9CYWNrTGlnaHRQcm9kdWN0IiwiZ2xfQmFja01hdGVyaWFsIiwiZ2xfQmFja1NlY29uZGFyeUNvbG9yIiwiZ2xfQ2xpcFBsYW5lIiwiZ2xfQ2xpcFZlcnRleCIsImdsX0NvbG9yIiwiZ2xfRGVwdGhSYW5nZSIsImdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIiwiZ2xfRXllUGxhbmVRIiwiZ2xfRXllUGxhbmVSIiwiZ2xfRXllUGxhbmVTIiwiZ2xfRXllUGxhbmVUIiwiZ2xfRm9nIiwiZ2xfRm9nQ29vcmQiLCJnbF9Gb2dGcmFnQ29vcmQiLCJnbF9Gb2dQYXJhbWV0ZXJzIiwiZ2xfRnJhZ0NvbG9yIiwiZ2xfRnJhZ0Nvb3JkIiwiZ2xfRnJhZ0RhdGEiLCJnbF9GcmFnRGVwdGgiLCJnbF9GcmFnRGVwdGhFWFQiLCJnbF9Gcm9udENvbG9yIiwiZ2xfRnJvbnRGYWNpbmciLCJnbF9Gcm9udExpZ2h0TW9kZWxQcm9kdWN0IiwiZ2xfRnJvbnRMaWdodFByb2R1Y3QiLCJnbF9Gcm9udE1hdGVyaWFsIiwiZ2xfRnJvbnRTZWNvbmRhcnlDb2xvciIsImdsX0xpZ2h0TW9kZWwiLCJnbF9MaWdodE1vZGVsUGFyYW1ldGVycyIsImdsX0xpZ2h0TW9kZWxQcm9kdWN0cyIsImdsX0xpZ2h0UHJvZHVjdHMiLCJnbF9MaWdodFNvdXJjZSIsImdsX0xpZ2h0U291cmNlUGFyYW1ldGVycyIsImdsX01hdGVyaWFsUGFyYW1ldGVycyIsImdsX01heENsaXBQbGFuZXMiLCJnbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4RHJhd0J1ZmZlcnMiLCJnbF9NYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzIiwiZ2xfTWF4TGlnaHRzIiwiZ2xfTWF4VGV4dHVyZUNvb3JkcyIsImdsX01heFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4VGV4dHVyZVVuaXRzIiwiZ2xfTWF4VmFyeWluZ0Zsb2F0cyIsImdsX01heFZlcnRleEF0dHJpYnMiLCJnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyIsImdsX01heFZlcnRleFVuaWZvcm1Db21wb25lbnRzIiwiZ2xfTW9kZWxWaWV3TWF0cml4IiwiZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZSIsImdsX01vZGVsVmlld01hdHJpeEludmVyc2VUcmFuc3Bvc2UiLCJnbF9Nb2RlbFZpZXdNYXRyaXhUcmFuc3Bvc2UiLCJnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4IiwiZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2UiLCJnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSIsImdsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXhUcmFuc3Bvc2UiLCJnbF9NdWx0aVRleENvb3JkMCIsImdsX011bHRpVGV4Q29vcmQxIiwiZ2xfTXVsdGlUZXhDb29yZDIiLCJnbF9NdWx0aVRleENvb3JkMyIsImdsX011bHRpVGV4Q29vcmQ0IiwiZ2xfTXVsdGlUZXhDb29yZDUiLCJnbF9NdWx0aVRleENvb3JkNiIsImdsX011bHRpVGV4Q29vcmQ3IiwiZ2xfTm9ybWFsIiwiZ2xfTm9ybWFsTWF0cml4IiwiZ2xfTm9ybWFsU2NhbGUiLCJnbF9PYmplY3RQbGFuZVEiLCJnbF9PYmplY3RQbGFuZVIiLCJnbF9PYmplY3RQbGFuZVMiLCJnbF9PYmplY3RQbGFuZVQiLCJnbF9Qb2ludCIsImdsX1BvaW50Q29vcmQiLCJnbF9Qb2ludFBhcmFtZXRlcnMiLCJnbF9Qb2ludFNpemUiLCJnbF9Qb3NpdGlvbiIsImdsX1Byb2plY3Rpb25NYXRyaXgiLCJnbF9Qcm9qZWN0aW9uTWF0cml4SW52ZXJzZSIsImdsX1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlVHJhbnNwb3NlIiwiZ2xfUHJvamVjdGlvbk1hdHJpeFRyYW5zcG9zZSIsImdsX1NlY29uZGFyeUNvbG9yIiwiZ2xfVGV4Q29vcmQiLCJnbF9UZXh0dXJlRW52Q29sb3IiLCJnbF9UZXh0dXJlTWF0cml4IiwiZ2xfVGV4dHVyZU1hdHJpeEludmVyc2UiLCJnbF9UZXh0dXJlTWF0cml4SW52ZXJzZVRyYW5zcG9zZSIsImdsX1RleHR1cmVNYXRyaXhUcmFuc3Bvc2UiLCJnbF9WZXJ0ZXgiLCJncmVhdGVyVGhhbiIsImdyZWF0ZXJUaGFuRXF1YWwiLCJpbnZlcnNlc3FydCIsImxlbmd0aCIsImxlc3NUaGFuIiwibGVzc1RoYW5FcXVhbCIsImxvZyIsImxvZzIiLCJtYXRyaXhDb21wTXVsdCIsIm1heCIsIm1pbiIsIm1peCIsIm1vZCIsIm5vcm1hbGl6ZSIsIm5vdCIsIm5vdEVxdWFsIiwicG93IiwicmFkaWFucyIsInJlZmxlY3QiLCJyZWZyYWN0Iiwic2lnbiIsInNpbiIsInNtb290aHN0ZXAiLCJzcXJ0Iiwic3RlcCIsInRhbiIsInRleHR1cmUyRCIsInRleHR1cmUyRExvZCIsInRleHR1cmUyRFByb2oiLCJ0ZXh0dXJlMkRQcm9qTG9kIiwidGV4dHVyZUN1YmUiLCJ0ZXh0dXJlQ3ViZUxvZCIsInRleHR1cmUyRExvZEVYVCIsInRleHR1cmUyRFByb2pMb2RFWFQiLCJ0ZXh0dXJlQ3ViZUxvZEVYVCIsInRleHR1cmUyREdyYWRFWFQiLCJ0ZXh0dXJlMkRQcm9qR3JhZEVYVCIsInRleHR1cmVDdWJlR3JhZEVYVCJdfSx7fV0sMTg5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9saXRlcmFscyIpO2UuZXhwb3J0cz1uLnNsaWNlKCkuY29uY2F0KFsibGF5b3V0IiwiY2VudHJvaWQiLCJzbW9vdGgiLCJjYXNlIiwibWF0MngyIiwibWF0MngzIiwibWF0Mng0IiwibWF0M3gyIiwibWF0M3gzIiwibWF0M3g0IiwibWF0NHgyIiwibWF0NHgzIiwibWF0NHg0IiwidWludCIsInV2ZWMyIiwidXZlYzMiLCJ1dmVjNCIsInNhbXBsZXJDdWJlU2hhZG93Iiwic2FtcGxlcjJEQXJyYXkiLCJzYW1wbGVyMkRBcnJheVNoYWRvdyIsImlzYW1wbGVyMkQiLCJpc2FtcGxlcjNEIiwiaXNhbXBsZXJDdWJlIiwiaXNhbXBsZXIyREFycmF5IiwidXNhbXBsZXIyRCIsInVzYW1wbGVyM0QiLCJ1c2FtcGxlckN1YmUiLCJ1c2FtcGxlcjJEQXJyYXkiLCJjb2hlcmVudCIsInJlc3RyaWN0IiwicmVhZG9ubHkiLCJ3cml0ZW9ubHkiLCJyZXNvdXJjZSIsImF0b21pY191aW50Iiwibm9wZXJzcGVjdGl2ZSIsInBhdGNoIiwic2FtcGxlIiwic3Vicm91dGluZSIsImNvbW1vbiIsInBhcnRpdGlvbiIsImFjdGl2ZSIsImZpbHRlciIsImltYWdlMUQiLCJpbWFnZTJEIiwiaW1hZ2UzRCIsImltYWdlQ3ViZSIsImlpbWFnZTFEIiwiaWltYWdlMkQiLCJpaW1hZ2UzRCIsImlpbWFnZUN1YmUiLCJ1aW1hZ2UxRCIsInVpbWFnZTJEIiwidWltYWdlM0QiLCJ1aW1hZ2VDdWJlIiwiaW1hZ2UxREFycmF5IiwiaW1hZ2UyREFycmF5IiwiaWltYWdlMURBcnJheSIsImlpbWFnZTJEQXJyYXkiLCJ1aW1hZ2UxREFycmF5IiwidWltYWdlMkRBcnJheSIsImltYWdlMURTaGFkb3ciLCJpbWFnZTJEU2hhZG93IiwiaW1hZ2UxREFycmF5U2hhZG93IiwiaW1hZ2UyREFycmF5U2hhZG93IiwiaW1hZ2VCdWZmZXIiLCJpaW1hZ2VCdWZmZXIiLCJ1aW1hZ2VCdWZmZXIiLCJzYW1wbGVyMURBcnJheSIsInNhbXBsZXIxREFycmF5U2hhZG93IiwiaXNhbXBsZXIxRCIsImlzYW1wbGVyMURBcnJheSIsInVzYW1wbGVyMUQiLCJ1c2FtcGxlcjFEQXJyYXkiLCJpc2FtcGxlcjJEUmVjdCIsInVzYW1wbGVyMkRSZWN0Iiwic2FtcGxlckJ1ZmZlciIsImlzYW1wbGVyQnVmZmVyIiwidXNhbXBsZXJCdWZmZXIiLCJzYW1wbGVyMkRNUyIsImlzYW1wbGVyMkRNUyIsInVzYW1wbGVyMkRNUyIsInNhbXBsZXIyRE1TQXJyYXkiLCJpc2FtcGxlcjJETVNBcnJheSIsInVzYW1wbGVyMkRNU0FycmF5Il0pfSx7Ii4vbGl0ZXJhbHMiOjE5MH1dLDE5MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bInByZWNpc2lvbiIsImhpZ2hwIiwibWVkaXVtcCIsImxvd3AiLCJhdHRyaWJ1dGUiLCJjb25zdCIsInVuaWZvcm0iLCJ2YXJ5aW5nIiwiYnJlYWsiLCJjb250aW51ZSIsImRvIiwiZm9yIiwid2hpbGUiLCJpZiIsImVsc2UiLCJpbiIsIm91dCIsImlub3V0IiwiZmxvYXQiLCJpbnQiLCJ2b2lkIiwiYm9vbCIsInRydWUiLCJmYWxzZSIsImRpc2NhcmQiLCJyZXR1cm4iLCJtYXQyIiwibWF0MyIsIm1hdDQiLCJ2ZWMyIiwidmVjMyIsInZlYzQiLCJpdmVjMiIsIml2ZWMzIiwiaXZlYzQiLCJidmVjMiIsImJ2ZWMzIiwiYnZlYzQiLCJzYW1wbGVyMUQiLCJzYW1wbGVyMkQiLCJzYW1wbGVyM0QiLCJzYW1wbGVyQ3ViZSIsInNhbXBsZXIxRFNoYWRvdyIsInNhbXBsZXIyRFNoYWRvdyIsInN0cnVjdCIsImFzbSIsImNsYXNzIiwidW5pb24iLCJlbnVtIiwidHlwZWRlZiIsInRlbXBsYXRlIiwidGhpcyIsInBhY2tlZCIsImdvdG8iLCJzd2l0Y2giLCJkZWZhdWx0IiwiaW5saW5lIiwibm9pbmxpbmUiLCJ2b2xhdGlsZSIsInB1YmxpYyIsInN0YXRpYyIsImV4dGVybiIsImV4dGVybmFsIiwiaW50ZXJmYWNlIiwibG9uZyIsInNob3J0IiwiZG91YmxlIiwiaGFsZiIsImZpeGVkIiwidW5zaWduZWQiLCJpbnB1dCIsIm91dHB1dCIsImh2ZWMyIiwiaHZlYzMiLCJodmVjNCIsImR2ZWMyIiwiZHZlYzMiLCJkdmVjNCIsImZ2ZWMyIiwiZnZlYzMiLCJmdmVjNCIsInNhbXBsZXIyRFJlY3QiLCJzYW1wbGVyM0RSZWN0Iiwic2FtcGxlcjJEUmVjdFNoYWRvdyIsInNpemVvZiIsImNhc3QiLCJuYW1lc3BhY2UiLCJ1c2luZyJdfSx7fV0sMTkxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPVsiPDw9IiwiPj49IiwiKysiLCItLSIsIjw8IiwiPj4iLCI8PSIsIj49IiwiPT0iLCIhPSIsIiYmIiwifHwiLCIrPSIsIi09IiwiKj0iLCIvPSIsIiU9IiwiJj0iLCJeXiIsIl49IiwifD0iLCIoIiwiKSIsIlsiLCJdIiwiLiIsIiEiLCJ+IiwiKiIsIi8iLCIlIiwiKyIsIi0iLCI8IiwiPiIsIiYiLCJeIiwifCIsIj8iLCI6IiwiPSIsIiwiLCI7IiwieyIsIn0iXX0se31dLDE5MjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1pKGUpLG49W107cmV0dXJuIG49bi5jb25jYXQocih0KSksbj1uLmNvbmNhdChyKG51bGwpKX12YXIgaT10KCIuL2luZGV4Iik7ZS5leHBvcnRzPW59LHsiLi9pbmRleCI6MTg2fV0sMTkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMudmVydGljZXM9dCx0aGlzLmFkamFjZW50PWUsdGhpcy5ib3VuZGFyeT1yLHRoaXMubGFzdFZpc2l0ZWQ9LTF9ZnVuY3Rpb24gaSh0LGUscil7dGhpcy52ZXJ0aWNlcz10LHRoaXMuY2VsbD1lLHRoaXMuaW5kZXg9cn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHUodC52ZXJ0aWNlcyxlLnZlcnRpY2VzKX1mdW5jdGlvbiBhKHQpe2Zvcih2YXIgZT1bImZ1bmN0aW9uIG9yaWVudCgpe3ZhciB0dXBsZT10aGlzLnR1cGxlO3JldHVybiB0ZXN0KCJdLHI9MDt0Pj1yOysrcilyPjAmJmUucHVzaCgiLCIpLGUucHVzaCgidHVwbGVbIixyLCJdIik7ZS5wdXNoKCIpfXJldHVybiBvcmllbnQiKTt2YXIgbj1uZXcgRnVuY3Rpb24oInRlc3QiLGUuam9pbigiIikpLGk9Y1t0KzFdO3JldHVybiBpfHwoaT1jKSxuKGkpfWZ1bmN0aW9uIHModCxlLHIpe3RoaXMuZGltZW5zaW9uPXQsdGhpcy52ZXJ0aWNlcz1lLHRoaXMuc2ltcGxpY2VzPXIsdGhpcy5pbnRlcmlvcj1yLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hdC5ib3VuZGFyeX0pLHRoaXMudHVwbGU9bmV3IEFycmF5KHQrMSk7Zm9yKHZhciBuPTA7dD49bjsrK24pdGhpcy50dXBsZVtuXT10aGlzLnZlcnRpY2VzW25dO3ZhciBpPWhbdF07aXx8KGk9aFt0XT1hKHQpKSx0aGlzLm9yaWVudD1pfWZ1bmN0aW9uIGwodCxlKXt2YXIgcj10Lmxlbmd0aDtpZigwPT09cil0aHJvdyBuZXcgRXJyb3IoIk11c3QgaGF2ZSBhdCBsZWFzdCBkKzEgcG9pbnRzIik7dmFyIGk9dFswXS5sZW5ndGg7aWYoaT49cil0aHJvdyBuZXcgRXJyb3IoIk11c3QgaW5wdXQgYXQgbGVhc3QgZCsxIHBvaW50cyIpO3ZhciBvPXQuc2xpY2UoMCxpKzEpLGE9Yy5hcHBseSh2b2lkIDAsbyk7aWYoMD09PWEpdGhyb3cgbmV3IEVycm9yKCJJbnB1dCBub3QgaW4gZ2VuZXJhbCBwb3NpdGlvbiIpO2Zvcih2YXIgbD1uZXcgQXJyYXkoaSsxKSx1PTA7aT49dTsrK3UpbFt1XT11OzA+YSYmKGxbMF09MSxsWzFdPTApO2Zvcih2YXIgaD1uZXcgbihsLG5ldyBBcnJheShpKzEpLCExKSxmPWguYWRqYWNlbnQsZD1uZXcgQXJyYXkoaSsyKSx1PTA7aT49dTsrK3Upe2Zvcih2YXIgcD1sLnNsaWNlKCksZz0wO2k+PWc7KytnKWc9PT11JiYocFtnXT0tMSk7dmFyIHY9cFswXTtwWzBdPXBbMV0scFsxXT12O3ZhciBtPW5ldyBuKHAsbmV3IEFycmF5KGkrMSksITApO2ZbdV09bSxkW3VdPW19ZFtpKzFdPWg7Zm9yKHZhciB1PTA7aT49dTsrK3UpZm9yKHZhciBwPWZbdV0udmVydGljZXMseT1mW3VdLmFkamFjZW50LGc9MDtpPj1nOysrZyl7dmFyIGI9cFtnXTtpZigwPmIpeVtnXT1oO2Vsc2UgZm9yKHZhciB4PTA7aT49eDsrK3gpZlt4XS52ZXJ0aWNlcy5pbmRleE9mKGIpPDAmJih5W2ddPWZbeF0pfWZvcih2YXIgXz1uZXcgcyhpLG8sZCksdz0hIWUsdT1pKzE7cj51OysrdSlfLmluc2VydCh0W3VdLHcpO3JldHVybiBfLmJvdW5kYXJ5KCl9ZS5leHBvcnRzPWw7dmFyIGM9dCgicm9idXN0LW9yaWVudGF0aW9uIiksdT10KCJzaW1wbGljaWFsLWNvbXBsZXgiKS5jb21wYXJlQ2VsbHM7bi5wcm90b3R5cGUuZmxpcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMudmVydGljZXNbMF07dGhpcy52ZXJ0aWNlc1swXT10aGlzLnZlcnRpY2VzWzFdLHRoaXMudmVydGljZXNbMV09dDt2YXIgZT10aGlzLmFkamFjZW50WzBdO3RoaXMuYWRqYWNlbnRbMF09dGhpcy5hZGphY2VudFsxXSx0aGlzLmFkamFjZW50WzFdPWV9O3ZhciBoPVtdLGY9cy5wcm90b3R5cGU7Zi5oYW5kbGVCb3VuZGFyeURlZ2VuZXJhY3k9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmRpbWVuc2lvbixuPXRoaXMudmVydGljZXMubGVuZ3RoLTEsaT10aGlzLnR1cGxlLG89dGhpcy52ZXJ0aWNlcyxhPVt0XTtmb3IodC5sYXN0VmlzaXRlZD0tbjthLmxlbmd0aD4wOyl7dD1hLnBvcCgpO2Zvcih2YXIgcz0odC52ZXJ0aWNlcyx0LmFkamFjZW50KSxsPTA7cj49bDsrK2wpe3ZhciBjPXNbbF07aWYoYy5ib3VuZGFyeSYmIShjLmxhc3RWaXNpdGVkPD0tbikpe2Zvcih2YXIgdT1jLnZlcnRpY2VzLGg9MDtyPj1oOysraCl7dmFyIGY9dVtoXTswPmY/aVtoXT1lOmlbaF09b1tmXX12YXIgZD10aGlzLm9yaWVudCgpO2lmKGQ+MClyZXR1cm4gYztjLmxhc3RWaXNpdGVkPS1uLDA9PT1kJiZhLnB1c2goYyl9fX1yZXR1cm4gbnVsbH0sZi53YWxrPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy52ZXJ0aWNlcy5sZW5ndGgtMSxuPXRoaXMuZGltZW5zaW9uLGk9dGhpcy52ZXJ0aWNlcyxvPXRoaXMudHVwbGUsYT1lP3RoaXMuaW50ZXJpb3IubGVuZ3RoKk1hdGgucmFuZG9tKCl8MDp0aGlzLmludGVyaW9yLmxlbmd0aC0xLHM9dGhpcy5pbnRlcmlvclthXTt0OmZvcig7IXMuYm91bmRhcnk7KXtmb3IodmFyIGw9cy52ZXJ0aWNlcyxjPXMuYWRqYWNlbnQsdT0wO24+PXU7Kyt1KW9bdV09aVtsW3VdXTtzLmxhc3RWaXNpdGVkPXI7Zm9yKHZhciB1PTA7bj49dTsrK3Upe3ZhciBoPWNbdV07aWYoIShoLmxhc3RWaXNpdGVkPj1yKSl7dmFyIGY9b1t1XTtvW3VdPXQ7dmFyIGQ9dGhpcy5vcmllbnQoKTtpZihvW3VdPWYsMD5kKXtzPWg7Y29udGludWUgdH1oLmJvdW5kYXJ5P2gubGFzdFZpc2l0ZWQ9LXI6aC5sYXN0VmlzaXRlZD1yfX1yZXR1cm59cmV0dXJuIHN9LGYuYWRkUGVha3M9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnZlcnRpY2VzLmxlbmd0aC0xLGE9dGhpcy5kaW1lbnNpb24scz10aGlzLnZlcnRpY2VzLGw9dGhpcy50dXBsZSxjPXRoaXMuaW50ZXJpb3IsdT10aGlzLnNpbXBsaWNlcyxoPVtlXTtlLmxhc3RWaXNpdGVkPXIsZS52ZXJ0aWNlc1tlLnZlcnRpY2VzLmluZGV4T2YoLTEpXT1yLGUuYm91bmRhcnk9ITEsYy5wdXNoKGUpO2Zvcih2YXIgZj1bXTtoLmxlbmd0aD4wOyl7dmFyIGU9aC5wb3AoKSxkPWUudmVydGljZXMscD1lLmFkamFjZW50LGc9ZC5pbmRleE9mKHIpO2lmKCEoMD5nKSlmb3IodmFyIHY9MDthPj12OysrdilpZih2IT09Zyl7dmFyIG09cFt2XTtpZihtLmJvdW5kYXJ5JiYhKG0ubGFzdFZpc2l0ZWQ+PXIpKXt2YXIgeT1tLnZlcnRpY2VzO2lmKG0ubGFzdFZpc2l0ZWQhPT0tcil7Zm9yKHZhciBiPTAseD0wO2E+PXg7Kyt4KXlbeF08MD8oYj14LGxbeF09dCk6bFt4XT1zW3lbeF1dO3ZhciBfPXRoaXMub3JpZW50KCk7aWYoXz4wKXt5W2JdPXIsbS5ib3VuZGFyeT0hMSxjLnB1c2gobSksaC5wdXNoKG0pLG0ubGFzdFZpc2l0ZWQ9cjtjb250aW51ZX1tLmxhc3RWaXNpdGVkPS1yfXZhciB3PW0uYWRqYWNlbnQsQT1kLnNsaWNlKCksaz1wLnNsaWNlKCksTT1uZXcgbihBLGssITApO3UucHVzaChNKTt2YXIgVD13LmluZGV4T2YoZSk7aWYoISgwPlQpKXt3W1RdPU0sa1tnXT1tLEFbdl09LTEsa1t2XT1lLHBbdl09TSxNLmZsaXAoKTtmb3IodmFyIHg9MDthPj14OysreCl7dmFyIEU9QVt4XTtpZighKDA+RXx8RT09PXIpKXtmb3IodmFyIEw9bmV3IEFycmF5KGEtMSksUz0wLEM9MDthPj1DOysrQyl7dmFyIFA9QVtDXTswPlB8fEM9PT14fHwoTFtTKytdPVApfWYucHVzaChuZXcgaShMLE0seCkpfX19fX19Zi5zb3J0KG8pO2Zvcih2YXIgdj0wO3YrMTxmLmxlbmd0aDt2Kz0yKXt2YXIgej1mW3ZdLFI9Zlt2KzFdLE89ei5pbmRleCxJPVIuaW5kZXg7MD5PfHwwPkl8fCh6LmNlbGwuYWRqYWNlbnRbei5pbmRleF09Ui5jZWxsLFIuY2VsbC5hZGphY2VudFtSLmluZGV4XT16LmNlbGwpfX0sZi5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnZlcnRpY2VzO3IucHVzaCh0KTt2YXIgbj10aGlzLndhbGsodCxlKTtpZihuKXtmb3IodmFyIGk9dGhpcy5kaW1lbnNpb24sbz10aGlzLnR1cGxlLGE9MDtpPj1hOysrYSl7dmFyIHM9bi52ZXJ0aWNlc1thXTswPnM/b1thXT10Om9bYV09cltzXX12YXIgbD10aGlzLm9yaWVudChvKTswPmx8fCgwIT09bHx8KG49dGhpcy5oYW5kbGVCb3VuZGFyeURlZ2VuZXJhY3kobix0KSkpJiZ0aGlzLmFkZFBlYWtzKHQsbil9fSxmLmJvdW5kYXJ5PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuZGltZW5zaW9uLGU9W10scj10aGlzLnNpbXBsaWNlcyxuPXIubGVuZ3RoLGk9MDtuPmk7KytpKXt2YXIgbz1yW2ldO2lmKG8uYm91bmRhcnkpe2Zvcih2YXIgYT1uZXcgQXJyYXkodCkscz1vLnZlcnRpY2VzLGw9MCxjPTAsdT0wO3Q+PXU7Kyt1KXNbdV0+PTA/YVtsKytdPXNbdV06Yz0xJnU7aWYoYz09PSgxJnQpKXt2YXIgaD1hWzBdO2FbMF09YVsxXSxhWzFdPWh9ZS5wdXNoKGEpfX1yZXR1cm4gZX19LHsicm9idXN0LW9yaWVudGF0aW9uIjoyMTYsInNpbXBsaWNpYWwtY29tcGxleCI6MTk2fV0sMTk0OltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzQ5XVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6NDl9XSwxOTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7InVzZSByZXN0cmljdCI7ZnVuY3Rpb24gbih0KXt0aGlzLnJvb3RzPW5ldyBBcnJheSh0KSx0aGlzLnJhbmtzPW5ldyBBcnJheSh0KTtmb3IodmFyIGU9MDt0PmU7KytlKXRoaXMucm9vdHNbZV09ZSx0aGlzLnJhbmtzW2VdPTB9ZS5leHBvcnRzPW47dmFyIGk9bi5wcm90b3R5cGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3RzLmxlbmd0aH19KSxpLm1ha2VTZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJvb3RzLmxlbmd0aDtyZXR1cm4gdGhpcy5yb290cy5wdXNoKHQpLHRoaXMucmFua3MucHVzaCgwKSx0fSxpLmZpbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQscj10aGlzLnJvb3RzO3JbdF0hPT10Oyl0PXJbdF07Zm9yKDtyW2VdIT09dDspe3ZhciBuPXJbZV07cltlXT10LGU9bn1yZXR1cm4gdH0saS5saW5rPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5maW5kKHQpLG49dGhpcy5maW5kKGUpO2lmKHIhPT1uKXt2YXIgaT10aGlzLnJhbmtzLG89dGhpcy5yb290cyxhPWlbcl0scz1pW25dO3M+YT9vW3JdPW46YT5zP29bbl09cjoob1tuXT1yLCsraVtyXSl9fX0se31dLDE5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjsidXNlIHJlc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wLHI9TWF0aC5tYXgsbj0wLGk9dC5sZW5ndGg7aT5uOysrbillPXIoZSx0W25dLmxlbmd0aCk7cmV0dXJuIGUtMX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT0tMSxyPU1hdGgubWF4LG49MCxpPXQubGVuZ3RoO2k+bjsrK24pZm9yKHZhciBvPXRbbl0sYT0wLHM9by5sZW5ndGg7cz5hOysrYSllPXIoZSxvW2FdKTtyZXR1cm4gZSsxfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wLG49dC5sZW5ndGg7bj5yOysrcillW3JdPXRbcl0uc2xpY2UoMCk7cmV0dXJuIGV9ZnVuY3Rpb24gYSh0LGUpe3ZhciByPXQubGVuZ3RoLG49dC5sZW5ndGgtZS5sZW5ndGgsaT1NYXRoLm1pbjtpZihuKXJldHVybiBuO3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiB0WzBdLWVbMF07Y2FzZSAyOnZhciBvPXRbMF0rdFsxXS1lWzBdLWVbMV07cmV0dXJuIG8/bzppKHRbMF0sdFsxXSktaShlWzBdLGVbMV0pO2Nhc2UgMzp2YXIgYT10WzBdK3RbMV0scz1lWzBdK2VbMV07aWYobz1hK3RbMl0tKHMrZVsyXSkpcmV0dXJuIG87dmFyIGw9aSh0WzBdLHRbMV0pLGM9aShlWzBdLGVbMV0pLG89aShsLHRbMl0pLWkoYyxlWzJdKTtyZXR1cm4gbz9vOmkobCt0WzJdLGEpLWkoYytlWzJdLHMpO2RlZmF1bHQ6dmFyIHU9dC5zbGljZSgwKTt1LnNvcnQoKTt2YXIgaD1lLnNsaWNlKDApO2guc29ydCgpO2Zvcih2YXIgZj0wO3I+ZjsrK2YpaWYobj11W2ZdLWhbZl0pcmV0dXJuIG47cmV0dXJuIDB9fWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gYSh0WzBdLGVbMF0pfWZ1bmN0aW9uIGwodCxlKXtpZihlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO3I+aTsrK2kpbltpXT1bdFtpXSxlW2ldXTtuLnNvcnQocyk7Zm9yKHZhciBpPTA7cj5pOysraSl0W2ldPW5baV1bMF0sZVtpXT1uW2ldWzFdO3JldHVybiB0fXJldHVybiB0LnNvcnQoYSksdH1mdW5jdGlvbiBjKHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm5bXTtmb3IodmFyIGU9MSxyPXQubGVuZ3RoLG49MTtyPm47KytuKXt2YXIgaT10W25dO2lmKGEoaSx0W24tMV0pKXtpZihuPT09ZSl7ZSsrO2NvbnRpbnVlfXRbZSsrXT1pfX1yZXR1cm4gdC5sZW5ndGg9ZSx0fWZ1bmN0aW9uIHUodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLTEsaT0tMTtuPj1yOyl7dmFyIG89cituPj4xLHM9YSh0W29dLGUpOzA+PXM/KDA9PT1zJiYoaT1vKSxyPW8rMSk6cz4wJiYobj1vLTEpfXJldHVybiBpfWZ1bmN0aW9uIGgodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoKSxuPTAsaT1yLmxlbmd0aDtpPm47KytuKXJbbl09W107Zm9yKHZhciBvPVtdLG49MCxzPWUubGVuZ3RoO3M+bjsrK24pZm9yKHZhciBsPWVbbl0sYz1sLmxlbmd0aCxoPTEsZj0xPDxjO2Y+aDsrK2gpe28ubGVuZ3RoPWIucG9wQ291bnQoaCk7Zm9yKHZhciBkPTAscD0wO2M+cDsrK3ApaCYxPDxwJiYob1tkKytdPWxbcF0pO3ZhciBnPXUodCxvKTtpZighKDA+ZykpZm9yKDs7KWlmKHJbZysrXS5wdXNoKG4pLGc+PXQubGVuZ3RofHwwIT09YSh0W2ddLG8pKWJyZWFrfXJldHVybiByfWZ1bmN0aW9uIGYodCxlKXtpZighZSlyZXR1cm4gaChjKHAodCwwKSksdCwwKTtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtlPm47KytuKXJbbl09W107Zm9yKHZhciBuPTAsaT10Lmxlbmd0aDtpPm47KytuKWZvcih2YXIgbz10W25dLGE9MCxzPW8ubGVuZ3RoO3M+YTsrK2EpcltvW2FdXS5wdXNoKG4pO3JldHVybiByfWZ1bmN0aW9uIGQodCl7Zm9yKHZhciBlPVtdLHI9MCxuPXQubGVuZ3RoO24+cjsrK3IpZm9yKHZhciBpPXRbcl0sbz0wfGkubGVuZ3RoLGE9MSxzPTE8PG87cz5hOysrYSl7Zm9yKHZhciBjPVtdLHU9MDtvPnU7Kyt1KWE+Pj51JjEmJmMucHVzaChpW3VdKTtlLnB1c2goYyl9cmV0dXJuIGwoZSl9ZnVuY3Rpb24gcCh0LGUpe2lmKDA+ZSlyZXR1cm5bXTtmb3IodmFyIHI9W10sbj0oMTw8ZSsxKS0xLGk9MDtpPHQubGVuZ3RoOysraSlmb3IodmFyIG89dFtpXSxhPW47YTwxPDxvLmxlbmd0aDthPWIubmV4dENvbWJpbmF0aW9uKGEpKXtmb3IodmFyIHM9bmV3IEFycmF5KGUrMSksYz0wLHU9MDt1PG8ubGVuZ3RoOysrdSlhJjE8PHUmJihzW2MrK109b1t1XSk7ci5wdXNoKHMpfXJldHVybiBsKHIpfWZ1bmN0aW9uIGcodCl7Zm9yKHZhciBlPVtdLHI9MCxuPXQubGVuZ3RoO24+cjsrK3IpZm9yKHZhciBpPXRbcl0sbz0wLGE9aS5sZW5ndGg7YT5vOysrbyl7Zm9yKHZhciBzPW5ldyBBcnJheShpLmxlbmd0aC0xKSxjPTAsdT0wO2E+YzsrK2MpYyE9PW8mJihzW3UrK109aVtjXSk7ZS5wdXNoKHMpfXJldHVybiBsKGUpfWZ1bmN0aW9uIHYodCxlKXtmb3IodmFyIHI9bmV3IHgoZSksbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25dLG89MDtvPGkubGVuZ3RoOysrbylmb3IodmFyIGE9bysxO2E8aS5sZW5ndGg7KythKXIubGluayhpW29dLGlbYV0pO2Zvcih2YXIgcz1bXSxsPXIucmFua3Msbj0wO248bC5sZW5ndGg7KytuKWxbbl09LTE7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24pe3ZhciBjPXIuZmluZCh0W25dWzBdKTtsW2NdPDA/KGxbY109cy5sZW5ndGgscy5wdXNoKFt0W25dLnNsaWNlKDApXSkpOnNbbFtjXV0ucHVzaCh0W25dLnNsaWNlKDApKX1yZXR1cm4gc31mdW5jdGlvbiBtKHQpe2Zvcih2YXIgZT1jKGwocCh0LDApKSkscj1uZXcgeChlLmxlbmd0aCksbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25dLG89MDtvPGkubGVuZ3RoOysrbylmb3IodmFyIGE9dShlLFtpW29dXSkscz1vKzE7czxpLmxlbmd0aDsrK3Mpci5saW5rKGEsdShlLFtpW3NdXSkpO2Zvcih2YXIgaD1bXSxmPXIucmFua3Msbj0wO248Zi5sZW5ndGg7KytuKWZbbl09LTE7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24pe3ZhciBkPXIuZmluZCh1KGUsW3Rbbl1bMF1dKSk7ZltkXTwwPyhmW2RdPWgubGVuZ3RoLGgucHVzaChbdFtuXS5zbGljZSgwKV0pKTpoW2ZbZF1dLnB1c2godFtuXS5zbGljZSgwKSl9cmV0dXJuIGh9ZnVuY3Rpb24geSh0LGUpe3JldHVybiBlP3YodCxlKTptKHQpfXZhciBiPXQoImJpdC10d2lkZGxlIikseD10KCJ1bmlvbi1maW5kIik7ci5kaW1lbnNpb249bixyLmNvdW50VmVydGljZXM9aSxyLmNsb25lQ2VsbHM9byxyLmNvbXBhcmVDZWxscz1hLHIubm9ybWFsaXplPWwsci51bmlxdWU9YyxyLmZpbmRDZWxsPXUsci5pbmNpZGVuY2U9aCxyLmR1YWw9ZixyLmV4cGxvZGU9ZCxyLnNrZWxldG9uPXAsci5ib3VuZGFyeT1nLHIuY29ubmVjdGVkQ29tcG9uZW50cz15fSx7ImJpdC10d2lkZGxlIjoxOTQsInVuaW9uLWZpbmQiOjE5NX1dLDE5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3Q+cjsrK3IpZVtyXT1yO3JldHVybiBlfWUuZXhwb3J0cz1ufSx7fV0sMTk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmdW5jdGlvbiByKHQpe3ZhciBlPSExO3JldHVybiJhbHRLZXkiaW4gdCYmKGU9ZXx8dC5hbHRLZXkhPT1nLmFsdCxnLmFsdD0hIXQuYWx0S2V5KSwic2hpZnRLZXkiaW4gdCYmKGU9ZXx8dC5zaGlmdEtleSE9PWcuc2hpZnQsZy5zaGlmdD0hIXQuc2hpZnRLZXkpLCJjdHJsS2V5ImluIHQmJihlPWV8fHQuY3RybEtleSE9PWcuY29udHJvbCxnLmNvbnRyb2w9ISF0LmN0cmxLZXkpLCJtZXRhS2V5ImluIHQmJihlPWV8fHQubWV0YUtleSE9PWcubWV0YSxnLm1ldGE9ISF0Lm1ldGFLZXkpLGV9ZnVuY3Rpb24gbih0LG4pe3ZhciBvPWkueChuKSxhPWkueShuKTsiYnV0dG9ucyJpbiBuJiYodD0wfG4uYnV0dG9ucyksKHQhPT1mfHxvIT09ZHx8YSE9PXB8fHIobikpJiYoZj0wfHQsZD1vfHwwLHA9YXx8MCxlKGYsZCxwLGcpKX1mdW5jdGlvbiBvKHQpe24oMCx0KX1mdW5jdGlvbiBhKCl7KGZ8fGR8fHB8fGcuc2hpZnR8fGcuYWx0fHxnLm1ldGF8fGcuY29udHJvbCkmJihkPXA9MCxmPTAsZy5zaGlmdD1nLmFsdD1nLmNvbnRyb2w9Zy5tZXRhPSExLGUoMCwwLDAsZykpfWZ1bmN0aW9uIHModCl7cih0KSYmZShmLGQscCxnKX1mdW5jdGlvbiBsKHQpezA9PT1pLmJ1dHRvbnModCk/bigwLHQpOm4oZix0KX1mdW5jdGlvbiBjKHQpe24oZnxpLmJ1dHRvbnModCksdCl9ZnVuY3Rpb24gdSh0KXsKbihmJn5pLmJ1dHRvbnModCksdCl9ZnVuY3Rpb24gaCgpe3Z8fCh2PSEwLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixsKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYyksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix1KSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLG8pLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsbyksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsbyksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLG8pLHQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsYSksdC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIscyksdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixzKSx0LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixzKSx0IT09d2luZG93JiYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIscyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHMpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIscykpKX1lfHwoZT10LHQ9d2luZG93KTt2YXIgZj0wLGQ9MCxwPTAsZz17c2hpZnQ6ITEsYWx0OiExLGNvbnRyb2w6ITEsbWV0YTohMX0sdj0hMTtoKCk7dmFyIG09e2VsZW1lbnQ6dH07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG0se2VuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB2fSxzZXQ6ZnVuY3Rpb24odCl7dCYmaCgpfSxlbnVtZXJhYmxlOiEwfSxidXR0b25zOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sZW51bWVyYWJsZTohMH0seDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGR9LGVudW1lcmFibGU6ITB9LHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBwfSxlbnVtZXJhYmxlOiEwfSxtb2RzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sZW51bWVyYWJsZTohMH19KSxtfWUuZXhwb3J0cz1uO3ZhciBpPXQoIm1vdXNlLWV2ZW50Iil9LHsibW91c2UtZXZlbnQiOjE5OX1dLDE5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoImJ1dHRvbnMiaW4gdClyZXR1cm4gdC5idXR0b25zO2lmKCJ3aGljaCJpbiB0KXt2YXIgZT10LndoaWNoO2lmKDI9PT1lKXJldHVybiA0O2lmKDM9PT1lKXJldHVybiAyO2lmKGU+MClyZXR1cm4gMTw8ZS0xfWVsc2UgaWYoImJ1dHRvbiJpbiB0KXt2YXIgZT10LmJ1dHRvbjtpZigxPT09ZSlyZXR1cm4gNDtpZigyPT09ZSlyZXR1cm4gMjtpZihlPj0wKXJldHVybiAxPDxlfX1yZXR1cm4gMH1mdW5jdGlvbiBpKHQpe3JldHVybiB0LnRhcmdldHx8dC5zcmNFbGVtZW50fHx3aW5kb3d9ZnVuY3Rpb24gbyh0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJvZmZzZXRYImluIHQpcmV0dXJuIHQub2Zmc2V0WDt2YXIgZT1pKHQpLHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gdC5jbGllbnRYLXIubGVmdH1yZXR1cm4gMH1mdW5jdGlvbiBhKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoIm9mZnNldFkiaW4gdClyZXR1cm4gdC5vZmZzZXRZO3ZhciBlPWkodCkscj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiB0LmNsaWVudFktci50b3B9cmV0dXJuIDB9ci5idXR0b25zPW4sci5lbGVtZW50PWksci54PW8sci55PWF9LHt9XSwyMDA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT1bMCwiIl0pLHQ9U3RyaW5nKHQpO3ZhciByPXBhcnNlRmxvYXQodCwxMCk7cmV0dXJuIGVbMF09cixlWzFdPXQubWF0Y2goL1tcZC5cLVwrXSpccyooLiopLylbMV18fCIiLGV9fSx7fV0sMjAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1hKGdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShlKSk7cmV0dXJuIHJbMF0qbyhyWzFdLHQpfWZ1bmN0aW9uIGkodCxlKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyLnN0eWxlWyJmb250LXNpemUiXT0iMTI4Iit0LGUuYXBwZW5kQ2hpbGQocik7dmFyIGk9bihyLCJmb250LXNpemUiKS8xMjg7cmV0dXJuIGUucmVtb3ZlQ2hpbGQociksaX1mdW5jdGlvbiBvKHQsZSl7c3dpdGNoKGU9ZXx8ZG9jdW1lbnQuYm9keSx0PSh0fHwicHgiKS50cmltKCkudG9Mb3dlckNhc2UoKSxlIT09d2luZG93JiZlIT09ZG9jdW1lbnR8fChlPWRvY3VtZW50LmJvZHkpLHQpe2Nhc2UiJSI6cmV0dXJuIGUuY2xpZW50SGVpZ2h0LzEwMDtjYXNlImNoIjpjYXNlImV4IjpyZXR1cm4gaSh0LGUpO2Nhc2UiZW0iOnJldHVybiBuKGUsImZvbnQtc2l6ZSIpO2Nhc2UicmVtIjpyZXR1cm4gbihkb2N1bWVudC5ib2R5LCJmb250LXNpemUiKTtjYXNlInZ3IjpyZXR1cm4gd2luZG93LmlubmVyV2lkdGgvMTAwO2Nhc2UidmgiOnJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQvMTAwO2Nhc2Uidm1pbiI6cmV0dXJuIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoLHdpbmRvdy5pbm5lckhlaWdodCkvMTAwO2Nhc2Uidm1heCI6cmV0dXJuIE1hdGgubWF4KHdpbmRvdy5pbm5lcldpZHRoLHdpbmRvdy5pbm5lckhlaWdodCkvMTAwO2Nhc2UiaW4iOnJldHVybiBzO2Nhc2UiY20iOnJldHVybiBzLzIuNTQ7Y2FzZSJtbSI6cmV0dXJuIHMvMjUuNDtjYXNlInB0IjpyZXR1cm4gcy83MjtjYXNlInBjIjpyZXR1cm4gcy82fXJldHVybiAxfXZhciBhPXQoInBhcnNlLXVuaXQiKTtlLmV4cG9ydHM9bzt2YXIgcz05Nn0seyJwYXJzZS11bml0IjoyMDB9XSwyMDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJihyPSEhZSxlPXQsdD13aW5kb3cpO3ZhciBuPWkoImV4Iix0KSxvPWZ1bmN0aW9uKHQpe3ImJnQucHJldmVudERlZmF1bHQoKTt2YXIgaT10LmRlbHRhWHx8MCxvPXQuZGVsdGFZfHwwLGE9dC5kZWx0YVp8fDAscz10LmRlbHRhTW9kZSxsPTE7c3dpdGNoKHMpe2Nhc2UgMTpsPW47YnJlYWs7Y2FzZSAyOmw9d2luZG93LmlubmVySGVpZ2h0fXJldHVybiBpKj1sLG8qPWwsYSo9bCxpfHxvfHxhP2UoaSxvLGEpOnZvaWQgMH07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLG8pLG99dmFyIGk9dCgidG8tcHgiKTtlLmV4cG9ydHM9bn0seyJ0by1weCI6MjAxfV0sMjAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImN3aXNlL2xpYi93cmFwcGVyIikoe2FyZ3M6WyJpbmRleCIsImFycmF5Iiwic2NhbGFyIl0scHJlOntib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntfaW5saW5lXzFfYXJnMV89X2lubGluZV8xX2FyZzJfLmFwcGx5KHZvaWQgMCxfaW5saW5lXzFfYXJnMF8pfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzFfIixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzFfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0scG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxkZWJ1ZzohMSxmdW5jTmFtZToiY3dpc2UiLGJsb2NrU2l6ZTo2NH0pO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSksdH19LHsiY3dpc2UvbGliL3dyYXBwZXIiOjY5fV0sMjA0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dFswXT0xL2VbMF07YnJlYWs7Y2FzZSA0OmkodCxlKTticmVhaztjYXNlIDk6byh0LGUpO2JyZWFrO2Nhc2UgMTY6YSh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJjdXJyZW50bHkgc3VwcG9ydHMgbWF0cmljZXMgdXAgdG8gNHg0Iil9cmV0dXJuIHR9ZS5leHBvcnRzPW47dmFyIGk9dCgiZ2wtbWF0Mi9pbnZlcnQiKSxvPXQoImdsLW1hdDMvaW52ZXJ0IiksYT10KCJnbC1tYXQ0L2ludmVydCIpfSx7ImdsLW1hdDIvaW52ZXJ0IjoyMDUsImdsLW1hdDMvaW52ZXJ0Ijo4NywiZ2wtbWF0NC9pbnZlcnQiOjk0fV0sMjA1OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxvPWVbM10sYT1yKm8taSpuO3JldHVybiBhPyhhPTEvYSx0WzBdPW8qYSx0WzFdPS1uKmEsdFsyXT0taSphLHRbM109ciphLHQpOm51bGx9ZS5leHBvcnRzPW59LHt9XSwyMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPU1hdGguZmxvb3IoZSksbj1lLXIsaT1yPj0wJiZyPHQuc2hhcGVbMF0sbz1yKzE+PTAmJnIrMTx0LnNoYXBlWzBdLGE9aT8rdC5nZXQocik6MCxzPW8/K3QuZ2V0KHIrMSk6MDtyZXR1cm4oMS1uKSphK24qc31mdW5jdGlvbiBpKHQsZSxyKXt2YXIgbj1NYXRoLmZsb29yKGUpLGk9ZS1uLG89bj49MCYmbjx0LnNoYXBlWzBdLGE9bisxPj0wJiZuKzE8dC5zaGFwZVswXSxzPU1hdGguZmxvb3IociksbD1yLXMsYz1zPj0wJiZzPHQuc2hhcGVbMV0sdT1zKzE+PTAmJnMrMTx0LnNoYXBlWzFdLGg9byYmYz90LmdldChuLHMpOjAsZj1vJiZ1P3QuZ2V0KG4scysxKTowLGQ9YSYmYz90LmdldChuKzEscyk6MCxwPWEmJnU/dC5nZXQobisxLHMrMSk6MDtyZXR1cm4oMS1sKSooKDEtaSkqaCtpKmQpK2wqKCgxLWkpKmYraSpwKX1mdW5jdGlvbiBvKHQsZSxyLG4pe3ZhciBpPU1hdGguZmxvb3IoZSksbz1lLWksYT1pPj0wJiZpPHQuc2hhcGVbMF0scz1pKzE+PTAmJmkrMTx0LnNoYXBlWzBdLGw9TWF0aC5mbG9vcihyKSxjPXItbCx1PWw+PTAmJmw8dC5zaGFwZVsxXSxoPWwrMT49MCYmbCsxPHQuc2hhcGVbMV0sZj1NYXRoLmZsb29yKG4pLGQ9bi1mLHA9Zj49MCYmZjx0LnNoYXBlWzJdLGc9ZisxPj0wJiZmKzE8dC5zaGFwZVsyXSx2PWEmJnUmJnA/dC5nZXQoaSxsLGYpOjAsbT1hJiZoJiZwP3QuZ2V0KGksbCsxLGYpOjAseT1zJiZ1JiZwP3QuZ2V0KGkrMSxsLGYpOjAsYj1zJiZoJiZwP3QuZ2V0KGkrMSxsKzEsZik6MCx4PWEmJnUmJmc/dC5nZXQoaSxsLGYrMSk6MCxfPWEmJmgmJmc/dC5nZXQoaSxsKzEsZisxKTowLHc9cyYmdSYmZz90LmdldChpKzEsbCxmKzEpOjAsQT1zJiZoJiZnP3QuZ2V0KGkrMSxsKzEsZisxKTowO3JldHVybigxLWQpKigoMS1jKSooKDEtbykqditvKnkpK2MqKCgxLW8pKm0rbypiKSkrZCooKDEtYykqKCgxLW8pKngrbyp3KStjKigoMS1vKSpfK28qQSkpfWZ1bmN0aW9uIGEodCl7dmFyIGUscixuPTB8dC5zaGFwZS5sZW5ndGgsaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobiksYT1uZXcgQXJyYXkobikscz1uZXcgQXJyYXkobik7Zm9yKGU9MDtuPmU7KytlKXI9K2FyZ3VtZW50c1tlKzFdLGlbZV09TWF0aC5mbG9vcihyKSxvW2VdPXItaVtlXSxhW2VdPTA8PWlbZV0mJmlbZV08dC5zaGFwZVtlXSxzW2VdPTA8PWlbZV0rMSYmaVtlXSsxPHQuc2hhcGVbZV07dmFyIGwsYyx1LGg9MDt0OmZvcihlPTA7MTw8bj5lOysrZSl7Zm9yKGM9MSx1PXQub2Zmc2V0LGw9MDtuPmw7KytsKWlmKGUmMTw8bCl7aWYoIXNbbF0pY29udGludWUgdDtjKj1vW2xdLHUrPXQuc3RyaWRlW2xdKihpW2xdKzEpfWVsc2V7aWYoIWFbbF0pY29udGludWUgdDtjKj0xLW9bbF0sdSs9dC5zdHJpZGVbbF0qaVtsXX1oKz1jKnQuZGF0YVt1XX1yZXR1cm4gaH1mdW5jdGlvbiBzKHQsZSxyLHMpe3N3aXRjaCh0LnNoYXBlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiAwO2Nhc2UgMTpyZXR1cm4gbih0LGUpO2Nhc2UgMjpyZXR1cm4gaSh0LGUscik7Y2FzZSAzOnJldHVybiBvKHQsZSxyLHMpO2RlZmF1bHQ6cmV0dXJuIGEuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWUuZXhwb3J0cz1zLGUuZXhwb3J0cy5kMT1uLGUuZXhwb3J0cy5kMj1pLGUuZXhwb3J0cy5kMz1vfSx7fV0sMjA3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIm5kYXJyYXktbGluZWFyLWludGVycG9sYXRlIiksaT10KCJjd2lzZS9saWIvd3JhcHBlciIpKHthcmdzOlsiaW5kZXgiLCJhcnJheSIsInNjYWxhciIsInNjYWxhciIsInNjYWxhciJdLHByZTp7Ym9keToie3RoaXNfd2FycGVkPW5ldyBBcnJheShfaW5saW5lXzZfYXJnNF8pfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfNl9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV82X2FyZzFfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9LHtuYW1lOiJfaW5saW5lXzZfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25hbWU6Il9pbmxpbmVfNl9hcmczXyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV82X2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7X2lubGluZV83X2FyZzJfKHRoaXNfd2FycGVkLF9pbmxpbmVfN19hcmcwXyksX2lubGluZV83X2FyZzFfPV9pbmxpbmVfN19hcmczXy5hcHBseSh2b2lkIDAsdGhpc193YXJwZWQpfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfN19hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV83X2FyZzFfIixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzdfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfN19hcmczXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV83X2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGRlYnVnOiExLGZ1bmNOYW1lOiJ3YXJwTkQiLGJsb2NrU2l6ZTo2NH0pLG89dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImluZGV4IiwiYXJyYXkiLCJzY2FsYXIiLCJzY2FsYXIiLCJzY2FsYXIiXSxwcmU6e2JvZHk6Int0aGlzX3dhcnBlZD1bMF19IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntfaW5saW5lXzEwX2FyZzJfKHRoaXNfd2FycGVkLF9pbmxpbmVfMTBfYXJnMF8pLF9pbmxpbmVfMTBfYXJnMV89X2lubGluZV8xMF9hcmczXyhfaW5saW5lXzEwX2FyZzRfLHRoaXNfd2FycGVkWzBdKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzEwX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEwX2FyZzFfIixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEwX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEwX2FyZzNfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEwX2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGRlYnVnOiExLGZ1bmNOYW1lOiJ3YXJwMUQiLGJsb2NrU2l6ZTo2NH0pLGE9dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImluZGV4IiwiYXJyYXkiLCJzY2FsYXIiLCJzY2FsYXIiLCJzY2FsYXIiXSxwcmU6e2JvZHk6Int0aGlzX3dhcnBlZD1bMCwwXX0iLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX3dhcnBlZCJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie19pbmxpbmVfMTNfYXJnMl8odGhpc193YXJwZWQsX2lubGluZV8xM19hcmcwXyksX2lubGluZV8xM19hcmcxXz1faW5saW5lXzEzX2FyZzNfKF9pbmxpbmVfMTNfYXJnNF8sdGhpc193YXJwZWRbMF0sdGhpc193YXJwZWRbMV0pfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMTNfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTNfYXJnMV8iLGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTNfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTNfYXJnM18iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTNfYXJnNF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLHRoaXNWYXJzOlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6W119LHBvc3Q6e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZGVidWc6ITEsZnVuY05hbWU6IndhcnAyRCIsYmxvY2tTaXplOjY0fSkscz10KCJjd2lzZS9saWIvd3JhcHBlciIpKHthcmdzOlsiaW5kZXgiLCJhcnJheSIsInNjYWxhciIsInNjYWxhciIsInNjYWxhciJdLHByZTp7Ym9keToie3RoaXNfd2FycGVkPVswLDAsMF19IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntfaW5saW5lXzE2X2FyZzJfKHRoaXNfd2FycGVkLF9pbmxpbmVfMTZfYXJnMF8pLF9pbmxpbmVfMTZfYXJnMV89X2lubGluZV8xNl9hcmczXyhfaW5saW5lXzE2X2FyZzRfLHRoaXNfd2FycGVkWzBdLHRoaXNfd2FycGVkWzFdLHRoaXNfd2FycGVkWzJdKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzE2X2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzE2X2FyZzFfIixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzE2X2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzE2X2FyZzNfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzE2X2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGRlYnVnOiExLGZ1bmNOYW1lOiJ3YXJwM0QiLGJsb2NrU2l6ZTo2NH0pO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7c3dpdGNoKGUuc2hhcGUubGVuZ3RoKXtjYXNlIDE6byh0LHIsbi5kMSxlKTticmVhaztjYXNlIDI6YSh0LHIsbi5kMixlKTticmVhaztjYXNlIDM6cyh0LHIsbi5kMyxlKTticmVhaztkZWZhdWx0OmkodCxyLG4uYmluZCh2b2lkIDAsZSksZS5zaGFwZS5sZW5ndGgpfXJldHVybiB0fX0seyJjd2lzZS9saWIvd3JhcHBlciI6NjksIm5kYXJyYXktbGluZWFyLWludGVycG9sYXRlIjoyMDZ9XSwyMDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZS5kaW1lbnNpb24sYT1vKFtdLHIpO3JldHVybiBpKHQsZSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO24+cjsrK3Ipe3Rbcl09YVsobisxKSpuK3JdO2Zvcih2YXIgaT0wO24+aTsrK2kpdFtyXSs9YVsobisxKSppK3JdKmVbaV19Zm9yKHZhciBvPWFbKG4rMSkqKG4rMSktMV0saT0wO24+aTsrK2kpbys9YVsobisxKSppK25dKmVbaV07Zm9yKHZhciBzPTEvbyxyPTA7bj5yOysrcil0W3JdKj1zO3JldHVybiB0fSksdH12YXIgaT10KCJuZGFycmF5LXdhcnAiKSxvPXQoImdsLW1hdHJpeC1pbnZlcnQiKTtlLmV4cG9ydHM9bn0seyJnbC1tYXRyaXgtaW52ZXJ0IjoyMDQsIm5kYXJyYXktd2FycCI6MjA3fV0sMjA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7aWYoIXQpcmV0dXJuIHM7Zm9yKHZhciBlPTA7ZTx0LmFyZ3MubGVuZ3RoOysrZSl7dmFyIHI9dC5hcmdzW2VdOzA9PT1lP3QuYXJnc1tlXT17bmFtZTpyLGx2YWx1ZTohMCxydmFsdWU6ISF0LnJ2YWx1ZSxjb3VudDp0LmNvdW50fHwxfTp0LmFyZ3NbZV09e25hbWU6cixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9fXJldHVybiB0LnRoaXNWYXJzfHwodC50aGlzVmFycz1bXSksdC5sb2NhbFZhcnN8fCh0LmxvY2FsVmFycz1bXSksdH1mdW5jdGlvbiBpKHQpe3JldHVybiBhKHthcmdzOnQuYXJncyxwcmU6bih0LnByZSksYm9keTpuKHQuYm9keSkscG9zdDpuKHQucHJvYyksZnVuY05hbWU6dC5mdW5jTmFtZX0pfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPVtdLHI9MDtyPHQuYXJncy5sZW5ndGg7KytyKWUucHVzaCgiYSIrcik7dmFyIG49bmV3IEZ1bmN0aW9uKCJQIixbInJldHVybiBmdW5jdGlvbiAiLHQuZnVuY05hbWUsIl9uZGFycmF5b3BzKCIsZS5qb2luKCIsIiksIikge1AoIixlLmpvaW4oIiwiKSwiKTtyZXR1cm4gYTB9Il0uam9pbigiIikpO3JldHVybiBuKGkodCkpfXZhciBhPXQoImN3aXNlLWNvbXBpbGVyIikscz17Ym9keToiIixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sbD17YWRkOiIrIixzdWI6Ii0iLG11bDoiKiIsZGl2OiIvIixtb2Q6IiUiLGJhbmQ6IiYiLGJvcjoifCIsYnhvcjoiXiIsbHNoaWZ0OiI8PCIscnNoaWZ0OiI+PiIscnJzaGlmdDoiPj4+In07IWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIGwpe3ZhciBlPWxbdF07clt0XT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSIsImFycmF5Il0sYm9keTp7YXJnczpbImEiLCJiIiwiYyJdLGJvZHk6ImE9YiIrZSsiYyJ9LGZ1bmNOYW1lOnR9KSxyW3QrImVxIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiXSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhIitlKyI9YiJ9LHJ2YWx1ZTohMCxmdW5jTmFtZTp0KyJlcSJ9KSxyW3QrInMiXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSIsInNjYWxhciJdLGJvZHk6e2FyZ3M6WyJhIiwiYiIsInMiXSxib2R5OiJhPWIiK2UrInMifSxmdW5jTmFtZTp0KyJzIn0pLHJbdCsic2VxIl09byh7YXJnczpbImFycmF5Iiwic2NhbGFyIl0sYm9keTp7YXJnczpbImEiLCJzIl0sYm9keToiYSIrZSsiPXMifSxydmFsdWU6ITAsZnVuY05hbWU6dCsic2VxIn0pfX0oKTt2YXIgYz17bm90OiIhIixibm90OiJ+IixuZWc6Ii0iLHJlY2lwOiIxLjAvIn07IWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIGMpe3ZhciBlPWNbdF07clt0XT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSJdLGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9IitlKyJiIn0sZnVuY05hbWU6dH0pLHJbdCsiZXEiXT1vKHthcmdzOlsiYXJyYXkiXSxib2R5OnthcmdzOlsiYSJdLGJvZHk6ImE9IitlKyJhIn0scnZhbHVlOiEwLGNvdW50OjIsZnVuY05hbWU6dCsiZXEifSl9fSgpO3ZhciB1PXthbmQ6IiYmIixvcjoifHwiLGVxOiI9PT0iLG5lcToiIT09IixsdDoiPCIsZ3Q6Ij4iLGxlcToiPD0iLGdlcToiPj0ifTshZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdSl7dmFyIGU9dVt0XTtyW3RdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5IiwiYXJyYXkiXSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT1iIitlKyJjIn0sZnVuY05hbWU6dH0pLHJbdCsicyJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Iiwic2NhbGFyIl0sYm9keTp7YXJnczpbImEiLCJiIiwicyJdLGJvZHk6ImE9YiIrZSsicyJ9LGZ1bmNOYW1lOnQrInMifSksclt0KyJlcSJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0sYm9keTp7YXJnczpbImEiLCJiIl0sYm9keToiYT1hIitlKyJiIn0scnZhbHVlOiEwLGNvdW50OjIsZnVuY05hbWU6dCsiZXEifSksclt0KyJzZXEiXT1vKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiXSxib2R5OnthcmdzOlsiYSIsInMiXSxib2R5OiJhPWEiK2UrInMifSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTp0KyJzZXEifSl9fSgpO3ZhciBoPVsiYWJzIiwiYWNvcyIsImFzaW4iLCJhdGFuIiwiY2VpbCIsImNvcyIsImV4cCIsImZsb29yIiwibG9nIiwicm91bmQiLCJzaW4iLCJzcXJ0IiwidGFuIl07IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxoLmxlbmd0aDsrK3Qpe3ZhciBlPWhbdF07cltlXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJiIl0sYm9keToiYT10aGlzX2YoYikiLHRoaXNWYXJzOlsidGhpc19mIl19LGZ1bmNOYW1lOmV9KSxyW2UrImVxIl09byh7YXJnczpbImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSJdLGJvZHk6ImE9dGhpc19mKGEpIix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTplKyJlcSJ9KX19KCk7dmFyIGY9WyJtYXgiLCJtaW4iLCJhdGFuMiIsInBvdyJdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8Zi5sZW5ndGg7Kyt0KXt2YXIgZT1mW3RdO3JbZV09byh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJhcnJheSJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJiIiwiYyJdLGJvZHk6ImE9dGhpc19mKGIsYykiLHRoaXNWYXJzOlsidGhpc19mIl19LGZ1bmNOYW1lOmV9KSxyW2UrInMiXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSIsInNjYWxhciJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJiIiwiYyJdLGJvZHk6ImE9dGhpc19mKGIsYykiLHRoaXNWYXJzOlsidGhpc19mIl19LGZ1bmNOYW1lOmUrInMifSkscltlKyJlcSJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPXRoaXNfZihhLGIpIix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTplKyJlcSJ9KSxyW2UrInNlcSJdPW8oe2FyZ3M6WyJhcnJheSIsInNjYWxhciJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJiIl0sYm9keToiYT10aGlzX2YoYSxiKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0scnZhbHVlOiEwLGNvdW50OjIsZnVuY05hbWU6ZSsic2VxIn0pfX0oKTt2YXIgZD1bImF0YW4yIiwicG93Il07IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxkLmxlbmd0aDsrK3Qpe3ZhciBlPWRbdF07cltlKyJvcCJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5IiwiYXJyYXkiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIiwiYiIsImMiXSxib2R5OiJhPXRoaXNfZihjLGIpIix0aGlzVmFyczpbInRoaXNfZiJdfSxmdW5jTmFtZTplKyJvcCJ9KSxyW2UrIm9wcyJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Iiwic2NhbGFyIl0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT10aGlzX2YoYyxiKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sZnVuY05hbWU6ZSsib3BzIn0pLHJbZSsib3BlcSJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPXRoaXNfZihiLGEpIix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTplKyJvcGVxIn0pLHJbZSsib3BzZXEiXT1vKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9dGhpc19mKGIsYSkiLHRoaXNWYXJzOlsidGhpc19mIl19LHJ2YWx1ZTohMCxjb3VudDoyLGZ1bmNOYW1lOmUrIm9wc2VxIn0pfX0oKSxyLmFueT1hKHthcmdzOlsiYXJyYXkiXSxwcmU6cyxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToiaWYoYSl7cmV0dXJuIHRydWV9Iixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6W119LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOltdLGJvZHk6InJldHVybiBmYWxzZSJ9LGZ1bmNOYW1lOiJhbnkifSksci5hbGw9YSh7YXJnczpbImFycmF5Il0scHJlOnMsYm9keTp7YXJnczpbe25hbWU6IngiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLGJvZHk6ImlmKCF4KXtyZXR1cm4gZmFsc2V9Iixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6W119LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOltdLGJvZHk6InJldHVybiB0cnVlIn0sZnVuY05hbWU6ImFsbCJ9KSxyLnN1bT1hKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhpc19zPTAifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToidGhpc19zKz1hIixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJyZXR1cm4gdGhpc19zIn0sZnVuY05hbWU6InN1bSJ9KSxyLnByb2Q9YSh7YXJnczpbImFycmF5Il0scHJlOnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InRoaXNfcz0xIn0sYm9keTp7YXJnczpbe25hbWU6ImEiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLGJvZHk6InRoaXNfcyo9YSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToicmV0dXJuIHRoaXNfcyJ9LGZ1bmNOYW1lOiJwcm9kIn0pLHIubm9ybTJzcXVhcmVkPWEoe2FyZ3M6WyJhcnJheSJdLHByZTp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJ0aGlzX3M9MCJ9LGJvZHk6e2FyZ3M6W3tuYW1lOiJhIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9XSxib2R5OiJ0aGlzX3MrPWEqYSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToicmV0dXJuIHRoaXNfcyJ9LGZ1bmNOYW1lOiJub3JtMnNxdWFyZWQifSksci5ub3JtMj1hKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhpc19zPTAifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfV0sYm9keToidGhpc19zKz1hKmEiLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InJldHVybiBNYXRoLnNxcnQodGhpc19zKSJ9LGZ1bmNOYW1lOiJub3JtMiJ9KSxyLm5vcm1pbmY9YSh7YXJnczpbImFycmF5Il0scHJlOnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InRoaXNfcz0wIn0sYm9keTp7YXJnczpbe25hbWU6ImEiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6NH1dLGJvZHk6ImlmKC1hPnRoaXNfcyl7dGhpc19zPS1hfWVsc2UgaWYoYT50aGlzX3Mpe3RoaXNfcz1hfSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToicmV0dXJuIHRoaXNfcyJ9LGZ1bmNOYW1lOiJub3JtaW5mIn0pLHIubm9ybTE9YSh7YXJnczpbImFycmF5Il0scHJlOnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InRoaXNfcz0wIn0sYm9keTp7YXJnczpbe25hbWU6ImEiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6M31dLGJvZHk6InRoaXNfcys9YTwwPy1hOmEiLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InJldHVybiB0aGlzX3MifSxmdW5jTmFtZToibm9ybTEifSksci5zdXA9YSh7YXJnczpbImFycmF5Il0scHJlOntib2R5OiJ0aGlzX2g9LUluZmluaXR5IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJpZihfaW5saW5lXzFfYXJnMF8+dGhpc19oKXRoaXNfaD1faW5saW5lXzFfYXJnMF8iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6Mn1dLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJyZXR1cm4gdGhpc19oIixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfX0pLHIuaW5mPWEoe2FyZ3M6WyJhcnJheSJdLHByZTp7Ym9keToidGhpc19oPUluZmluaXR5IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJpZihfaW5saW5lXzFfYXJnMF88dGhpc19oKXRoaXNfaD1faW5saW5lXzFfYXJnMF8iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6Mn1dLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJyZXR1cm4gdGhpc19oIixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfX0pLHIuYXJnbWluPWEoe2FyZ3M6WyJpbmRleCIsImFycmF5Iiwic2hhcGUiXSxwcmU6e2JvZHk6Int0aGlzX3Y9SW5maW5pdHk7dGhpc19pPV9pbmxpbmVfMF9hcmcyXy5zbGljZSgwKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzBfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25hbWU6Il9pbmxpbmVfMF9hcmcxXyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV8wX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfaSIsInRoaXNfdiJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie2lmKF9pbmxpbmVfMV9hcmcxXzx0aGlzX3Ype3RoaXNfdj1faW5saW5lXzFfYXJnMV87Zm9yKHZhciBfaW5saW5lXzFfaz0wO19pbmxpbmVfMV9rPF9pbmxpbmVfMV9hcmcwXy5sZW5ndGg7KytfaW5saW5lXzFfayl7dGhpc19pW19pbmxpbmVfMV9rXT1faW5saW5lXzFfYXJnMF9bX2lubGluZV8xX2tdfX19IixhcmdzOlt7bmFtZToiX2lubGluZV8xX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9LHtuYW1lOiJfaW5saW5lXzFfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6Mn1dLHRoaXNWYXJzOlsidGhpc19pIiwidGhpc192Il0sbG9jYWxWYXJzOlsiX2lubGluZV8xX2siXX0scG9zdDp7Ym9keToie3JldHVybiB0aGlzX2l9IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19pIl0sbG9jYWxWYXJzOltdfX0pLHIuYXJnbWF4PWEoe2FyZ3M6WyJpbmRleCIsImFycmF5Iiwic2hhcGUiXSxwcmU6e2JvZHk6Int0aGlzX3Y9LUluZmluaXR5O3RoaXNfaT1faW5saW5lXzBfYXJnMl8uc2xpY2UoMCl9IixhcmdzOlt7bmFtZToiX2lubGluZV8wX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9LHtuYW1lOiJfaW5saW5lXzBfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25hbWU6Il9pbmxpbmVfMF9hcmcyXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sdGhpc1ZhcnM6WyJ0aGlzX2kiLCJ0aGlzX3YiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntpZihfaW5saW5lXzFfYXJnMV8+dGhpc192KXt0aGlzX3Y9X2lubGluZV8xX2FyZzFfO2Zvcih2YXIgX2lubGluZV8xX2s9MDtfaW5saW5lXzFfazxfaW5saW5lXzFfYXJnMF8ubGVuZ3RoOysrX2lubGluZV8xX2spe3RoaXNfaVtfaW5saW5lXzFfa109X2lubGluZV8xX2FyZzBfW19pbmxpbmVfMV9rXX19fSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfSx7bmFtZToiX2lubGluZV8xX2FyZzFfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9XSx0aGlzVmFyczpbInRoaXNfaSIsInRoaXNfdiJdLGxvY2FsVmFyczpbIl9pbmxpbmVfMV9rIl19LHBvc3Q6e2JvZHk6IntyZXR1cm4gdGhpc19pfSIsYXJnczpbXSx0aGlzVmFyczpbInRoaXNfaSJdLGxvY2FsVmFyczpbXX19KSxyLnJhbmRvbT1vKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGgucmFuZG9tIix0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSJdLGJvZHk6ImE9dGhpc19mKCkiLHRoaXNWYXJzOlsidGhpc19mIl19LGZ1bmNOYW1lOiJyYW5kb20ifSksci5hc3NpZ249byh7YXJnczpbImFycmF5IiwiYXJyYXkiXSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPWIifSxmdW5jTmFtZToiYXNzaWduIn0pLHIuYXNzaWducz1vKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiXSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPWIifSxmdW5jTmFtZToiYXNzaWducyJ9KSxyLmVxdWFscz1hKHthcmdzOlsiYXJyYXkiLCJhcnJheSJdLHByZTpzLGJvZHk6e2FyZ3M6W3tuYW1lOiJ4IixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJ5IixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSxib2R5OiJpZih4IT09eSl7cmV0dXJuIGZhbHNlfSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOltdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbXSxib2R5OiJyZXR1cm4gdHJ1ZSJ9LGZ1bmNOYW1lOiJlcXVhbHMifSl9LHsiY3dpc2UtY29tcGlsZXIiOjY2fV0sMjEwOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gaSgpe3ZhciB0LGU9dGhpcy5zdHJpZGUscj1uZXcgQXJyYXkoZS5sZW5ndGgpO2Zvcih0PTA7dDxyLmxlbmd0aDsrK3Qpclt0XT1bTWF0aC5hYnMoZVt0XSksdF07ci5zb3J0KG4pO3ZhciBpPW5ldyBBcnJheShyLmxlbmd0aCk7Zm9yKHQ9MDt0PGkubGVuZ3RoOysrdClpW3RdPXJbdF1bMV07cmV0dXJuIGl9ZnVuY3Rpb24gbyh0LGUpe3ZhciByPVsiVmlldyIsZSwiZCIsdF0uam9pbigiIik7MD5lJiYocj0iVmlld19OaWwiK3QpO3ZhciBuPSJnZW5lcmljIj09PXQ7aWYoLTE9PT1lKXt2YXIgbz0iZnVuY3Rpb24gIityKyIoYSl7dGhpcy5kYXRhPWE7fTt2YXIgcHJvdG89IityKyIucHJvdG90eXBlO3Byb3RvLmR0eXBlPSciK3QrIic7cHJvdG8uaW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gLTF9O3Byb3RvLnNpemU9MDtwcm90by5kaW1lbnNpb249LTE7cHJvdG8uc2hhcGU9cHJvdG8uc3RyaWRlPXByb3RvLm9yZGVyPVtdO3Byb3RvLmxvPXByb3RvLmhpPXByb3RvLnRyYW5zcG9zZT1wcm90by5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyAiK3IrIih0aGlzLmRhdGEpO307cHJvdG8uZ2V0PXByb3RvLnNldD1mdW5jdGlvbigpe307cHJvdG8ucGljaz1mdW5jdGlvbigpe3JldHVybiBudWxsfTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0XyIrcisiKGEpe3JldHVybiBuZXcgIityKyIoYSk7fSIsYT1uZXcgRnVuY3Rpb24obyk7cmV0dXJuIGEoKX1pZigwPT09ZSl7dmFyIG89ImZ1bmN0aW9uICIrcisiKGEsZCkge3RoaXMuZGF0YSA9IGE7dGhpcy5vZmZzZXQgPSBkfTt2YXIgcHJvdG89IityKyIucHJvdG90eXBlO3Byb3RvLmR0eXBlPSciK3QrIic7cHJvdG8uaW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXR9O3Byb3RvLmRpbWVuc2lvbj0wO3Byb3RvLnNpemU9MTtwcm90by5zaGFwZT1wcm90by5zdHJpZGU9cHJvdG8ub3JkZXI9W107cHJvdG8ubG89cHJvdG8uaGk9cHJvdG8udHJhbnNwb3NlPXByb3RvLnN0ZXA9ZnVuY3Rpb24gIityKyJfY29weSgpIHtyZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0YSx0aGlzLm9mZnNldCl9O3Byb3RvLnBpY2s9ZnVuY3Rpb24gIityKyJfcGljaygpe3JldHVybiBUcml2aWFsQXJyYXkodGhpcy5kYXRhKTt9O3Byb3RvLnZhbHVlT2Y9cHJvdG8uZ2V0PWZ1bmN0aW9uICIrcisiX2dldCgpe3JldHVybiAiKyhuPyJ0aGlzLmRhdGEuZ2V0KHRoaXMub2Zmc2V0KSI6InRoaXMuZGF0YVt0aGlzLm9mZnNldF0iKSsifTtwcm90by5zZXQ9ZnVuY3Rpb24gIityKyJfc2V0KHYpe3JldHVybiAiKyhuPyJ0aGlzLmRhdGEuc2V0KHRoaXMub2Zmc2V0LHYpIjoidGhpcy5kYXRhW3RoaXMub2Zmc2V0XT12IikrIn07cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdF8iK3IrIihhLGIsYyxkKXtyZXR1cm4gbmV3ICIrcisiKGEsZCl9IixhPW5ldyBGdW5jdGlvbigiVHJpdmlhbEFycmF5IixvKTtyZXR1cm4gYShoW3RdWzBdKX12YXIgbz1bIid1c2Ugc3RyaWN0JyJdLHM9bChlKSxjPXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJpIit0fSksdT0idGhpcy5vZmZzZXQrIitzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4idGhpcy5zdHJpZGVbIit0KyJdKmkiK3R9KS5qb2luKCIrIiksZj1zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iYiIrdH0pLmpvaW4oIiwiKSxkPXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJjIit0fSkuam9pbigiLCIpO28ucHVzaCgiZnVuY3Rpb24gIityKyIoYSwiK2YrIiwiK2QrIixkKXt0aGlzLmRhdGE9YSIsInRoaXMuc2hhcGU9WyIrZisiXSIsInRoaXMuc3RyaWRlPVsiK2QrIl0iLCJ0aGlzLm9mZnNldD1kfDB9IiwidmFyIHByb3RvPSIrcisiLnByb3RvdHlwZSIsInByb3RvLmR0eXBlPSciK3QrIiciLCJwcm90by5kaW1lbnNpb249IitlKSxvLnB1c2goIk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywnc2l6ZScse2dldDpmdW5jdGlvbiAiK3IrIl9zaXplKCl7cmV0dXJuICIrcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInRoaXMuc2hhcGVbIit0KyJdIn0pLmpvaW4oIioiKSwifX0pIiksMT09PWU/by5wdXNoKCJwcm90by5vcmRlcj1bMF0iKTooby5wdXNoKCJPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sJ29yZGVyJyx7Z2V0OiIpLDQ+ZT8oby5wdXNoKCJmdW5jdGlvbiAiK3IrIl9vcmRlcigpeyIpLDI9PT1lP28ucHVzaCgicmV0dXJuIChNYXRoLmFicyh0aGlzLnN0cmlkZVswXSk+TWF0aC5hYnModGhpcy5zdHJpZGVbMV0pKT9bMSwwXTpbMCwxXX19KSIpOjM9PT1lJiZvLnB1c2goInZhciBzMD1NYXRoLmFicyh0aGlzLnN0cmlkZVswXSksczE9TWF0aC5hYnModGhpcy5zdHJpZGVbMV0pLHMyPU1hdGguYWJzKHRoaXMuc3RyaWRlWzJdKTtpZihzMD5zMSl7aWYoczE+czIpe3JldHVybiBbMiwxLDBdO31lbHNlIGlmKHMwPnMyKXtyZXR1cm4gWzEsMiwwXTt9ZWxzZXtyZXR1cm4gWzEsMCwyXTt9fWVsc2UgaWYoczA+czIpe3JldHVybiBbMiwwLDFdO31lbHNlIGlmKHMyPnMxKXtyZXR1cm4gWzAsMSwyXTt9ZWxzZXtyZXR1cm4gWzAsMiwxXTt9fX0pIikpOm8ucHVzaCgiT1JERVJ9KSIpKSxvLnB1c2goInByb3RvLnNldD1mdW5jdGlvbiAiK3IrIl9zZXQoIitjLmpvaW4oIiwiKSsiLHYpeyIpLG4/by5wdXNoKCJyZXR1cm4gdGhpcy5kYXRhLnNldCgiK3UrIix2KX0iKTpvLnB1c2goInJldHVybiB0aGlzLmRhdGFbIit1KyJdPXZ9Iiksby5wdXNoKCJwcm90by5nZXQ9ZnVuY3Rpb24gIityKyJfZ2V0KCIrYy5qb2luKCIsIikrIil7Iiksbj9vLnB1c2goInJldHVybiB0aGlzLmRhdGEuZ2V0KCIrdSsiKX0iKTpvLnB1c2goInJldHVybiB0aGlzLmRhdGFbIit1KyJdfSIpLG8ucHVzaCgicHJvdG8uaW5kZXg9ZnVuY3Rpb24gIityKyJfaW5kZXgoIixjLmpvaW4oKSwiKXtyZXR1cm4gIit1KyJ9Iiksby5wdXNoKCJwcm90by5oaT1mdW5jdGlvbiAiK3IrIl9oaSgiK2Muam9pbigiLCIpKyIpe3JldHVybiBuZXcgIityKyIodGhpcy5kYXRhLCIrcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuWyIodHlwZW9mIGkiLHQsIiE9PSdudW1iZXInfHxpIix0LCI8MCk/dGhpcy5zaGFwZVsiLHQsIl06aSIsdCwifDAiXS5qb2luKCIiKX0pLmpvaW4oIiwiKSsiLCIrcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInRoaXMuc3RyaWRlWyIrdCsiXSJ9KS5qb2luKCIsIikrIix0aGlzLm9mZnNldCl9Iik7dmFyIHA9cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImEiK3QrIj10aGlzLnNoYXBlWyIrdCsiXSJ9KSxnPXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJjIit0KyI9dGhpcy5zdHJpZGVbIit0KyJdIn0pO28ucHVzaCgicHJvdG8ubG89ZnVuY3Rpb24gIityKyJfbG8oIitjLmpvaW4oIiwiKSsiKXt2YXIgYj10aGlzLm9mZnNldCxkPTAsIitwLmpvaW4oIiwiKSsiLCIrZy5qb2luKCIsIikpO2Zvcih2YXIgdj0wO2U+djsrK3Ypby5wdXNoKCJpZih0eXBlb2YgaSIrdisiPT09J251bWJlcicmJmkiK3YrIj49MCl7ZD1pIit2KyJ8MDtiKz1jIit2KyIqZDthIit2KyItPWR9Iik7by5wdXNoKCJyZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0YSwiK3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJhIit0fSkuam9pbigiLCIpKyIsIitzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iYyIrdH0pLmpvaW4oIiwiKSsiLGIpfSIpLG8ucHVzaCgicHJvdG8uc3RlcD1mdW5jdGlvbiAiK3IrIl9zdGVwKCIrYy5qb2luKCIsIikrIil7dmFyICIrcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImEiK3QrIj10aGlzLnNoYXBlWyIrdCsiXSJ9KS5qb2luKCIsIikrIiwiK3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJiIit0KyI9dGhpcy5zdHJpZGVbIit0KyJdIn0pLmpvaW4oIiwiKSsiLGM9dGhpcy5vZmZzZXQsZD0wLGNlaWw9TWF0aC5jZWlsIik7Zm9yKHZhciB2PTA7ZT52OysrdilvLnB1c2goImlmKHR5cGVvZiBpIit2KyI9PT0nbnVtYmVyJyl7ZD1pIit2KyJ8MDtpZihkPDApe2MrPWIiK3YrIiooYSIrdisiLTEpO2EiK3YrIj1jZWlsKC1hIit2KyIvZCl9ZWxzZXthIit2KyI9Y2VpbChhIit2KyIvZCl9YiIrdisiKj1kfSIpO28ucHVzaCgicmV0dXJuIG5ldyAiK3IrIih0aGlzLmRhdGEsIitzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iYSIrdH0pLmpvaW4oIiwiKSsiLCIrcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImIiK3R9KS5qb2luKCIsIikrIixjKX0iKTtmb3IodmFyIG09bmV3IEFycmF5KGUpLHk9bmV3IEFycmF5KGUpLHY9MDtlPnY7Kyt2KW1bdl09ImFbaSIrdisiXSIseVt2XT0iYltpIit2KyJdIjtvLnB1c2goInByb3RvLnRyYW5zcG9zZT1mdW5jdGlvbiAiK3IrIl90cmFuc3Bvc2UoIitjKyIpeyIrYy5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCsiPSgiK3QrIj09PXVuZGVmaW5lZD8iK2UrIjoiK3QrInwwKSJ9KS5qb2luKCI7IiksInZhciBhPXRoaXMuc2hhcGUsYj10aGlzLnN0cmlkZTtyZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0YSwiK20uam9pbigiLCIpKyIsIit5LmpvaW4oIiwiKSsiLHRoaXMub2Zmc2V0KX0iKSxvLnB1c2goInByb3RvLnBpY2s9ZnVuY3Rpb24gIityKyJfcGljaygiK2MrIil7dmFyIGE9W10sYj1bXSxjPXRoaXMub2Zmc2V0Iik7Zm9yKHZhciB2PTA7ZT52OysrdilvLnB1c2goImlmKHR5cGVvZiBpIit2KyI9PT0nbnVtYmVyJyYmaSIrdisiPj0wKXtjPShjK3RoaXMuc3RyaWRlWyIrdisiXSppIit2KyIpfDB9ZWxzZXthLnB1c2godGhpcy5zaGFwZVsiK3YrIl0pO2IucHVzaCh0aGlzLnN0cmlkZVsiK3YrIl0pfSIpO28ucHVzaCgidmFyIGN0b3I9Q1RPUl9MSVNUW2EubGVuZ3RoKzFdO3JldHVybiBjdG9yKHRoaXMuZGF0YSxhLGIsYyl9Iiksby5wdXNoKCJyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0XyIrcisiKGRhdGEsc2hhcGUsc3RyaWRlLG9mZnNldCl7cmV0dXJuIG5ldyAiK3IrIihkYXRhLCIrcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInNoYXBlWyIrdCsiXSJ9KS5qb2luKCIsIikrIiwiK3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpZGVbIit0KyJdIn0pLmpvaW4oIiwiKSsiLG9mZnNldCl9Iik7dmFyIGE9bmV3IEZ1bmN0aW9uKCJDVE9SX0xJU1QiLCJPUkRFUiIsby5qb2luKCJcbiIpKTtyZXR1cm4gYShoW3RdLGkpfWZ1bmN0aW9uIGEodCl7aWYoYyh0KSlyZXR1cm4iYnVmZmVyIjtpZih1KXN3aXRjaChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpe2Nhc2UiW29iamVjdCBGbG9hdDY0QXJyYXldIjpyZXR1cm4iZmxvYXQ2NCI7Y2FzZSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOnJldHVybiJmbG9hdDMyIjtjYXNlIltvYmplY3QgSW50OEFycmF5XSI6cmV0dXJuImludDgiO2Nhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6cmV0dXJuImludDE2IjtjYXNlIltvYmplY3QgSW50MzJBcnJheV0iOnJldHVybiJpbnQzMiI7Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpyZXR1cm4idWludDgiO2Nhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOnJldHVybiJ1aW50MTYiO2Nhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiJ1aW50MzIiO2Nhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOnJldHVybiJ1aW50OF9jbGFtcGVkIn1yZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOiJnZW5lcmljIn1mdW5jdGlvbiBzKHQsZSxyLG4pe2lmKHZvaWQgMD09PXQpe3ZhciBpPWguYXJyYXlbMF07cmV0dXJuIGkoW10pfSJudW1iZXIiPT10eXBlb2YgdCYmKHQ9W3RdKSx2b2lkIDA9PT1lJiYoZT1bdC5sZW5ndGhdKTt2YXIgcz1lLmxlbmd0aDtpZih2b2lkIDA9PT1yKXtyPW5ldyBBcnJheShzKTtmb3IodmFyIGw9cy0xLGM9MTtsPj0wOy0tbClyW2xdPWMsYyo9ZVtsXX1pZih2b2lkIDA9PT1uKXtuPTA7Zm9yKHZhciBsPTA7cz5sOysrbClyW2xdPDAmJihuLT0oZVtsXS0xKSpyW2xdKX1mb3IodmFyIHU9YSh0KSxmPWhbdV07Zi5sZW5ndGg8PXMrMTspZi5wdXNoKG8odSxmLmxlbmd0aC0xKSk7dmFyIGk9ZltzKzFdO3JldHVybiBpKHQsZSxyLG4pfXZhciBsPXQoImlvdGEtYXJyYXkiKSxjPXQoImlzLWJ1ZmZlciIpLHU9InVuZGVmaW5lZCIhPXR5cGVvZiBGbG9hdDY0QXJyYXksaD17ZmxvYXQzMjpbXSxmbG9hdDY0OltdLGludDg6W10saW50MTY6W10saW50MzI6W10sdWludDg6W10sdWludDE2OltdLHVpbnQzMjpbXSxhcnJheTpbXSx1aW50OF9jbGFtcGVkOltdLGJ1ZmZlcjpbXSxnZW5lcmljOltdfTtlLmV4cG9ydHM9c30seyJpb3RhLWFycmF5IjoxOTcsImlzLWJ1ZmZlciI6MjExfV0sMjExOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiEobnVsbD09dHx8ISh0Ll9pc0J1ZmZlcnx8dC5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIHQuY29uc3RydWN0b3IuaXNCdWZmZXImJnQuY29uc3RydWN0b3IuaXNCdWZmZXIodCkpKX19LHt9XSwyMTI6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZS5leHBvcnRzPXQucGVyZm9ybWFuY2UmJnQucGVyZm9ybWFuY2Uubm93P2Z1bmN0aW9uKCl7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfTpEYXRlLm5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7fV0sMjEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBlPSJyb2J1c3RMaW5lYXJTb2x2ZSIrdCsiZCIscj1bImZ1bmN0aW9uICIsZSwiKEEsYil7cmV0dXJuIFsiXSxuPTA7dD5uOysrbil7ci5wdXNoKCJkZXQoWyIpO2Zvcih2YXIgaT0wO3Q+aTsrK2kpe2k+MCYmci5wdXNoKCIsIiksci5wdXNoKCJbIik7Zm9yKHZhciBvPTA7dD5vOysrbylvPjAmJnIucHVzaCgiLCIpLG89PT1uP3IucHVzaCgiK2JbIixpLCJdIik6ci5wdXNoKCIrQVsiLGksIl1bIixvLCJdIik7ci5wdXNoKCJdIil9ci5wdXNoKCJdKSwiKX1yLnB1c2goImRldChBKV19cmV0dXJuICIsZSk7dmFyIGE9bmV3IEZ1bmN0aW9uKCJkZXQiLHIuam9pbigiIikpO3JldHVybiBhKDY+dD9zW3RdOnMpfWZ1bmN0aW9uIGkoKXtyZXR1cm5bMF19ZnVuY3Rpb24gbyh0LGUpe3JldHVybltbZVswXV0sW3RbMF1bMF1dXX1mdW5jdGlvbiBhKCl7Zm9yKDtjLmxlbmd0aDxsOyljLnB1c2gobihjLmxlbmd0aCkpO2Zvcih2YXIgdD1bXSxyPVsiZnVuY3Rpb24gZGlzcGF0Y2hMaW5lYXJTb2x2ZShBLGIpe3N3aXRjaChBLmxlbmd0aCl7Il0saT0wO2w+aTsrK2kpdC5wdXNoKCJzIitpKSxyLnB1c2goImNhc2UgIixpLCI6cmV0dXJuIHMiLGksIihBLGIpOyIpO3IucHVzaCgifXZhciBzPUNBQ0hFW0EubGVuZ3RoXTtpZighcylzPUNBQ0hFW0EubGVuZ3RoXT1nKEEubGVuZ3RoKTtyZXR1cm4gcyhBLGIpfXJldHVybiBkaXNwYXRjaExpbmVhclNvbHZlIiksdC5wdXNoKCJDQUNIRSIsImciLHIuam9pbigiIikpO3ZhciBvPUZ1bmN0aW9uLmFwcGx5KHZvaWQgMCx0KTtlLmV4cG9ydHM9by5hcHBseSh2b2lkIDAsYy5jb25jYXQoW2Msbl0pKTtmb3IodmFyIGk9MDtsPmk7KytpKWUuZXhwb3J0c1tpXT1jW2ldfXZhciBzPXQoInJvYnVzdC1kZXRlcm1pbmFudCIpLGw9NixjPVtpLG9dO2EoKX0seyJyb2J1c3QtZGV0ZXJtaW5hbnQiOjIxNX1dLDIxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPXRbdC5sZW5ndGgtMV0sbj1lLGk9ZS0yO2k+PTA7LS1pKXt2YXIgbz1yLGE9dFtpXTtyPW8rYTt2YXIgcz1yLW8sbD1hLXM7bCYmKHRbLS1uXT1yLHI9bCl9Zm9yKHZhciBjPTAsaT1uO2U+aTsrK2kpe3ZhciBvPXRbaV0sYT1yO3I9bythO3ZhciBzPXItbyxsPWEtcztsJiYodFtjKytdPWwpfXJldHVybiB0W2MrK109cix0Lmxlbmd0aD1jLHR9ZS5leHBvcnRzPW59LHt9XSwyMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgtMSksbj0xO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT1yW24tMV09bmV3IEFycmF5KHQubGVuZ3RoLTEpLG89MCxhPTA7bzx0Lmxlbmd0aDsrK28pbyE9PWUmJihpW2ErK109dFtuXVtvXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDt0PnI7KytyKXtlW3JdPW5ldyBBcnJheSh0KTtmb3IodmFyIG49MDt0Pm47KytuKWVbcl1bbl09WyJtWyIsciwiXVsiLG4sIl0iXS5qb2luKCIiKX1yZXR1cm4gZX1mdW5jdGlvbiBvKHQpe3JldHVybiAxJnQ/Ii0iOiIifWZ1bmN0aW9uIGEodCl7aWYoMT09PXQubGVuZ3RoKXJldHVybiB0WzBdO2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bInN1bSgiLHRbMF0sIiwiLHRbMV0sIikiXS5qb2luKCIiKTt2YXIgZT10Lmxlbmd0aD4+MTtyZXR1cm5bInN1bSgiLGEodC5zbGljZSgwLGUpKSwiLCIsYSh0LnNsaWNlKGUpKSwiKSJdLmpvaW4oIiIpfWZ1bmN0aW9uIHModCl7aWYoMj09PXQubGVuZ3RoKXJldHVyblsic3VtKHByb2QoIix0WzBdWzBdLCIsIix0WzFdWzFdLCIpLHByb2QoLSIsdFswXVsxXSwiLCIsdFsxXVswXSwiKSkiXS5qb2luKCIiKTtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7KytyKWUucHVzaChbInNjYWxlKCIscyhuKHQscikpLCIsIixvKHIpLHRbMF1bcl0sIikiXS5qb2luKCIiKSk7cmV0dXJuIGEoZSl9ZnVuY3Rpb24gbCh0KXt2YXIgZT1uZXcgRnVuY3Rpb24oInN1bSIsInNjYWxlIiwicHJvZCIsImNvbXByZXNzIixbImZ1bmN0aW9uIHJvYnVzdERldGVybWluYW50Iix0LCIobSl7cmV0dXJuIGNvbXByZXNzKCIscyhpKHQpKSwiKX07cmV0dXJuIHJvYnVzdERldGVybWluYW50Iix0XS5qb2luKCIiKSk7cmV0dXJuIGUoaCxmLHUsZCl9ZnVuY3Rpb24gYygpe2Zvcig7Zy5sZW5ndGg8cDspZy5wdXNoKGwoZy5sZW5ndGgpKTtmb3IodmFyIHQ9W10scj1bImZ1bmN0aW9uIHJvYnVzdERldGVybWluYW50KG0pe3N3aXRjaChtLmxlbmd0aCl7Il0sbj0wO3A+bjsrK24pdC5wdXNoKCJkZXQiK24pLHIucHVzaCgiY2FzZSAiLG4sIjpyZXR1cm4gZGV0IixuLCIobSk7Iik7ci5wdXNoKCJ9dmFyIGRldD1DQUNIRVttLmxlbmd0aF07aWYoIWRldClkZXQ9Q0FDSEVbbS5sZW5ndGhdPWdlbihtLmxlbmd0aCk7cmV0dXJuIGRldChtKTt9cmV0dXJuIHJvYnVzdERldGVybWluYW50IiksdC5wdXNoKCJDQUNIRSIsImdlbiIsci5qb2luKCIiKSk7dmFyIGk9RnVuY3Rpb24uYXBwbHkodm9pZCAwLHQpO2UuZXhwb3J0cz1pLmFwcGx5KHZvaWQgMCxnLmNvbmNhdChbZyxsXSkpO2Zvcih2YXIgbj0wO248Zy5sZW5ndGg7KytuKWUuZXhwb3J0c1tuXT1nW25dfXZhciB1PXQoInR3by1wcm9kdWN0IiksaD10KCJyb2J1c3Qtc3VtIiksZj10KCJyb2J1c3Qtc2NhbGUiKSxkPXQoInJvYnVzdC1jb21wcmVzcyIpLHA9NixnPVtmdW5jdGlvbigpe3JldHVyblswXX0sZnVuY3Rpb24odCl7cmV0dXJuW3RbMF1bMF1dfV07YygpfSx7InJvYnVzdC1jb21wcmVzcyI6MjE0LCJyb2J1c3Qtc2NhbGUiOjIxNywicm9idXN0LXN1bSI6MjE5LCJ0d28tcHJvZHVjdCI6MjMzfV0sMjE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoLTEpLG49MTtuPHQubGVuZ3RoOysrbilmb3IodmFyIGk9cltuLTFdPW5ldyBBcnJheSh0Lmxlbmd0aC0xKSxvPTAsYT0wO288dC5sZW5ndGg7KytvKW8hPT1lJiYoaVthKytdPXRbbl1bb10pO3JldHVybiByfWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7dD5yOysrcil7ZVtyXT1uZXcgQXJyYXkodCk7Zm9yKHZhciBuPTA7dD5uOysrbillW3JdW25dPVsibSIsbiwiWyIsdC1yLTEsIl0iXS5qb2luKCIiKX1yZXR1cm4gZX1mdW5jdGlvbiBvKHQpe3JldHVybiAxJnQ/Ii0iOiIifWZ1bmN0aW9uIGEodCl7aWYoMT09PXQubGVuZ3RoKXJldHVybiB0WzBdO2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bInN1bSgiLHRbMF0sIiwiLHRbMV0sIikiXS5qb2luKCIiKTt2YXIgZT10Lmxlbmd0aD4+MTtyZXR1cm5bInN1bSgiLGEodC5zbGljZSgwLGUpKSwiLCIsYSh0LnNsaWNlKGUpKSwiKSJdLmpvaW4oIiIpfWZ1bmN0aW9uIHModCl7aWYoMj09PXQubGVuZ3RoKXJldHVybltbInN1bShwcm9kKCIsdFswXVswXSwiLCIsdFsxXVsxXSwiKSxwcm9kKC0iLHRbMF1bMV0sIiwiLHRbMV1bMF0sIikpIl0uam9pbigiIildO2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKFsic2NhbGUoIixhKHMobih0LHIpKSksIiwiLG8ociksdFswXVtyXSwiKSJdLmpvaW4oIiIpKTtyZXR1cm4gZX1mdW5jdGlvbiBsKHQpe2Zvcih2YXIgZT1bXSxyPVtdLG89aSh0KSxsPVtdLGM9MDt0PmM7KytjKTA9PT0oMSZjKT9lLnB1c2guYXBwbHkoZSxzKG4obyxjKSkpOnIucHVzaC5hcHBseShyLHMobihvLGMpKSksbC5wdXNoKCJtIitjKTt2YXIgdT1hKGUpLGc9YShyKSx2PSJvcmllbnRhdGlvbiIrdCsiRXhhY3QiLG09WyJmdW5jdGlvbiAiLHYsIigiLGwuam9pbigpLCIpe3ZhciBwPSIsdSwiLG49IixnLCIsZD1zdWIocCxuKTtyZXR1cm4gZFtkLmxlbmd0aC0xXTt9O3JldHVybiAiLHZdLmpvaW4oIiIpLHk9bmV3IEZ1bmN0aW9uKCJzdW0iLCJwcm9kIiwic2NhbGUiLCJzdWIiLG0pO3JldHVybiB5KGYsaCxkLHApfWZ1bmN0aW9uIGModCl7dmFyIGU9X1t0Lmxlbmd0aF07cmV0dXJuIGV8fChlPV9bdC5sZW5ndGhdPWwodC5sZW5ndGgpKSxlLmFwcGx5KHZvaWQgMCx0KX1mdW5jdGlvbiB1KCl7Zm9yKDtfLmxlbmd0aDw9ZzspXy5wdXNoKGwoXy5sZW5ndGgpKTtmb3IodmFyIHQ9W10scj1bInNsb3ciXSxuPTA7Zz49bjsrK24pdC5wdXNoKCJhIituKSxyLnB1c2goIm8iK24pO2Zvcih2YXIgaT1bImZ1bmN0aW9uIGdldE9yaWVudGF0aW9uKCIsdC5qb2luKCksIil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIDA7Il0sbj0yO2c+PW47KytuKWkucHVzaCgiY2FzZSAiLG4sIjpyZXR1cm4gbyIsbiwiKCIsdC5zbGljZSgwLG4pLmpvaW4oKSwiKTsiKTtpLnB1c2goIn12YXIgcz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoOysraSl7c1tpXT1hcmd1bWVudHNbaV19O3JldHVybiBzbG93KHMpO31yZXR1cm4gZ2V0T3JpZW50YXRpb24iKSxyLnB1c2goaS5qb2luKCIiKSk7dmFyIG89RnVuY3Rpb24uYXBwbHkodm9pZCAwLHIpO2UuZXhwb3J0cz1vLmFwcGx5KHZvaWQgMCxbY10uY29uY2F0KF8pKTtmb3IodmFyIG49MDtnPj1uOysrbillLmV4cG9ydHNbbl09X1tuXX12YXIgaD10KCJ0d28tcHJvZHVjdCIpLGY9dCgicm9idXN0LXN1bSIpLGQ9dCgicm9idXN0LXNjYWxlIikscD10KCJyb2J1c3Qtc3VidHJhY3QiKSxnPTUsdj0xLjExMDIyMzAyNDYyNTE1NjVlLTE2LG09KDMrMTYqdikqdix5PSg3KzU2KnYpKnYsYj1sKDMpLHg9bCg0KSxfPVtmdW5jdGlvbigpe3JldHVybiAwfSxmdW5jdGlvbigpe3JldHVybiAwfSxmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLXRbMF19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPSh0WzFdLXJbMV0pKihlWzBdLXJbMF0pLG89KHRbMF0tclswXSkqKGVbMV0tclsxXSksYT1pLW87aWYoaT4wKXtpZigwPj1vKXJldHVybiBhO249aStvfWVsc2V7aWYoISgwPmkpKXJldHVybiBhO2lmKG8+PTApcmV0dXJuIGE7bj0tKGkrbyl9dmFyIHM9bSpuO3JldHVybiBhPj1zfHwtcz49YT9hOmIodCxlLHIpfSxmdW5jdGlvbih0LGUscixuKXt2YXIgaT10WzBdLW5bMF0sbz1lWzBdLW5bMF0sYT1yWzBdLW5bMF0scz10WzFdLW5bMV0sbD1lWzFdLW5bMV0sYz1yWzFdLW5bMV0sdT10WzJdLW5bMl0saD1lWzJdLW5bMl0sZj1yWzJdLW5bMl0sZD1vKmMscD1hKmwsZz1hKnMsdj1pKmMsbT1pKmwsYj1vKnMsXz11KihkLXApK2gqKGctdikrZioobS1iKSx3PShNYXRoLmFicyhkKStNYXRoLmFicyhwKSkqTWF0aC5hYnModSkrKE1hdGguYWJzKGcpK01hdGguYWJzKHYpKSpNYXRoLmFicyhoKSsoTWF0aC5hYnMobSkrTWF0aC5hYnMoYikpKk1hdGguYWJzKGYpLEE9eSp3O3JldHVybiBfPkF8fC1fPkE/Xzp4KHQsZSxyLG4pfV07dSgpfSx7InJvYnVzdC1zY2FsZSI6MjE3LCJyb2J1c3Qtc3VidHJhY3QiOjIxOCwicm9idXN0LXN1bSI6MjE5LCJ0d28tcHJvZHVjdCI6MjMzfV0sMjE3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj10Lmxlbmd0aDtpZigxPT09cil7dmFyIG49aSh0WzBdLGUpO3JldHVybiBuWzBdP246W25bMV1dfXZhciBhPW5ldyBBcnJheSgyKnIpLHM9Wy4xLC4xXSxsPVsuMSwuMV0sYz0wO2kodFswXSxlLHMpLHNbMF0mJihhW2MrK109c1swXSk7Zm9yKHZhciB1PTE7cj51OysrdSl7aSh0W3VdLGUsbCk7dmFyIGg9c1sxXTtvKGgsbFswXSxzKSxzWzBdJiYoYVtjKytdPXNbMF0pO3ZhciBmPWxbMV0sZD1zWzFdLHA9ZitkLGc9cC1mLHY9ZC1nO3NbMV09cCx2JiYoYVtjKytdPXYpfXJldHVybiBzWzFdJiYoYVtjKytdPXNbMV0pLDA9PT1jJiYoYVtjKytdPTApLGEubGVuZ3RoPWMsYX12YXIgaT10KCJ0d28tcHJvZHVjdCIpLG89dCgidHdvLXN1bSIpO2UuZXhwb3J0cz1ufSx7InR3by1wcm9kdWN0IjoyMzMsInR3by1zdW0iOjIzNH1dLDIxODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9dCtlLG49ci10LGk9ci1uLG89ZS1uLGE9dC1pLHM9YStvO3JldHVybiBzP1tzLHJdOltyXX1mdW5jdGlvbiBpKHQsZSl7dmFyIHI9MHx0Lmxlbmd0aCxpPTB8ZS5sZW5ndGg7aWYoMT09PXImJjE9PT1pKXJldHVybiBuKHRbMF0sLWVbMF0pO3ZhciBvLGEscz1yK2ksbD1uZXcgQXJyYXkocyksYz0wLHU9MCxoPTAsZj1NYXRoLmFicyxkPXRbdV0scD1mKGQpLGc9LWVbaF0sdj1mKGcpO3Y+cD8oYT1kLHUrPTEscj51JiYoZD10W3VdLHA9ZihkKSkpOihhPWcsaCs9MSxpPmgmJihnPS1lW2hdLHY9ZihnKSkpLHI+dSYmdj5wfHxoPj1pPyhvPWQsdSs9MSxyPnUmJihkPXRbdV0scD1mKGQpKSk6KG89ZyxoKz0xLGk+aCYmKGc9LWVbaF0sdj1mKGcpKSk7Zm9yKHZhciBtLHksYix4LF8sdz1vK2EsQT13LW8saz1hLUEsTT1rLFQ9dztyPnUmJmk+aDspdj5wPyhvPWQsCnUrPTEscj51JiYoZD10W3VdLHA9ZihkKSkpOihvPWcsaCs9MSxpPmgmJihnPS1lW2hdLHY9ZihnKSkpLGE9TSx3PW8rYSxBPXctbyxrPWEtQSxrJiYobFtjKytdPWspLG09VCt3LHk9bS1ULGI9bS15LHg9dy15LF89VC1iLE09Xyt4LFQ9bTtmb3IoO3I+dTspbz1kLGE9TSx3PW8rYSxBPXctbyxrPWEtQSxrJiYobFtjKytdPWspLG09VCt3LHk9bS1ULGI9bS15LHg9dy15LF89VC1iLE09Xyt4LFQ9bSx1Kz0xLHI+dSYmKGQ9dFt1XSk7Zm9yKDtpPmg7KW89ZyxhPU0sdz1vK2EsQT13LW8saz1hLUEsayYmKGxbYysrXT1rKSxtPVQrdyx5PW0tVCxiPW0teSx4PXcteSxfPVQtYixNPV8reCxUPW0saCs9MSxpPmgmJihnPS1lW2hdKTtyZXR1cm4gTSYmKGxbYysrXT1NKSxUJiYobFtjKytdPVQpLGN8fChsW2MrK109MCksbC5sZW5ndGg9YyxsfWUuZXhwb3J0cz1pfSx7fV0sMjE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj10K2Usbj1yLXQsaT1yLW4sbz1lLW4sYT10LWkscz1hK287cmV0dXJuIHM/W3Mscl06W3JdfWZ1bmN0aW9uIGkodCxlKXt2YXIgcj0wfHQubGVuZ3RoLGk9MHxlLmxlbmd0aDtpZigxPT09ciYmMT09PWkpcmV0dXJuIG4odFswXSxlWzBdKTt2YXIgbyxhLHM9citpLGw9bmV3IEFycmF5KHMpLGM9MCx1PTAsaD0wLGY9TWF0aC5hYnMsZD10W3VdLHA9ZihkKSxnPWVbaF0sdj1mKGcpO3Y+cD8oYT1kLHUrPTEscj51JiYoZD10W3VdLHA9ZihkKSkpOihhPWcsaCs9MSxpPmgmJihnPWVbaF0sdj1mKGcpKSkscj51JiZ2PnB8fGg+PWk/KG89ZCx1Kz0xLHI+dSYmKGQ9dFt1XSxwPWYoZCkpKToobz1nLGgrPTEsaT5oJiYoZz1lW2hdLHY9ZihnKSkpO2Zvcih2YXIgbSx5LGIseCxfLHc9bythLEE9dy1vLGs9YS1BLE09ayxUPXc7cj51JiZpPmg7KXY+cD8obz1kLHUrPTEscj51JiYoZD10W3VdLHA9ZihkKSkpOihvPWcsaCs9MSxpPmgmJihnPWVbaF0sdj1mKGcpKSksYT1NLHc9bythLEE9dy1vLGs9YS1BLGsmJihsW2MrK109ayksbT1UK3cseT1tLVQsYj1tLXkseD13LXksXz1ULWIsTT1fK3gsVD1tO2Zvcig7cj51OylvPWQsYT1NLHc9bythLEE9dy1vLGs9YS1BLGsmJihsW2MrK109ayksbT1UK3cseT1tLVQsYj1tLXkseD13LXksXz1ULWIsTT1fK3gsVD1tLHUrPTEscj51JiYoZD10W3VdKTtmb3IoO2k+aDspbz1nLGE9TSx3PW8rYSxBPXctbyxrPWEtQSxrJiYobFtjKytdPWspLG09VCt3LHk9bS1ULGI9bS15LHg9dy15LF89VC1iLE09Xyt4LFQ9bSxoKz0xLGk+aCYmKGc9ZVtoXSk7cmV0dXJuIE0mJihsW2MrK109TSksVCYmKGxbYysrXT1UKSxjfHwobFtjKytdPTApLGwubGVuZ3RoPWMsbH1lLmV4cG9ydHM9aX0se31dLDIyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3JldHVybiB0LnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gaT9pW3RdOiIifSkuam9pbigiIil9ZS5leHBvcnRzPW47dmFyIGk9eyIgIjoiICIsMDoiXHUyMDcwIiwxOiJceGI5IiwyOiJceGIyIiwzOiJceGIzIiw0OiJcdTIwNzQiLDU6Ilx1MjA3NSIsNjoiXHUyMDc2Iiw3OiJcdTIwNzciLDg6Ilx1MjA3OCIsOToiXHUyMDc5IiwiKyI6Ilx1MjA3YSIsIi0iOiJcdTIwN2IiLGE6Ilx1MWQ0MyIsYjoiXHUxZDQ3IixjOiJcdTFkOWMiLGQ6Ilx1MWQ0OCIsZToiXHUxZDQ5IixmOiJcdTFkYTAiLGc6Ilx1MWQ0ZCIsaDoiXHUwMmIwIixpOiJcdTIwNzEiLGo6Ilx1MDJiMiIsazoiXHUxZDRmIixsOiJcdTAyZTEiLG06Ilx1MWQ1MCIsbjoiXHUyMDdmIixvOiJcdTFkNTIiLHA6Ilx1MWQ1NiIscjoiXHUwMmIzIixzOiJcdTAyZTIiLHQ6Ilx1MWQ1NyIsdToiXHUxZDU4Iix2OiJcdTFkNWIiLHc6Ilx1MDJiNyIseDoiXHUwMmUzIix5OiJcdTAyYjgiLHo6Ilx1MWRiYiJ9fSx7fV0sMjIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuImEiK3R9ZnVuY3Rpb24gaSh0KXtyZXR1cm4iZCIrdH1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuImMiK3QrIl8iK2V9ZnVuY3Rpb24gYSh0KXtyZXR1cm4icyIrdH1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuInQiK3QrIl8iK2V9ZnVuY3Rpb24gbCh0KXtyZXR1cm4ibyIrdH1mdW5jdGlvbiBjKHQpe3JldHVybiJ4Iit0fWZ1bmN0aW9uIHUodCl7cmV0dXJuInAiK3R9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiJkIit0KyJfIitlfWZ1bmN0aW9uIGYodCl7cmV0dXJuImkiK3R9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiJ1Iit0KyJfIitlfWZ1bmN0aW9uIHAodCl7cmV0dXJuImIiK3R9ZnVuY3Rpb24gZyh0KXtyZXR1cm4ieSIrdH1mdW5jdGlvbiB2KHQpe3JldHVybiJlIit0fWZ1bmN0aW9uIG0odCl7cmV0dXJuInYiK3R9ZnVuY3Rpb24geSh0LGUscil7Zm9yKHZhciBuPTAsaT0wO3Q+aTsrK2kpZSYxPDxpJiYobnw9MTw8cltpXSk7cmV0dXJuIG59ZnVuY3Rpb24gYih0LGUscixiLHgsTCl7ZnVuY3Rpb24gUyh0LGUpe0YucHVzaCgiZm9yKCIsZih4W3RdKSwiPSIsZSwiOyIsZih4W3RdKSwiPCIsYSh4W3RdKSwiOyIsIisrIixmKHhbdF0pLCIpeyIpfWZ1bmN0aW9uIEModCl7Zm9yKHZhciBlPTA7ST5lOysrZSlGLnB1c2godShlKSwiKz0iLGQoZSx4W3RdKSwiOyIpO0YucHVzaCgifSIpfWZ1bmN0aW9uIFAodCl7Zm9yKHZhciBlPXQtMTtlPj0wOy0tZSlTKGUsMCk7Zm9yKHZhciByPVtdLGU9MDtJPmU7KytlKUxbZV0/ci5wdXNoKGkoZSkrIi5nZXQoIit1KGUpKyIpIik6ci5wdXNoKGkoZSkrIlsiK3UoZSkrIl0iKTtmb3IodmFyIGU9MDtiPmU7KytlKXIucHVzaChjKGUpKTtGLnB1c2goQSwiWyIsVCwiKytdPXBoYXNlKCIsci5qb2luKCksIik7Iik7Zm9yKHZhciBlPTA7dD5lOysrZSlDKGUpO2Zvcih2YXIgbj0wO0k+bjsrK24pRi5wdXNoKHUobiksIis9IixkKG4seFt0XSksIjsiKX1mdW5jdGlvbiB6KHQpe2Zvcih2YXIgZT0wO0k+ZTsrK2UpTFtlXT9GLnB1c2gobyhlLDApLCI9IixpKGUpLCIuZ2V0KCIsdShlKSwiKTsiKTpGLnB1c2gobyhlLDApLCI9IixpKGUpLCJbIix1KGUpLCJdOyIpO2Zvcih2YXIgcj1bXSxlPTA7ST5lOysrZSlyLnB1c2gobyhlLDApKTtmb3IodmFyIGU9MDtiPmU7KytlKXIucHVzaChjKGUpKTtGLnB1c2gocCgwKSwiPSIsQSwiWyIsVCwiXT1waGFzZSgiLHIuam9pbigpLCIpOyIpO2Zvcih2YXIgbj0xOzE8PE4+bjsrK24pRi5wdXNoKHAobiksIj0iLEEsIlsiLFQsIisiLHYobiksIl07Iik7Zm9yKHZhciBhPVtdLG49MTsxPDxOPm47KytuKWEucHVzaCgiKCIrcCgwKSsiIT09IitwKG4pKyIpIik7Ri5wdXNoKCJpZigiLGEuam9pbigifHwiKSwiKXsiKTtmb3IodmFyIHM9W10sZT0wO04+ZTsrK2Upcy5wdXNoKGYoZSkpO2Zvcih2YXIgZT0wO0k+ZTsrK2Upe3MucHVzaChvKGUsMCkpO2Zvcih2YXIgbj0xOzE8PE4+bjsrK24pTFtlXT9GLnB1c2gobyhlLG4pLCI9IixpKGUpLCIuZ2V0KCIsdShlKSwiKyIsaChlLG4pLCIpOyIpOkYucHVzaChvKGUsbiksIj0iLGkoZSksIlsiLHUoZSksIisiLGgoZSxuKSwiXTsiKSxzLnB1c2gobyhlLG4pKX1mb3IodmFyIGU9MDsxPDxOPmU7KytlKXMucHVzaChwKGUpKTtmb3IodmFyIGU9MDtiPmU7KytlKXMucHVzaChjKGUpKTtGLnB1c2goInZlcnRleCgiLHMuam9pbigpLCIpOyIsbSgwKSwiPSIsdywiWyIsVCwiXT0iLGssIisrOyIpO2Zvcih2YXIgbD0oMTw8TiktMSxkPXAobCksbj0wO04+bjsrK24paWYoMD09PSh0Jn4oMTw8bikpKXtmb3IodmFyIGc9bF4xPDxuLHk9cChnKSx4PVtdLF89ZztfPjA7Xz1fLTEmZyl4LnB1c2godysiWyIrVCsiKyIrdihfKSsiXSIpO3gucHVzaChtKDApKTtmb3IodmFyIF89MDtJPl87KytfKTEmbj94LnB1c2gobyhfLGwpLG8oXyxnKSk6eC5wdXNoKG8oXyxnKSxvKF8sbCkpOzEmbj94LnB1c2goZCx5KTp4LnB1c2goeSxkKTtmb3IodmFyIF89MDtiPl87KytfKXgucHVzaChjKF8pKTtGLnB1c2goImlmKCIsZCwiIT09Iix5LCIpeyIsImZhY2UoIix4LmpvaW4oKSwiKX0iKX1GLnB1c2goIn0iLFQsIis9MTsiKX1mdW5jdGlvbiBSKCl7Zm9yKHZhciB0PTE7MTw8Tj50OysrdClGLnB1c2goRSwiPSIsdih0KSwiOyIsdih0KSwiPSIsZyh0KSwiOyIsZyh0KSwiPSIsRSwiOyIpfWZ1bmN0aW9uIE8odCxlKXtpZigwPnQpcmV0dXJuIHZvaWQgeihlKTtQKHQpLEYucHVzaCgiaWYoIixhKHhbdF0pLCI+MCl7IixmKHhbdF0pLCI9MTsiKSxPKHQtMSxlfDE8PHhbdF0pO2Zvcih2YXIgcj0wO0k+cjsrK3IpRi5wdXNoKHUociksIis9IixkKHIseFt0XSksIjsiKTt0PT09Ti0xJiYoRi5wdXNoKFQsIj0wOyIpLFIoKSksUyh0LDIpLE8odC0xLGUpLHQ9PT1OLTEmJihGLnB1c2goImlmKCIsZih4W04tMV0pLCImMSl7IixULCI9MDt9IiksUigpKSxDKHQpLEYucHVzaCgifSIpfXZhciBJPUwubGVuZ3RoLE49eC5sZW5ndGg7aWYoMj5OKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1leHRyYWN0LWNvbnRvdXI6IERpbWVuc2lvbiBtdXN0IGJlIGF0IGxlYXN0IDIiKTtmb3IodmFyIGo9ImV4dHJhY3RDb250b3VyIit4LmpvaW4oIl8iKSxGPVtdLEQ9W10sQj1bXSxVPTA7ST5VOysrVSlCLnB1c2gobihVKSk7Zm9yKHZhciBVPTA7Yj5VOysrVSlCLnB1c2goYyhVKSk7Zm9yKHZhciBVPTA7Tj5VOysrVSlELnB1c2goYShVKSsiPSIrbigwKSsiLnNoYXBlWyIrVSsiXXwwIik7Zm9yKHZhciBVPTA7ST5VOysrVSl7RC5wdXNoKGkoVSkrIj0iK24oVSkrIi5kYXRhIixsKFUpKyI9IituKFUpKyIub2Zmc2V0fDAiKTtmb3IodmFyIFY9MDtOPlY7KytWKUQucHVzaChzKFUsVikrIj0iK24oVSkrIi5zdHJpZGVbIitWKyJdfDAiKX1mb3IodmFyIFU9MDtJPlU7KytVKXtELnB1c2godShVKSsiPSIrbChVKSksRC5wdXNoKG8oVSwwKSk7Zm9yKHZhciBWPTE7MTw8Tj5WOysrVil7Zm9yKHZhciBxPVtdLEg9MDtOPkg7KytIKVYmMTw8SCYmcS5wdXNoKCItIitzKFUsSCkpO0QucHVzaChoKFUsVikrIj0oIitxLmpvaW4oIiIpKyIpfDAiKSxELnB1c2gobyhVLFYpKyI9MCIpfX1mb3IodmFyIFU9MDtJPlU7KytVKWZvcih2YXIgVj0wO04+VjsrK1Ype3ZhciBHPVtzKFUseFtWXSldO1Y+MCYmRy5wdXNoKHMoVSx4W1YtMV0pKyIqIithKHhbVi0xXSkpLEQucHVzaChkKFUseFtWXSkrIj0oIitHLmpvaW4oIi0iKSsiKXwwIil9Zm9yKHZhciBVPTA7Tj5VOysrVSlELnB1c2goZihVKSsiPTAiKTtELnB1c2goaysiPTAiKTtmb3IodmFyIFk9WyIyIl0sVT1OLTI7VT49MDstLVUpWS5wdXNoKGEoeFtVXSkpO0QucHVzaChNKyI9KCIrWS5qb2luKCIqIikrIil8MCIsQSsiPW1hbGxvY1VpbnQzMigiK00rIikiLHcrIj1tYWxsb2NVaW50MzIoIitNKyIpIixUKyI9MCIpLEQucHVzaChwKDApKyI9MCIpO2Zvcih2YXIgVj0xOzE8PE4+VjsrK1Ype2Zvcih2YXIgWD1bXSxXPVtdLEg9MDtOPkg7KytIKVYmMTw8SCYmKDA9PT1XLmxlbmd0aD9YLnB1c2goIjEiKTpYLnVuc2hpZnQoVy5qb2luKCIqIikpKSxXLnB1c2goYSh4W0hdKSk7dmFyIFo9IiI7WFswXS5pbmRleE9mKGEoeFtOLTJdKSk8MCYmKFo9Ii0iKTt2YXIgJD15KE4sVix4KTtELnB1c2godigkKSsiPSgtIitYLmpvaW4oIi0iKSsiKXwwIixnKCQpKyI9KCIrWitYLmpvaW4oIi0iKSsiKXwwIixwKCQpKyI9MCIpfUQucHVzaChtKDApKyI9MCIsRSsiPTAiKSxPKE4tMSwwKSxGLnB1c2goImZyZWVVaW50MzIoIix3LCIpO2ZyZWVVaW50MzIoIixBLCIpOyIpO3ZhciBLPVsiJ3VzZSBzdHJpY3QnOyIsImZ1bmN0aW9uICIsaiwiKCIsQi5qb2luKCksIil7IiwidmFyICIsRC5qb2luKCksIjsiLEYuam9pbigiIiksIn0iLCJyZXR1cm4gIixqXS5qb2luKCIiKSxRPW5ldyBGdW5jdGlvbigidmVydGV4IiwiZmFjZSIsInBoYXNlIiwibWFsbG9jVWludDMyIiwiZnJlZVVpbnQzMiIsSyk7cmV0dXJuIFEodCxlLHIsXy5tYWxsb2NVaW50MzIsXy5mcmVlVWludDMyKX1mdW5jdGlvbiB4KHQpe2Z1bmN0aW9uIGUodCl7dGhyb3cgbmV3IEVycm9yKCJuZGFycmF5LWV4dHJhY3QtY29udG91cjogIit0KX0ib2JqZWN0IiE9dHlwZW9mIHQmJmUoIk11c3Qgc3BlY2lmeSBhcmd1bWVudHMiKTt2YXIgcj10Lm9yZGVyO0FycmF5LmlzQXJyYXkocil8fGUoIk11c3Qgc3BlY2lmeSBvcmRlciIpO3ZhciBuPXQuYXJyYXlBcmd1bWVudHN8fDE7MT5uJiZlKCJNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFycmF5IGFyZ3VtZW50Iik7dmFyIGk9dC5zY2FsYXJBcmd1bWVudHN8fDA7MD5pJiZlKCJTY2FsYXIgYXJnIGNvdW50IG11c3QgYmUgPiAwIiksImZ1bmN0aW9uIiE9dHlwZW9mIHQudmVydGV4JiZlKCJNdXN0IHNwZWNpZnkgdmVydGV4IGNyZWF0aW9uIGZ1bmN0aW9uIiksImZ1bmN0aW9uIiE9dHlwZW9mIHQuY2VsbCYmZSgiTXVzdCBzcGVjaWZ5IGNlbGwgY3JlYXRpb24gZnVuY3Rpb24iKSwiZnVuY3Rpb24iIT10eXBlb2YgdC5waGFzZSYmZSgiTXVzdCBzcGVjaWZ5IHBoYXNlIGZ1bmN0aW9uIik7Zm9yKHZhciBvPXQuZ2V0dGVyc3x8W10sYT1uZXcgQXJyYXkobikscz0wO24+czsrK3Mpby5pbmRleE9mKHMpPj0wP2Fbc109ITA6YVtzXT0hMTtyZXR1cm4gYih0LnZlcnRleCx0LmNlbGwsdC5waGFzZSxpLHIsYSl9dmFyIF89dCgidHlwZWRhcnJheS1wb29sIik7ZS5leHBvcnRzPXg7dmFyIHc9IlYiLEE9IlAiLGs9Ik4iLE09IlEiLFQ9IlgiLEU9IlQifSx7InR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMjIyOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXtpZigwPnQpcmV0dXJuIE51bWJlcigiMC8wIik7Zm9yKHZhciBlPXNbMF0scj1zLmxlbmd0aC0xO3I+MDstLXIpZSs9c1tyXS8odCtyKTt2YXIgbj10K2ErLjU7cmV0dXJuLjUqTWF0aC5sb2coMipNYXRoLlBJKSsodCsuNSkqTWF0aC5sb2cobiktbitNYXRoLmxvZyhlKS1NYXRoLmxvZyh0KX12YXIgaT03LG89Wy45OTk5OTk5OTk5OTk4MDk5LDY3Ni41MjAzNjgxMjE4ODUxLC0xMjU5LjEzOTIxNjcyMjQwMjgsNzcxLjMyMzQyODc3NzY1MzEsLTE3Ni42MTUwMjkxNjIxNDA2LDEyLjUwNzM0MzI3ODY4NjkwNSwtLjEzODU3MTA5NTI2NTcyMDEyLDk5ODQzNjk1NzgwMTk1NzJlLTIxLDEuNTA1NjMyNzM1MTQ5MzExNmUtN10sYT02MDcvMTI4LHM9Wy45OTk5OTk5OTk5OTk5OTcxLDU3LjE1NjIzNTY2NTg2MjkyLC01OS41OTc5NjAzNTU0NzU0OSwxNC4xMzYwOTc5NzQ3NDE3NDYsLS40OTE5MTM4MTYwOTc2MjAyLDMzOTk0NjQ5OTg0ODExODllLTIwLDQ2NTIzNjI4OTI3MDQ4NThlLTIwLC05ODM3NDQ3NTMwNDg3OTU2ZS0yMCwuMDAwMTU4MDg4NzAzMjI0OTEyNSwtLjAwMDIxMDI2NDQ0MTcyNDEwNDg4LC4wMDAyMTc0Mzk2MTgxMTUyMTI2NSwtLjAwMDE2NDMxODEwNjUzNjc2MzksODQ0MTgyMjM5ODM4NTI3NWUtMjAsLTI2MTkwODM4NDAxNTgxNDA4ZS0yMSwzNjg5OTE4MjY1OTUzMTYyNWUtMjJdO2UuZXhwb3J0cz1mdW5jdGlvbiBsKHQpe2lmKC41PnQpcmV0dXJuIE1hdGguUEkvKE1hdGguc2luKE1hdGguUEkqdCkqbCgxLXQpKTtpZih0PjEwMClyZXR1cm4gTWF0aC5leHAobih0KSk7dC09MTtmb3IodmFyIGU9b1swXSxyPTE7aSsyPnI7cisrKWUrPW9bcl0vKHQrcik7dmFyIGE9dCtpKy41O3JldHVybiBNYXRoLnNxcnQoMipNYXRoLlBJKSpNYXRoLnBvdyhhLHQrLjUpKk1hdGguZXhwKC1hKSplfSxlLmV4cG9ydHMubG9nPW59LHt9XSwyMjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZT10Lmxlbmd0aDtpZihpPmUpe2Zvcih2YXIgcj0xLG49MDtlPm47KytuKWZvcih2YXIgYT0wO24+YTsrK2EpaWYodFtuXTx0W2FdKXI9LXI7ZWxzZSBpZih0W25dPT09dFthXSlyZXR1cm4gMDtyZXR1cm4gcn1mb3IodmFyIHM9by5tYWxsb2NVaW50OChlKSxuPTA7ZT5uOysrbilzW25dPTA7Zm9yKHZhciByPTEsbj0wO2U+bjsrK24paWYoIXNbbl0pe3ZhciBsPTE7c1tuXT0xO2Zvcih2YXIgYT10W25dO2EhPT1uO2E9dFthXSl7aWYoc1thXSlyZXR1cm4gby5mcmVlVWludDgocyksMDtsKz0xLHNbYV09MX0xJmx8fChyPS1yKX1yZXR1cm4gby5mcmVlVWludDgocykscn1lLmV4cG9ydHM9bjt2YXIgaT0zMixvPXQoInR5cGVkYXJyYXktcG9vbCIpfSx7InR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMjI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5sZW5ndGg7c3dpdGNoKGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiB0WzFdfXZhciByLG4saSxzPW8ubWFsbG9jVWludDMyKGUpLGw9by5tYWxsb2NVaW50MzIoZSksYz0wO2ZvcihhKHQsbCksaT0wO2U+aTsrK2kpc1tpXT10W2ldO2ZvcihpPWUtMTtpPjA7LS1pKW49bFtpXSxyPXNbaV0sc1tpXT1zW25dLHNbbl09cixsW2ldPWxbcl0sbFtyXT1uLGM9KGMrcikqaTtyZXR1cm4gby5mcmVlVWludDMyKGwpLG8uZnJlZVVpbnQzMihzKSxjfWZ1bmN0aW9uIGkodCxlLHIpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHI/cjpbXTtjYXNlIDE6cmV0dXJuIHI/KHJbMF09MCxyKTpbMF07Y2FzZSAyOnJldHVybiByPyhlPyhyWzBdPTAsclsxXT0xKTooclswXT0xLHJbMV09MCkscik6ZT9bMCwxXTpbMSwwXX1yPXJ8fG5ldyBBcnJheSh0KTt2YXIgbixpLG8sYT0xO2ZvcihyWzBdPTAsbz0xO3Q+bzsrK28pcltvXT1vLGE9YSpvfDA7Zm9yKG89dC0xO28+MDstLW8pbj1lL2F8MCxlPWUtbiphfDAsYT1hL298MCxpPTB8cltvXSxyW29dPTB8cltuXSxyW25dPTB8aTtyZXR1cm4gcn12YXIgbz10KCJ0eXBlZGFycmF5LXBvb2wiKSxhPXQoImludmVydC1wZXJtdXRhdGlvbiIpO3IucmFuaz1uLHIudW5yYW5rPWl9LHsiaW52ZXJ0LXBlcm11dGF0aW9uIjoyMjUsInR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMjI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtlPWV8fG5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpZVt0W3JdXT1yO3JldHVybiBlfWUuZXhwb3J0cz1ufSx7fV0sMjI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7aWYoMD50KXJldHVybltdO2lmKDA9PT10KXJldHVybltbMF1dO2Zvcih2YXIgZT0wfE1hdGgucm91bmQoYSh0KzEpKSxyPVtdLG49MDtlPm47KytuKXtmb3IodmFyIHM9aS51bnJhbmsodCxuKSxsPVswXSxjPTAsdT0wO3U8cy5sZW5ndGg7Kyt1KWMrPTE8PHNbdV0sbC5wdXNoKGMpO28ocyk8MSYmKGxbMF09YyxsW3RdPTApLHIucHVzaChsKX1yZXR1cm4gcn1lLmV4cG9ydHM9bjt2YXIgaT10KCJwZXJtdXRhdGlvbi1yYW5rIiksbz10KCJwZXJtdXRhdGlvbi1wYXJpdHkiKSxhPXQoImdhbW1hIil9LHtnYW1tYToyMjIsInBlcm11dGF0aW9uLXBhcml0eSI6MjIzLCJwZXJtdXRhdGlvbi1yYW5rIjoyMjR9XSwyMjc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiY3dpc2UtY29tcGlsZXIiKSh7YXJnczpbImFycmF5Iix7b2Zmc2V0OlsxXSxhcnJheTowfSwic2NhbGFyIiwic2NhbGFyIiwiaW5kZXgiXSxwcmU6e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0scG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7XG4gICAgICAgIHZhciBfaW5saW5lXzFfZGEgPSBfaW5saW5lXzFfYXJnMF8gLSBfaW5saW5lXzFfYXJnM19cbiAgICAgICAgdmFyIF9pbmxpbmVfMV9kYiA9IF9pbmxpbmVfMV9hcmcxXyAtIF9pbmxpbmVfMV9hcmczX1xuICAgICAgICBpZigoX2lubGluZV8xX2RhID49IDApICE9PSAoX2lubGluZV8xX2RiID49IDApKSB7XG4gICAgICAgICAgX2lubGluZV8xX2FyZzJfLnB1c2goX2lubGluZV8xX2FyZzRfWzBdICsgMC41ICsgMC41ICogKF9pbmxpbmVfMV9kYSArIF9pbmxpbmVfMV9kYikgLyAoX2lubGluZV8xX2RhIC0gX2lubGluZV8xX2RiKSlcbiAgICAgICAgfVxuICAgICAgfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzFfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzFfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMV9hcmczXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfSx7bmFtZToiX2lubGluZV8xX2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6WyJfaW5saW5lXzFfZGEiLCJfaW5saW5lXzFfZGIiXX0sZnVuY05hbWU6Inplcm9Dcm9zc2luZ3MifSl9LHsiY3dpc2UtY29tcGlsZXIiOjY2fV0sMjI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1bXTtyZXR1cm4gZT0rZXx8MCxpKHQuaGkodC5zaGFwZVswXS0xKSxyLGUpLHJ9ZS5leHBvcnRzPW47dmFyIGk9dCgiLi9saWIvemMtY29yZSIpfSx7Ii4vbGliL3pjLWNvcmUiOjIyN31dLDIyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9dC5sZW5ndGgsbj1bIid1c2Ugc3RyaWN0JzsiXSxpPSJzdXJmYWNlTmV0cyIrdC5qb2luKCJfIikrImQiK2U7bi5wdXNoKCJ2YXIgY29udG91cj1nZW5Db250b3VyKHsiLCJvcmRlcjpbIix0LmpvaW4oKSwiXSwiLCJzY2FsYXJBcmd1bWVudHM6IDMsIiwicGhhc2U6ZnVuY3Rpb24gcGhhc2VGdW5jKHAsYSxiLGMpIHsgcmV0dXJuIChwID4gYyl8MCB9LCIpLCJnZW5lcmljIj09PWUmJm4ucHVzaCgiZ2V0dGVyczpbMF0sIik7Zm9yKHZhciBvPVtdLGw9W10sYz0wO3I+YzsrK2Mpby5wdXNoKCJkIitjKSxsLnB1c2goImQiK2MpO2Zvcih2YXIgYz0wOzE8PHI+YzsrK2Mpby5wdXNoKCJ2IitjKSxsLnB1c2goInYiK2MpO2Zvcih2YXIgYz0wOzE8PHI+YzsrK2Mpby5wdXNoKCJwIitjKSxsLnB1c2goInAiK2MpO28ucHVzaCgiYSIsImIiLCJjIiksbC5wdXNoKCJhIiwiYyIpLG4ucHVzaCgidmVydGV4OmZ1bmN0aW9uIHZlcnRleEZ1bmMoIixvLmpvaW4oKSwiKXsiKTtmb3IodmFyIHU9W10sYz0wOzE8PHI+YzsrK2MpdS5wdXNoKCIocCIrYysiPDwiK2MrIikiKTtuLnB1c2goInZhciBtPSgiLHUuam9pbigiKyIpLCIpfDA7aWYobT09PTB8fG09PT0iLCgxPDwoMTw8cikpLTEsIil7cmV0dXJufSIpO3ZhciBoPVtdLGY9W107MTI4Pj0xPDwoMTw8cik/KG4ucHVzaCgic3dpdGNoKG0peyIpLGY9bik6bi5wdXNoKCJzd2l0Y2gobT4+PjcpeyIpO2Zvcih2YXIgYz0wOzE8PCgxPDxyKT5jOysrYyl7aWYoMTw8KDE8PHIpPjEyOCYmYyUxMjg9PT0wKXtoLmxlbmd0aD4wJiZmLnB1c2goIn19Iik7dmFyIGQ9InZFeHRyYSIraC5sZW5ndGg7bi5wdXNoKCJjYXNlICIsYz4+PjcsIjoiLGQsIihtJjB4N2YsIixsLmpvaW4oKSwiKTticmVhazsiKSxmPVsiZnVuY3Rpb24gIixkLCIobSwiLGwuam9pbigpLCIpe3N3aXRjaChtKXsiXSxoLnB1c2goZil9Zi5wdXNoKCJjYXNlICIsMTI3JmMsIjoiKTtmb3IodmFyIHA9bmV3IEFycmF5KHIpLGc9bmV3IEFycmF5KHIpLHY9bmV3IEFycmF5KHIpLG09bmV3IEFycmF5KHIpLHk9MCxiPTA7cj5iOysrYilwW2JdPVtdLGdbYl09W10sdltiXT0wLG1bYl09MDtmb3IodmFyIGI9MDsxPDxyPmI7KytiKWZvcih2YXIgeD0wO3I+eDsrK3gpe3ZhciBfPWJeMTw8eDtpZighKF8+YikmJiEoYyYxPDxfKSE9IShjJjE8PGIpKXt2YXIgdz0xO2MmMTw8Xz9nW3hdLnB1c2goInYiK18rIi12IitiKTooZ1t4XS5wdXNoKCJ2IitiKyItdiIrXyksdz0tdyksMD53PyhwW3hdLnB1c2goIi12IitiKyItdiIrXyksdlt4XSs9Mik6KHBbeF0ucHVzaCgidiIrYisiK3YiK18pLHZbeF0tPTIpLHkrPTE7Zm9yKHZhciBBPTA7cj5BOysrQSlBIT09eCYmKF8mMTw8QT9tW0FdKz0xOm1bQV0tPTEpfX1mb3IodmFyIGs9W10seD0wO3I+eDsrK3gpaWYoMD09PXBbeF0ubGVuZ3RoKWsucHVzaCgiZCIreCsiLTAuNSIpO2Vsc2V7dmFyIE09IiI7dlt4XTwwP009dlt4XSsiKmMiOnZbeF0+MCYmKE09IisiK3ZbeF0rIipjIik7dmFyIFQ9LjUqKHBbeF0ubGVuZ3RoL3kpLEU9LjUrLjUqKG1beF0veSk7ay5wdXNoKCJkIit4KyItIitFKyItIitUKyIqKCIrcFt4XS5qb2luKCIrIikrTSsiKS8oIitnW3hdLmpvaW4oIisiKSsiKSIpfWYucHVzaCgiYS5wdXNoKFsiLGsuam9pbigpLCJdKTsiLCJicmVhazsiKX1uLnB1c2goIn19LCIpLGgubGVuZ3RoPjAmJmYucHVzaCgifX0iKTtmb3IodmFyIEw9W10sYz0wOzE8PHItMT5jOysrYylMLnB1c2goInYiK2MpO0wucHVzaCgiYzAiLCJjMSIsInAwIiwicDEiLCJhIiwiYiIsImMiKSxuLnB1c2goImNlbGw6ZnVuY3Rpb24gY2VsbEZ1bmMoIixMLmpvaW4oKSwiKXsiKTt2YXIgUz1zKHItMSk7bi5wdXNoKCJpZihwMCl7Yi5wdXNoKCIsUy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIlsiK3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJ2Iit0fSkrIl0ifSkuam9pbigpLCIpfWVsc2V7Yi5wdXNoKCIsUy5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgpO3JldHVybiBlLnJldmVyc2UoKSwiWyIrZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInYiK3R9KSsiXSJ9KS5qb2luKCksIil9fX0pO2Z1bmN0aW9uICIsaSwiKGFycmF5LGxldmVsKXt2YXIgdmVydHM9W10sY2VsbHM9W107Y29udG91cihhcnJheSx2ZXJ0cyxjZWxscyxsZXZlbCk7cmV0dXJuIHtwb3NpdGlvbnM6dmVydHMsY2VsbHM6Y2VsbHN9O30gcmV0dXJuICIsaSwiOyIpO2Zvcih2YXIgYz0wO2M8aC5sZW5ndGg7KytjKW4ucHVzaChoW2NdLmpvaW4oIiIpKTt2YXIgQz1uZXcgRnVuY3Rpb24oImdlbkNvbnRvdXIiLG4uam9pbigiIikpO3JldHVybiBDKGEpfWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9bCh0LGUpLG49ci5sZW5ndGgsaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobiksYT0wO24+YTsrK2EpaVthXT1bclthXV0sb1thXT1bYV07cmV0dXJue3Bvc2l0aW9uczppLGNlbGxzOm99fWZ1bmN0aW9uIG8odCxlKXtpZih0LmRpbWVuc2lvbjw9MClyZXR1cm57cG9zaXRpb25zOltdLGNlbGxzOltdfTtpZigxPT09dC5kaW1lbnNpb24pcmV0dXJuIGkodCxlKTt2YXIgcj10Lm9yZGVyLmpvaW4oKSsiLSIrdC5kdHlwZSxvPWNbcl0sZT0rZXx8MDtyZXR1cm4gb3x8KG89Y1tyXT1uKHQub3JkZXIsdC5kdHlwZSkpLG8odCxlKX1lLmV4cG9ydHM9bzt2YXIgYT10KCJuZGFycmF5LWV4dHJhY3QtY29udG91ciIpLHM9dCgidHJpYW5ndWxhdGUtaHlwZXJjdWJlIiksbD10KCJ6ZXJvLWNyb3NzaW5ncyIpLGM9e319LHsibmRhcnJheS1leHRyYWN0LWNvbnRvdXIiOjIyMSwidHJpYW5ndWxhdGUtaHlwZXJjdWJlIjoyMjYsInplcm8tY3Jvc3NpbmdzIjoyMjh9XSwyMzA6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBlPXQuY2VsbHMscj10LnBvc2l0aW9ucyxuPW5ldyBGbG9hdDMyQXJyYXkoNiplLmxlbmd0aCksaT0wLG89MCxhPTA7YTxlLmxlbmd0aDsrK2EpZm9yKHZhciBzPWVbYV0sbD0wOzM+bDsrK2wpe3ZhciBjPXJbc1tsXV07bltpKytdPWNbMF0sbltpKytdPWNbMV0rMS40LG89TWF0aC5tYXgoY1swXSxvKX1yZXR1cm57ZGF0YTpuLHNoYXBlOm99fWZ1bmN0aW9uIGkodCxlKXt2YXIgcj1zW3RdO3J8fChyPXNbdF09eyIgIjp7ZGF0YTpuZXcgRmxvYXQzMkFycmF5KDApLHNoYXBlOi4yfX0pO3ZhciBhPXJbZV07aWYoIWEpaWYoZS5sZW5ndGg8PTF8fCEvXGQvLnRlc3QoZSkpYT1yW2VdPW4obyhlLHt0cmlhbmdsZXM6ITAsZm9udDp0LHRleHRBbGlnbjoibGVmdCIsdGV4dEJhc2VsaW5lOiJhbHBoYWJldGljIn0pKTtlbHNle2Zvcih2YXIgbD1lLnNwbGl0KC8oXGR8XHMpLyksYz1uZXcgQXJyYXkobC5sZW5ndGgpLHU9MCxoPTAsZj0wO2Y8bC5sZW5ndGg7KytmKWNbZl09aSh0LGxbZl0pLHUrPWNbZl0uZGF0YS5sZW5ndGgsaCs9Y1tmXS5zaGFwZSxmPjAmJihoKz0uMDIpO2Zvcih2YXIgZD1uZXcgRmxvYXQzMkFycmF5KHUpLHA9MCxnPS0uNSpoLGY9MDtmPGMubGVuZ3RoOysrZil7Zm9yKHZhciB2PWNbZl0uZGF0YSxtPTA7bTx2Lmxlbmd0aDttKz0yKWRbcCsrXT12W21dK2csZFtwKytdPXZbbSsxXTtnKz1jW2ZdLnNoYXBlKy4wMn1hPXJbZV09e2RhdGE6ZCxzaGFwZTpofX1yZXR1cm4gYX1lLmV4cG9ydHM9aTt2YXIgbz10KCJ2ZWN0b3JpemUtdGV4dCIpLGE9d2luZG93fHxyLmdsb2JhbHx8e30scz1hLl9fVEVYVF9DQUNIRXx8e307YS5fX1RFWFRfQ0FDSEU9e319KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9LHtfcHJvY2Vzczo1NSwidmVjdG9yaXplLXRleHQiOjIzN31dLDIzMTpbZnVuY3Rpb24oZSxyLG4peyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtpZih0PXQ/dDoiIixyPXJ8fHt9LHQgaW5zdGFuY2VvZiBlKXJldHVybiB0O2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZSh0LHIpO3ZhciBpPW4odCk7dGhpcy5fb3JpZ2luYWxJbnB1dD10LHRoaXMuX3I9aS5yLHRoaXMuX2c9aS5nLHRoaXMuX2I9aS5iLHRoaXMuX2E9aS5hLHRoaXMuX3JvdW5kQT1VKDEwMCp0aGlzLl9hKS8xMDAsdGhpcy5fZm9ybWF0PXIuZm9ybWF0fHxpLmZvcm1hdCx0aGlzLl9ncmFkaWVudFR5cGU9ci5ncmFkaWVudFR5cGUsdGhpcy5fcjwxJiYodGhpcy5fcj1VKHRoaXMuX3IpKSx0aGlzLl9nPDEmJih0aGlzLl9nPVUodGhpcy5fZykpLHRoaXMuX2I8MSYmKHRoaXMuX2I9VSh0aGlzLl9iKSksdGhpcy5fb2s9aS5vayx0aGlzLl90Y19pZD1EKyt9ZnVuY3Rpb24gbih0KXt2YXIgZT17cjowLGc6MCxiOjB9LHI9MSxuPSExLG89ITE7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYodD1JKHQpKSwib2JqZWN0Ij09dHlwZW9mIHQmJih0Lmhhc093blByb3BlcnR5KCJyIikmJnQuaGFzT3duUHJvcGVydHkoImciKSYmdC5oYXNPd25Qcm9wZXJ0eSgiYiIpPyhlPWkodC5yLHQuZyx0LmIpLG49ITAsbz0iJSI9PT1TdHJpbmcodC5yKS5zdWJzdHIoLTEpPyJwcmdiIjoicmdiIik6dC5oYXNPd25Qcm9wZXJ0eSgiaCIpJiZ0Lmhhc093blByb3BlcnR5KCJzIikmJnQuaGFzT3duUHJvcGVydHkoInYiKT8odC5zPXoodC5zKSx0LnY9eih0LnYpLGU9bCh0LmgsdC5zLHQudiksbj0hMCxvPSJoc3YiKTp0Lmhhc093blByb3BlcnR5KCJoIikmJnQuaGFzT3duUHJvcGVydHkoInMiKSYmdC5oYXNPd25Qcm9wZXJ0eSgibCIpJiYodC5zPXoodC5zKSx0Lmw9eih0LmwpLGU9YSh0LmgsdC5zLHQubCksbj0hMCxvPSJoc2wiKSx0Lmhhc093blByb3BlcnR5KCJhIikmJihyPXQuYSkpLHI9TShyKSx7b2s6bixmb3JtYXQ6dC5mb3JtYXR8fG8scjpWKDI1NSxxKGUuciwwKSksZzpWKDI1NSxxKGUuZywwKSksYjpWKDI1NSxxKGUuYiwwKSksYTpyfX1mdW5jdGlvbiBpKHQsZSxyKXtyZXR1cm57cjoyNTUqVCh0LDI1NSksZzoyNTUqVChlLDI1NSksYjoyNTUqVChyLDI1NSl9fWZ1bmN0aW9uIG8odCxlLHIpe3Q9VCh0LDI1NSksZT1UKGUsMjU1KSxyPVQociwyNTUpO3ZhciBuLGksbz1xKHQsZSxyKSxhPVYodCxlLHIpLHM9KG8rYSkvMjtpZihvPT1hKW49aT0wO2Vsc2V7dmFyIGw9by1hO3N3aXRjaChpPXM+LjU/bC8oMi1vLWEpOmwvKG8rYSksbyl7Y2FzZSB0Om49KGUtcikvbCsocj5lPzY6MCk7YnJlYWs7Y2FzZSBlOm49KHItdCkvbCsyO2JyZWFrO2Nhc2UgcjpuPSh0LWUpL2wrNH1uLz02fXJldHVybntoOm4sczppLGw6c319ZnVuY3Rpb24gYSh0LGUscil7ZnVuY3Rpb24gbih0LGUscil7cmV0dXJuIDA+ciYmKHIrPTEpLHI+MSYmKHItPTEpLDEvNj5yP3QrNiooZS10KSpyOi41PnI/ZToyLzM+cj90KyhlLXQpKigyLzMtcikqNjp0fXZhciBpLG8sYTtpZih0PVQodCwzNjApLGU9VChlLDEwMCkscj1UKHIsMTAwKSwwPT09ZSlpPW89YT1yO2Vsc2V7dmFyIHM9LjU+cj9yKigxK2UpOnIrZS1yKmUsbD0yKnItcztpPW4obCxzLHQrMS8zKSxvPW4obCxzLHQpLGE9bihsLHMsdC0xLzMpfXJldHVybntyOjI1NSppLGc6MjU1Km8sYjoyNTUqYX19ZnVuY3Rpb24gcyh0LGUscil7dD1UKHQsMjU1KSxlPVQoZSwyNTUpLHI9VChyLDI1NSk7dmFyIG4saSxvPXEodCxlLHIpLGE9Vih0LGUscikscz1vLGw9by1hO2lmKGk9MD09PW8/MDpsL28sbz09YSluPTA7ZWxzZXtzd2l0Y2gobyl7Y2FzZSB0Om49KGUtcikvbCsocj5lPzY6MCk7YnJlYWs7Y2FzZSBlOm49KHItdCkvbCsyO2JyZWFrO2Nhc2UgcjpuPSh0LWUpL2wrNH1uLz02fXJldHVybntoOm4sczppLHY6c319ZnVuY3Rpb24gbCh0LGUscil7dD02KlQodCwzNjApLGU9VChlLDEwMCkscj1UKHIsMTAwKTt2YXIgbj1CLmZsb29yKHQpLGk9dC1uLG89ciooMS1lKSxhPXIqKDEtaSplKSxzPXIqKDEtKDEtaSkqZSksbD1uJTYsYz1bcixhLG8sbyxzLHJdW2xdLHU9W3MscixyLGEsbyxvXVtsXSxoPVtvLG8scyxyLHIsYV1bbF07cmV0dXJue3I6MjU1KmMsZzoyNTUqdSxiOjI1NSpofX1mdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBpPVtQKFUodCkudG9TdHJpbmcoMTYpKSxQKFUoZSkudG9TdHJpbmcoMTYpKSxQKFUocikudG9TdHJpbmcoMTYpKV07cmV0dXJuIG4mJmlbMF0uY2hhckF0KDApPT1pWzBdLmNoYXJBdCgxKSYmaVsxXS5jaGFyQXQoMCk9PWlbMV0uY2hhckF0KDEpJiZpWzJdLmNoYXJBdCgwKT09aVsyXS5jaGFyQXQoMSk/aVswXS5jaGFyQXQoMCkraVsxXS5jaGFyQXQoMCkraVsyXS5jaGFyQXQoMCk6aS5qb2luKCIiKX1mdW5jdGlvbiB1KHQsZSxyLG4pe3ZhciBpPVtQKFIobikpLFAoVSh0KS50b1N0cmluZygxNikpLFAoVShlKS50b1N0cmluZygxNikpLFAoVShyKS50b1N0cmluZygxNikpXTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBoKHQscil7cj0wPT09cj8wOnJ8fDEwO3ZhciBuPWUodCkudG9Ic2woKTtyZXR1cm4gbi5zLT1yLzEwMCxuLnM9RShuLnMpLGUobil9ZnVuY3Rpb24gZih0LHIpe3I9MD09PXI/MDpyfHwxMDt2YXIgbj1lKHQpLnRvSHNsKCk7cmV0dXJuIG4ucys9ci8xMDAsbi5zPUUobi5zKSxlKG4pfWZ1bmN0aW9uIGQodCl7cmV0dXJuIGUodCkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0aW9uIHAodCxyKXtyPTA9PT1yPzA6cnx8MTA7dmFyIG49ZSh0KS50b0hzbCgpO3JldHVybiBuLmwrPXIvMTAwLG4ubD1FKG4ubCksZShuKX1mdW5jdGlvbiBnKHQscil7cj0wPT09cj8wOnJ8fDEwO3ZhciBuPWUodCkudG9SZ2IoKTtyZXR1cm4gbi5yPXEoMCxWKDI1NSxuLnItVSgyNTUqLShyLzEwMCkpKSksbi5nPXEoMCxWKDI1NSxuLmctVSgyNTUqLShyLzEwMCkpKSksbi5iPXEoMCxWKDI1NSxuLmItVSgyNTUqLShyLzEwMCkpKSksZShuKX1mdW5jdGlvbiB2KHQscil7cj0wPT09cj8wOnJ8fDEwO3ZhciBuPWUodCkudG9Ic2woKTtyZXR1cm4gbi5sLT1yLzEwMCxuLmw9RShuLmwpLGUobil9ZnVuY3Rpb24gbSh0LHIpe3ZhciBuPWUodCkudG9Ic2woKSxpPShVKG4uaCkrciklMzYwO3JldHVybiBuLmg9MD5pPzM2MCtpOmksZShuKX1mdW5jdGlvbiB5KHQpe3ZhciByPWUodCkudG9Ic2woKTtyZXR1cm4gci5oPShyLmgrMTgwKSUzNjAsZShyKX1mdW5jdGlvbiBiKHQpe3ZhciByPWUodCkudG9Ic2woKSxuPXIuaDtyZXR1cm5bZSh0KSxlKHtoOihuKzEyMCklMzYwLHM6ci5zLGw6ci5sfSksZSh7aDoobisyNDApJTM2MCxzOnIucyxsOnIubH0pXX1mdW5jdGlvbiB4KHQpe3ZhciByPWUodCkudG9Ic2woKSxuPXIuaDtyZXR1cm5bZSh0KSxlKHtoOihuKzkwKSUzNjAsczpyLnMsbDpyLmx9KSxlKHtoOihuKzE4MCklMzYwLHM6ci5zLGw6ci5sfSksZSh7aDoobisyNzApJTM2MCxzOnIucyxsOnIubH0pXX1mdW5jdGlvbiBfKHQpe3ZhciByPWUodCkudG9Ic2woKSxuPXIuaDtyZXR1cm5bZSh0KSxlKHtoOihuKzcyKSUzNjAsczpyLnMsbDpyLmx9KSxlKHtoOihuKzIxNiklMzYwLHM6ci5zLGw6ci5sfSldfWZ1bmN0aW9uIHcodCxyLG4pe3I9cnx8NixuPW58fDMwO3ZhciBpPWUodCkudG9Ic2woKSxvPTM2MC9uLGE9W2UodCldO2ZvcihpLmg9KGkuaC0obypyPj4xKSs3MjApJTM2MDstLXI7KWkuaD0oaS5oK28pJTM2MCxhLnB1c2goZShpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQSh0LHIpe3I9cnx8Njtmb3IodmFyIG49ZSh0KS50b0hzdigpLGk9bi5oLG89bi5zLGE9bi52LHM9W10sbD0xL3I7ci0tOylzLnB1c2goZSh7aDppLHM6byx2OmF9KSksYT0oYStsKSUxO3JldHVybiBzfWZ1bmN0aW9uIGsodCl7dmFyIGU9e307Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbdFtyXV09cik7cmV0dXJuIGV9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gdD1wYXJzZUZsb2F0KHQpLChpc05hTih0KXx8MD50fHx0PjEpJiYodD0xKSx0fWZ1bmN0aW9uIFQodCxlKXtTKHQpJiYodD0iMTAwJSIpO3ZhciByPUModCk7cmV0dXJuIHQ9VihlLHEoMCxwYXJzZUZsb2F0KHQpKSksciYmKHQ9cGFyc2VJbnQodCplLDEwKS8xMDApLEIuYWJzKHQtZSk8MWUtNj8xOnQlZS9wYXJzZUZsb2F0KGUpfWZ1bmN0aW9uIEUodCl7cmV0dXJuIFYoMSxxKDAsdCkpfWZ1bmN0aW9uIEwodCl7cmV0dXJuIHBhcnNlSW50KHQsMTYpfWZ1bmN0aW9uIFModCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYtMSE9dC5pbmRleE9mKCIuIikmJjE9PT1wYXJzZUZsb2F0KHQpfWZ1bmN0aW9uIEModCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYtMSE9dC5pbmRleE9mKCIlIil9ZnVuY3Rpb24gUCh0KXtyZXR1cm4gMT09dC5sZW5ndGg/IjAiK3Q6IiIrdH1mdW5jdGlvbiB6KHQpe3JldHVybiAxPj10JiYodD0xMDAqdCsiJSIpLHR9ZnVuY3Rpb24gUih0KXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqcGFyc2VGbG9hdCh0KSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIE8odCl7cmV0dXJuIEwodCkvMjU1fWZ1bmN0aW9uIEkodCl7dD10LnJlcGxhY2UoaiwiIikucmVwbGFjZShGLCIiKS50b0xvd2VyQ2FzZSgpO3ZhciBlPSExO2lmKEdbdF0pdD1HW3RdLGU9ITA7ZWxzZSBpZigidHJhbnNwYXJlbnQiPT10KXJldHVybntyOjAsZzowLGI6MCxhOjAsZm9ybWF0OiJuYW1lIn07dmFyIHI7cmV0dXJuKHI9WC5yZ2IuZXhlYyh0KSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdfToocj1YLnJnYmEuZXhlYyh0KSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdLGE6cls0XX06KHI9WC5oc2wuZXhlYyh0KSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdfToocj1YLmhzbGEuZXhlYyh0KSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdLGE6cls0XX06KHI9WC5oc3YuZXhlYyh0KSk/e2g6clsxXSxzOnJbMl0sdjpyWzNdfToocj1YLmhzdmEuZXhlYyh0KSk/e2g6clsxXSxzOnJbMl0sdjpyWzNdLGE6cls0XX06KHI9WC5oZXg4LmV4ZWModCkpP3thOk8oclsxXSkscjpMKHJbMl0pLGc6TChyWzNdKSxiOkwocls0XSksZm9ybWF0OmU/Im5hbWUiOiJoZXg4In06KHI9WC5oZXg2LmV4ZWModCkpP3tyOkwoclsxXSksZzpMKHJbMl0pLGI6TChyWzNdKSxmb3JtYXQ6ZT8ibmFtZSI6ImhleCJ9OihyPVguaGV4My5leGVjKHQpKT97cjpMKHJbMV0rIiIrclsxXSksZzpMKHJbMl0rIiIrclsyXSksYjpMKHJbM10rIiIrclszXSksZm9ybWF0OmU/Im5hbWUiOiJoZXgifTohMX1mdW5jdGlvbiBOKHQpe3ZhciBlLHI7cmV0dXJuIHQ9dHx8e2xldmVsOiJBQSIsc2l6ZToic21hbGwifSxlPSh0LmxldmVsfHwiQUEiKS50b1VwcGVyQ2FzZSgpLHI9KHQuc2l6ZXx8InNtYWxsIikudG9Mb3dlckNhc2UoKSwiQUEiIT09ZSYmIkFBQSIhPT1lJiYoZT0iQUEiKSwic21hbGwiIT09ciYmImxhcmdlIiE9PXImJihyPSJzbWFsbCIpLHtsZXZlbDplLHNpemU6cn19dmFyIGo9L15ccysvLEY9L1xzKyQvLEQ9MCxCPU1hdGgsVT1CLnJvdW5kLFY9Qi5taW4scT1CLm1heCxIPUIucmFuZG9tO2UucHJvdG90eXBlPXtpc0Rhcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4fSxpc0xpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFsSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dH0sZ2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1hdH0sZ2V0QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0bmVzczpmdW5jdGlvbigpe3ZhciB0PXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KnQucis1ODcqdC5nKzExNCp0LmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4saSxvLGE9dGhpcy50b1JnYigpO3JldHVybiB0PWEuci8yNTUsZT1hLmcvMjU1LHI9YS5iLzI1NSxuPS4wMzkyOD49dD90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCksaT0uMDM5Mjg+PWU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpLG89LjAzOTI4Pj1yP3IvMTIuOTI6TWF0aC5wb3coKHIrLjA1NSkvMS4wNTUsMi40KSwuMjEyNipuKy43MTUyKmkrLjA3MjIqb30sc2V0QWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2E9TSh0KSx0aGlzLl9yb3VuZEE9VSgxMDAqdGhpcy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9uKCl7dmFyIHQ9cyh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKnQuaCxzOnQucyx2OnQudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciB0PXModGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLGU9VSgzNjAqdC5oKSxyPVUoMTAwKnQucyksbj1VKDEwMCp0LnYpO3JldHVybiAxPT10aGlzLl9hPyJoc3YoIitlKyIsICIrcisiJSwgIituKyIlKSI6ImhzdmEoIitlKyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSHNsOmZ1bmN0aW9uKCl7dmFyIHQ9byh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKnQuaCxzOnQucyxsOnQubCxhOnRoaXMuX2F9fSx0b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciB0PW8odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLGU9VSgzNjAqdC5oKSxyPVUoMTAwKnQucyksbj1VKDEwMCp0LmwpO3JldHVybiAxPT10aGlzLl9hPyJoc2woIitlKyIsICIrcisiJSwgIituKyIlKSI6ImhzbGEoIitlKyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9uKHQpe3JldHVybiBjKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHQpfSx0b0hleFN0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4iIyIrdGhpcy50b0hleCh0KX0sdG9IZXg4OmZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSl9LHRvSGV4OFN0cmluZzpmdW5jdGlvbigpe3JldHVybiIjIit0aGlzLnRvSGV4OCgpfSx0b1JnYjpmdW5jdGlvbigpe3JldHVybntyOlUodGhpcy5fciksZzpVKHRoaXMuX2cpLGI6VSh0aGlzLl9iKSxhOnRoaXMuX2F9fSx0b1JnYlN0cmluZzpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hPyJyZ2IoIitVKHRoaXMuX3IpKyIsICIrVSh0aGlzLl9nKSsiLCAiK1UodGhpcy5fYikrIikiOiJyZ2JhKCIrVSh0aGlzLl9yKSsiLCAiK1UodGhpcy5fZykrIiwgIitVKHRoaXMuX2IpKyIsICIrdGhpcy5fcm91bmRBKyIpIn0sdG9QZXJjZW50YWdlUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6VSgxMDAqVCh0aGlzLl9yLDI1NSkpKyIlIixnOlUoMTAwKlQodGhpcy5fZywyNTUpKSsiJSIsYjpVKDEwMCpUKHRoaXMuX2IsMjU1KSkrIiUiLGE6dGhpcy5fYX19LHRvUGVyY2VudGFnZVJnYlN0cmluZzpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hPyJyZ2IoIitVKDEwMCpUKHRoaXMuX3IsMjU1KSkrIiUsICIrVSgxMDAqVCh0aGlzLl9nLDI1NSkpKyIlLCAiK1UoMTAwKlQodGhpcy5fYiwyNTUpKSsiJSkiOiJyZ2JhKCIrVSgxMDAqVCh0aGlzLl9yLDI1NSkpKyIlLCAiK1UoMTAwKlQodGhpcy5fZywyNTUpKSsiJSwgIitVKDEwMCpUKHRoaXMuX2IsMjU1KSkrIiUsICIrdGhpcy5fcm91bmRBKyIpIn0sdG9OYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9hPyJ0cmFuc3BhcmVudCI6dGhpcy5fYTwxPyExOllbYyh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMX0sdG9GaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIHI9IiMiK3UodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSksbj1yLGk9dGhpcy5fZ3JhZGllbnRUeXBlPyJHcmFkaWVudFR5cGUgPSAxLCAiOiIiO2lmKHQpe3ZhciBvPWUodCk7bj1vLnRvSGV4OFN0cmluZygpfXJldHVybiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIitpKyJzdGFydENvbG9yc3RyPSIrcisiLGVuZENvbG9yc3RyPSIrbisiKSJ9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPSEhdDt0PXR8fHRoaXMuX2Zvcm1hdDt2YXIgcj0hMSxuPXRoaXMuX2E8MSYmdGhpcy5fYT49MCxpPSFlJiZuJiYoImhleCI9PT10fHwiaGV4NiI9PT10fHwiaGV4MyI9PT10fHwibmFtZSI9PT10KTtyZXR1cm4gaT8ibmFtZSI9PT10JiYwPT09dGhpcy5fYT90aGlzLnRvTmFtZSgpOnRoaXMudG9SZ2JTdHJpbmcoKTooInJnYiI9PT10JiYocj10aGlzLnRvUmdiU3RyaW5nKCkpLCJwcmdiIj09PXQmJihyPXRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCkpLCJoZXgiIT09dCYmImhleDYiIT09dHx8KHI9dGhpcy50b0hleFN0cmluZygpKSwiaGV4MyI9PT10JiYocj10aGlzLnRvSGV4U3RyaW5nKCEwKSksImhleDgiPT09dCYmKHI9dGhpcy50b0hleDhTdHJpbmcoKSksIm5hbWUiPT09dCYmKHI9dGhpcy50b05hbWUoKSksImhzbCI9PT10JiYocj10aGlzLnRvSHNsU3RyaW5nKCkpLCJoc3YiPT09dCYmKHI9dGhpcy50b0hzdlN0cmluZygpKSxyfHx0aGlzLnRvSGV4U3RyaW5nKCkpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBlKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbih0LGUpe3ZhciByPXQuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwoZSkpKTtyZXR1cm4gdGhpcy5fcj1yLl9yLHRoaXMuX2c9ci5fZyx0aGlzLl9iPXIuX2IsdGhpcy5zZXRBbHBoYShyLl9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHAsYXJndW1lbnRzKX0sYnJpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZyxhcmd1bWVudHMpfSxkYXJrZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24odixhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGgsYXJndW1lbnRzKX0sc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZixhcmd1bWVudHMpfSxncmV5c2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZCxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKG0sYXJndW1lbnRzKX0sX2FwcGx5Q29tYmluYXRpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbChlKSkpfSxhbmFsb2dvdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih3LGFyZ3VtZW50cyl9LGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih5LGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihBLGFyZ3VtZW50cyl9LHNwbGl0Y29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKF8sYXJndW1lbnRzKX0sdHJpYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihiLGFyZ3VtZW50cyl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHgsYXJndW1lbnRzKX19LGUuZnJvbVJhdGlvPWZ1bmN0aW9uKHQscil7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj17fTtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiYoImEiPT09aT9uW2ldPXRbaV06bltpXT16KHRbaV0pKTt0PW59cmV0dXJuIGUodCxyKX0sZS5lcXVhbHM9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmcj9lKHQpLnRvUmdiU3RyaW5nKCk9PWUocikudG9SZ2JTdHJpbmcoKTohMX0sZS5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gZS5mcm9tUmF0aW8oe3I6SCgpLGc6SCgpLGI6SCgpfSl9LGUubWl4PWZ1bmN0aW9uKHQscixuKXtuPTA9PT1uPzA6bnx8NTA7dmFyIGksbz1lKHQpLnRvUmdiKCksYT1lKHIpLnRvUmdiKCkscz1uLzEwMCxsPTIqcy0xLGM9YS5hLW8uYTtpPWwqYz09LTE/bDoobCtjKS8oMStsKmMpLGk9KGkrMSkvMjt2YXIgdT0xLWksaD17cjphLnIqaStvLnIqdSxnOmEuZyppK28uZyp1LGI6YS5iKmkrby5iKnUsYTphLmEqcytvLmEqKDEtcyl9O3JldHVybiBlKGgpfSxlLnJlYWRhYmlsaXR5PWZ1bmN0aW9uKHQscil7dmFyIG49ZSh0KSxpPWUocik7cmV0dXJuKE1hdGgubWF4KG4uZ2V0THVtaW5hbmNlKCksaS5nZXRMdW1pbmFuY2UoKSkrLjA1KS8oTWF0aC5taW4obi5nZXRMdW1pbmFuY2UoKSxpLmdldEx1bWluYW5jZSgpKSsuMDUpfSxlLmlzUmVhZGFibGU9ZnVuY3Rpb24odCxyLG4pe3ZhciBpLG8sYT1lLnJlYWRhYmlsaXR5KHQscik7c3dpdGNoKG89ITEsaT1OKG4pLGkubGV2ZWwraS5zaXplKXtjYXNlIkFBc21hbGwiOmNhc2UiQUFBbGFyZ2UiOm89YT49NC41O2JyZWFrO2Nhc2UiQUFsYXJnZSI6bz1hPj0zO2JyZWFrO2Nhc2UiQUFBc21hbGwiOm89YT49N31yZXR1cm4gb30sZS5tb3N0UmVhZGFibGU9ZnVuY3Rpb24odCxyLG4pe3ZhciBpLG8sYSxzLGw9bnVsbCxjPTA7bj1ufHx7fSxvPW4uaW5jbHVkZUZhbGxiYWNrQ29sb3JzLGE9bi5sZXZlbCxzPW4uc2l6ZTtmb3IodmFyIHU9MDt1PHIubGVuZ3RoO3UrKylpPWUucmVhZGFiaWxpdHkodCxyW3VdKSxpPmMmJihjPWksbD1lKHJbdV0pKTtyZXR1cm4gZS5pc1JlYWRhYmxlKHQsbCx7bGV2ZWw6YSxzaXplOnN9KXx8IW8/bDoobi5pbmNsdWRlRmFsbGJhY2tDb2xvcnM9ITEsZS5tb3N0UmVhZGFibGUodCxbIiNmZmYiLCIjMDAwIl0sbikpfTt2YXIgRz1lLm5hbWVzPXthbGljZWJsdWU6ImYwZjhmZiIsYW50aXF1ZXdoaXRlOiJmYWViZDciLGFxdWE6IjBmZiIsYXF1YW1hcmluZToiN2ZmZmQ0IixhenVyZToiZjBmZmZmIixiZWlnZToiZjVmNWRjIixiaXNxdWU6ImZmZTRjNCIsYmxhY2s6IjAwMCIsYmxhbmNoZWRhbG1vbmQ6ImZmZWJjZCIsYmx1ZToiMDBmIixibHVldmlvbGV0OiI4YTJiZTIiLGJyb3duOiJhNTJhMmEiLGJ1cmx5d29vZDoiZGViODg3IixidXJudHNpZW5uYToiZWE3ZTVkIixjYWRldGJsdWU6IjVmOWVhMCIsY2hhcnRyZXVzZToiN2ZmZjAwIixjaG9jb2xhdGU6ImQyNjkxZSIsY29yYWw6ImZmN2Y1MCIsY29ybmZsb3dlcmJsdWU6IjY0OTVlZCIsY29ybnNpbGs6ImZmZjhkYyIsY3JpbXNvbjoiZGMxNDNjIixjeWFuOiIwZmYiLGRhcmtibHVlOiIwMDAwOGIiLGRhcmtjeWFuOiIwMDhiOGIiLGRhcmtnb2xkZW5yb2Q6ImI4ODYwYiIsZGFya2dyYXk6ImE5YTlhOSIsZGFya2dyZWVuOiIwMDY0MDAiLGRhcmtncmV5OiJhOWE5YTkiLGRhcmtraGFraToiYmRiNzZiIixkYXJrbWFnZW50YToiOGIwMDhiIixkYXJrb2xpdmVncmVlbjoiNTU2YjJmIixkYXJrb3JhbmdlOiJmZjhjMDAiLGRhcmtvcmNoaWQ6Ijk5MzJjYyIsZGFya3JlZDoiOGIwMDAwIixkYXJrc2FsbW9uOiJlOTk2N2EiLGRhcmtzZWFncmVlbjoiOGZiYzhmIixkYXJrc2xhdGVibHVlOiI0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IjJmNGY0ZiIsZGFya3NsYXRlZ3JleToiMmY0ZjRmIixkYXJrdHVycXVvaXNlOiIwMGNlZDEiLGRhcmt2aW9sZXQ6Ijk0MDBkMyIsZGVlcHBpbms6ImZmMTQ5MyIsZGVlcHNreWJsdWU6IjAwYmZmZiIsZGltZ3JheToiNjk2OTY5IixkaW1ncmV5OiI2OTY5NjkiLGRvZGdlcmJsdWU6IjFlOTBmZiIsZmlyZWJyaWNrOiJiMjIyMjIiLGZsb3JhbHdoaXRlOiJmZmZhZjAiLGZvcmVzdGdyZWVuOiIyMjhiMjIiLGZ1Y2hzaWE6ImYwZiIsZ2FpbnNib3JvOiJkY2RjZGMiLGdob3N0d2hpdGU6ImY4ZjhmZiIsZ29sZDoiZmZkNzAwIixnb2xkZW5yb2Q6ImRhYTUyMCIsZ3JheToiODA4MDgwIixncmVlbjoiMDA4MDAwIixncmVlbnllbGxvdzoiYWRmZjJmIixncmV5OiI4MDgwODAiLGhvbmV5ZGV3OiJmMGZmZjAiLGhvdHBpbms6ImZmNjliNCIsaW5kaWFucmVkOiJjZDVjNWMiLGluZGlnbzoiNGIwMDgyIixpdm9yeToiZmZmZmYwIixraGFraToiZjBlNjhjIixsYXZlbmRlcjoiZTZlNmZhIixsYXZlbmRlcmJsdXNoOiJmZmYwZjUiLGxhd25ncmVlbjoiN2NmYzAwIixsZW1vbmNoaWZmb246ImZmZmFjZCIsbGlnaHRibHVlOiJhZGQ4ZTYiLGxpZ2h0Y29yYWw6ImYwODA4MCIsbGlnaHRjeWFuOiJlMGZmZmYiLGxpZ2h0Z29sZGVucm9keWVsbG93OiJmYWZhZDIiLGxpZ2h0Z3JheToiZDNkM2QzIixsaWdodGdyZWVuOiI5MGVlOTAiLGxpZ2h0Z3JleToiZDNkM2QzIixsaWdodHBpbms6ImZmYjZjMSIsbGlnaHRzYWxtb246ImZmYTA3YSIsbGlnaHRzZWFncmVlbjoiMjBiMmFhIixsaWdodHNreWJsdWU6Ijg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6Ijc4OSIsbGlnaHRzbGF0ZWdyZXk6Ijc4OSIsbGlnaHRzdGVlbGJsdWU6ImIwYzRkZSIsbGlnaHR5ZWxsb3c6ImZmZmZlMCIsbGltZToiMGYwIixsaW1lZ3JlZW46IjMyY2QzMiIsbGluZW46ImZhZjBlNiIsbWFnZW50YToiZjBmIixtYXJvb246IjgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiNjZjZGFhIixtZWRpdW1ibHVlOiIwMDAwY2QiLG1lZGl1bW9yY2hpZDoiYmE1NWQzIixtZWRpdW1wdXJwbGU6IjkzNzBkYiIsbWVkaXVtc2VhZ3JlZW46IjNjYjM3MSIsbWVkaXVtc2xhdGVibHVlOiI3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiNDhkMWNjIixtZWRpdW12aW9sZXRyZWQ6ImM3MTU4NSIsbWlkbmlnaHRibHVlOiIxOTE5NzAiLG1pbnRjcmVhbToiZjVmZmZhIixtaXN0eXJvc2U6ImZmZTRlMSIsbW9jY2FzaW46ImZmZTRiNSIsbmF2YWpvd2hpdGU6ImZmZGVhZCIsbmF2eToiMDAwMDgwIixvbGRsYWNlOiJmZGY1ZTYiLG9saXZlOiI4MDgwMDAiLG9saXZlZHJhYjoiNmI4ZTIzIixvcmFuZ2U6ImZmYTUwMCIsb3JhbmdlcmVkOiJmZjQ1MDAiLG9yY2hpZDoiZGE3MGQ2IixwYWxlZ29sZGVucm9kOiJlZWU4YWEiLHBhbGVncmVlbjoiOThmYjk4IixwYWxldHVycXVvaXNlOiJhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6ImRiNzA5MyIscGFwYXlhd2hpcDoiZmZlZmQ1IixwZWFjaHB1ZmY6ImZmZGFiOSIscGVydToiY2Q4NTNmIixwaW5rOiJmZmMwY2IiLHBsdW06ImRkYTBkZCIscG93ZGVyYmx1ZToiYjBlMGU2IixwdXJwbGU6IjgwMDA4MCIscmViZWNjYXB1cnBsZToiNjYzMzk5IixyZWQ6ImYwMCIscm9zeWJyb3duOiJiYzhmOGYiLHJveWFsYmx1ZToiNDE2OWUxIixzYWRkbGVicm93bjoiOGI0NTEzIixzYWxtb246ImZhODA3MiIsc2FuZHlicm93bjoiZjRhNDYwIixzZWFncmVlbjoiMmU4YjU3IixzZWFzaGVsbDoiZmZmNWVlIixzaWVubmE6ImEwNTIyZCIsc2lsdmVyOiJjMGMwYzAiLHNreWJsdWU6Ijg3Y2VlYiIsc2xhdGVibHVlOiI2YTVhY2QiLHNsYXRlZ3JheToiNzA4MDkwIixzbGF0ZWdyZXk6IjcwODA5MCIsc25vdzoiZmZmYWZhIixzcHJpbmdncmVlbjoiMDBmZjdmIixzdGVlbGJsdWU6IjQ2ODJiNCIsdGFuOiJkMmI0OGMiLHRlYWw6IjAwODA4MCIsdGhpc3RsZToiZDhiZmQ4Iix0b21hdG86ImZmNjM0NyIsdHVycXVvaXNlOiI0MGUwZDAiLHZpb2xldDoiZWU4MmVlIix3aGVhdDoiZjVkZWIzIix3aGl0ZToiZmZmIix3aGl0ZXNtb2tlOiJmNWY1ZjUiLHllbGxvdzoiZmYwIix5ZWxsb3dncmVlbjoiOWFjZDMyIn0sWT1lLmhleE5hbWVzPWsoRyksWD1mdW5jdGlvbigpe3ZhciB0PSJbLVxcK10/XFxkKyU/IixlPSJbLVxcK10/XFxkKlxcLlxcZCslPyIscj0iKD86IitlKyIpfCg/OiIrdCsiKSIsbj0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyIsaT0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyI7cmV0dXJue3JnYjpuZXcgUmVnRXhwKCJyZ2IiK24pLHJnYmE6bmV3IFJlZ0V4cCgicmdiYSIraSksaHNsOm5ldyBSZWdFeHAoImhzbCIrbiksaHNsYTpuZXcgUmVnRXhwKCJoc2xhIitpKSxoc3Y6bmV3IFJlZ0V4cCgiaHN2IituKSxoc3ZhOm5ldyBSZWdFeHAoImhzdmEiK2kpLGhleDM6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDY6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvLGhleDg6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkL319KCk7InVuZGVmaW5lZCIhPXR5cGVvZiByJiZyLmV4cG9ydHM/ci5leHBvcnRzPWU6ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYW1kP3QoZnVuY3Rpb24oKXtyZXR1cm4gZX0pOndpbmRvdy50aW55Y29sb3I9ZX0oKX0se31dLDIzMjpbZnVuY3Rpb24oZSxyLG4peyFmdW5jdGlvbihlLGkpeyJvYmplY3QiPT10eXBlb2YgbiYmInVuZGVmaW5lZCIhPXR5cGVvZiByP2kobik6ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYW1kP3QoWyJleHBvcnRzIl0saSk6aShlLnRvcG9qc29uPXt9KX0odGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiByKHQpe2lmKCF0KXJldHVybiBlO3ZhciByLG4saT10LnNjYWxlWzBdLG89dC5zY2FsZVsxXSxhPXQudHJhbnNsYXRlWzBdLHM9dC50cmFuc2xhdGVbMV07cmV0dXJuIGZ1bmN0aW9uKHQsZSl7ZXx8KHI9bj0wKSx0WzBdPShyKz10WzBdKSppK2EsdFsxXT0obis9dFsxXSkqbytzfX1mdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBlO3ZhciByLG4saT10LnNjYWxlWzBdLG89dC5zY2FsZVsxXSxhPXQudHJhbnNsYXRlWzBdLHM9dC50cmFuc2xhdGVbMV07cmV0dXJuIGZ1bmN0aW9uKHQsZSl7ZXx8KHI9bj0wKTt2YXIgbD0odFswXS1hKS9pfDAsYz0odFsxXS1zKS9vfDA7dFswXT1sLXIsdFsxXT1jLW4scj1sLG49Y319ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcixuPXQubGVuZ3RoLGk9bi1lO2k8LS1uOylyPXRbaV0sdFtpKytdPXRbbl0sdFtuXT1yfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO24+cjspe3ZhciBpPXIrbj4+PjE7dFtpXTxlP3I9aSsxOm49aX1yZXR1cm4gcn1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT1lLnR5cGU/e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczplLmdlb21ldHJpZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBzKHQsZSl9KX06cyh0LGUpfWZ1bmN0aW9uIHModCxlKXt2YXIgcj17dHlwZToiRmVhdHVyZSIsaWQ6ZS5pZCxwcm9wZXJ0aWVzOmUucHJvcGVydGllc3x8e30sZ2VvbWV0cnk6bCh0LGUpfTtyZXR1cm4gbnVsbD09ZS5pZCYmZGVsZXRlIHIuaWQscn1mdW5jdGlvbiBsKHQsZSl7ZnVuY3Rpb24gbih0LGUpe2UubGVuZ3RoJiZlLnBvcCgpO2Zvcih2YXIgcixuPWhbMD50P350OnRdLG89MCxhPW4ubGVuZ3RoO2E+bzsrK28pZS5wdXNoKHI9bltvXS5zbGljZSgpKSx1KHIsbyk7MD50JiZpKGUsYSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdD10LnNsaWNlKCksdSh0LDApLHR9ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9W10scj0wLGk9dC5sZW5ndGg7aT5yOysrciluKHRbcl0sZSk7cmV0dXJuIGUubGVuZ3RoPDImJmUucHVzaChlWzBdLnNsaWNlKCkpLGV9ZnVuY3Rpb24gcyh0KXtmb3IodmFyIGU9YSh0KTtlLmxlbmd0aDw0OyllLnB1c2goZVswXS5zbGljZSgpKTtyZXR1cm4gZX1mdW5jdGlvbiBsKHQpe3JldHVybiB0Lm1hcChzKX1mdW5jdGlvbiBjKHQpe3ZhciBlPXQudHlwZTtyZXR1cm4iR2VvbWV0cnlDb2xsZWN0aW9uIj09PWU/e3R5cGU6ZSxnZW9tZXRyaWVzOnQuZ2VvbWV0cmllcy5tYXAoYyl9OmUgaW4gZj97dHlwZTplLGNvb3JkaW5hdGVzOmZbZV0odCl9Om51bGx9dmFyIHU9cih0LnRyYW5zZm9ybSksaD10LmFyY3MsZj17UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8odC5jb29yZGluYXRlcyl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29vcmRpbmF0ZXMubWFwKG8pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybiBhKHQuYXJjcyl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4gdC5hcmNzLm1hcChhKX0sUG9seWdvbjpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LmFyY3MpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXJjcy5tYXAobCl9fTtyZXR1cm4gYyhlKX1mdW5jdGlvbiBjKHQsZSl7ZnVuY3Rpb24gcihlKXt2YXIgcixuPXQuYXJjc1swPmU/fmU6ZV0saT1uWzBdO3JldHVybiB0LnRyYW5zZm9ybT8ocj1bMCwwXSxuLmZvckVhY2goZnVuY3Rpb24odCl7clswXSs9dFswXSxyWzFdKz10WzFdfSkpOnI9bltuLmxlbmd0aC0xXSwwPmU/W3IsaV06W2kscl19ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgciBpbiB0KXt2YXIgbj10W3JdO2RlbGV0ZSBlW24uc3RhcnRdLGRlbGV0ZSBuLnN0YXJ0LGRlbGV0ZSBuLmVuZCxuLmZvckVhY2goZnVuY3Rpb24odCl7aVswPnQ/fnQ6dF09MX0pLHMucHVzaChuKX19dmFyIGk9e30sbz17fSxhPXt9LHM9W10sbD0tMTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKHIsbil7dmFyIGksbz10LmFyY3NbMD5yP35yOnJdO28ubGVuZ3RoPDMmJiFvWzFdWzBdJiYhb1sxXVsxXSYmKGk9ZVsrK2xdLGVbbF09cixlW25dPWkpfSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLG4saT1yKHQpLHM9aVswXSxsPWlbMV07aWYoZT1hW3NdKWlmKGRlbGV0ZSBhW2UuZW5kXSxlLnB1c2godCksZS5lbmQ9bCxuPW9bbF0pe2RlbGV0ZSBvW24uc3RhcnRdO3ZhciBjPW49PT1lP2U6ZS5jb25jYXQobik7b1tjLnN0YXJ0PWUuc3RhcnRdPWFbYy5lbmQ9bi5lbmRdPWN9ZWxzZSBvW2Uuc3RhcnRdPWFbZS5lbmRdPWU7ZWxzZSBpZihlPW9bbF0paWYoZGVsZXRlIG9bZS5zdGFydF0sZS51bnNoaWZ0KHQpLGUuc3RhcnQ9cyxuPWFbc10pe2RlbGV0ZSBhW24uZW5kXTt2YXIgdT1uPT09ZT9lOm4uY29uY2F0KGUpO29bdS5zdGFydD1uLnN0YXJ0XT1hW3UuZW5kPWUuZW5kXT11fWVsc2Ugb1tlLnN0YXJ0XT1hW2UuZW5kXT1lO2Vsc2UgZT1bdF0sb1tlLnN0YXJ0PXNdPWFbZS5lbmQ9bF09ZX0pLG4oYSxvKSxuKG8sYSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lbMD50P350OnRdfHxzLnB1c2goW3RdKX0pLHN9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gbCh0LGguYXBwbHkodGhpcyxhcmd1bWVudHMpKX1mdW5jdGlvbiBoKHQsZSxyKXtmdW5jdGlvbiBuKHQpe3ZhciBlPTA+dD9+dDp0Oyh1W2VdfHwodVtlXT1bXSkpLnB1c2goe2k6dCxnOmx9KX1mdW5jdGlvbiBpKHQpe3QuZm9yRWFjaChuKX1mdW5jdGlvbiBvKHQpe3QuZm9yRWFjaChpKX1mdW5jdGlvbiBhKHQpeyJHZW9tZXRyeUNvbGxlY3Rpb24iPT09dC50eXBlP3QuZ2VvbWV0cmllcy5mb3JFYWNoKGEpOnQudHlwZSBpbiBoJiYobD10LGhbdC50eXBlXSh0LmFyY3MpKX12YXIgcz1bXTtpZihhcmd1bWVudHMubGVuZ3RoPjEpe3ZhciBsLHU9W10saD17TGluZVN0cmluZzppLE11bHRpTGluZVN0cmluZzpvLFBvbHlnb246byxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCl7dC5mb3JFYWNoKG8pfX07YShlKSx1LmZvckVhY2goYXJndW1lbnRzLmxlbmd0aDwzP2Z1bmN0aW9uKHQpe3MucHVzaCh0WzBdLmkpfTpmdW5jdGlvbih0KXtyKHRbMF0uZyx0W3QubGVuZ3RoLTFdLmcpJiZzLnB1c2godFswXS5pKX0pfWVsc2UgZm9yKHZhciBmPTAsZD10LmFyY3MubGVuZ3RoO2Q+ZjsrK2Ypcy5wdXNoKGYpO3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGFyY3M6Yyh0LHMpfX1mdW5jdGlvbiBmKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1cm4gTWF0aC5hYnMoKGVbMF0tblswXSkqKHJbMV0tZVsxXSktKGVbMF0tclswXSkqKG5bMV0tZVsxXSkpfWZ1bmN0aW9uIGQodCl7Zm9yKHZhciBlLHI9LTEsbj10Lmxlbmd0aCxpPXRbbi0xXSxvPTA7KytyPG47KWU9aSwKaT10W3JdLG8rPWVbMF0qaVsxXS1lWzFdKmlbMF07cmV0dXJuIG8vMn1mdW5jdGlvbiBwKHQpe3JldHVybiBsKHQsZy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfWZ1bmN0aW9uIGcodCxlKXtmdW5jdGlvbiByKHQpe3QuZm9yRWFjaChmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7KGlbZT0wPmU/fmU6ZV18fChpW2VdPVtdKSkucHVzaCh0KX0pfSksby5wdXNoKHQpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGQobCh0LHt0eXBlOiJQb2x5Z29uIixhcmNzOltlXX0pLmNvb3JkaW5hdGVzWzBdKT4wfXZhciBpPXt9LG89W10sYT1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJQb2x5Z29uIj09PXQudHlwZT9yKHQuYXJjcyk6Ik11bHRpUG9seWdvbiI9PT10LnR5cGUmJnQuYXJjcy5mb3JFYWNoKHIpfSksby5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCF0Ll8pe3ZhciBlPVtdLHI9W3RdO2Zvcih0Ll89MSxhLnB1c2goZSk7dD1yLnBvcCgpOyllLnB1c2godCksdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaChmdW5jdGlvbih0KXtpWzA+dD9+dDp0XS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuX3x8KHQuXz0xLHIucHVzaCh0KSl9KX0pfSl9fSksby5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RlbGV0ZSB0Ll99KSx7dHlwZToiTXVsdGlQb2x5Z29uIixhcmNzOmEubWFwKGZ1bmN0aW9uKGUpe3ZhciByLG89W107aWYoZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaChmdW5jdGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7aVswPnQ/fnQ6dF0ubGVuZ3RoPDImJm8ucHVzaCh0KX0pfSl9KSxvPWModCxvKSwocj1vLmxlbmd0aCk+MSlmb3IodmFyIGEscz1uKGVbMF1bMF0pLGw9MDtyPmw7KytsKWlmKHM9PT1uKG9bbF0pKXthPW9bMF0sb1swXT1vW2xdLG9bbF09YTticmVha31yZXR1cm4gb30pfX1mdW5jdGlvbiB2KHQpe2Z1bmN0aW9uIGUodCxlKXt0LmZvckVhY2goZnVuY3Rpb24odCl7MD50JiYodD1+dCk7dmFyIHI9aVt0XTtyP3IucHVzaChlKTppW3RdPVtlXX0pfWZ1bmN0aW9uIHIodCxyKXt0LmZvckVhY2goZnVuY3Rpb24odCl7ZSh0LHIpfSl9ZnVuY3Rpb24gbih0LGUpeyJHZW9tZXRyeUNvbGxlY3Rpb24iPT09dC50eXBlP3QuZ2VvbWV0cmllcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe24odCxlKX0pOnQudHlwZSBpbiBzJiZzW3QudHlwZV0odC5hcmNzLGUpfXZhciBpPXt9LGE9dC5tYXAoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHM9e0xpbmVTdHJpbmc6ZSxNdWx0aUxpbmVTdHJpbmc6cixQb2x5Z29uOnIsTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IodCxlKX0pfX07dC5mb3JFYWNoKG4pO2Zvcih2YXIgbCBpbiBpKWZvcih2YXIgYz1pW2xdLHU9Yy5sZW5ndGgsaD0wO3U+aDsrK2gpZm9yKHZhciBmPWgrMTt1PmY7KytmKXt2YXIgZCxwPWNbaF0sZz1jW2ZdOyhkPWFbcF0pW2w9byhkLGcpXSE9PWcmJmQuc3BsaWNlKGwsMCxnKSwoZD1hW2ddKVtsPW8oZCxwKV0hPT1wJiZkLnNwbGljZShsLDAscCl9cmV0dXJuIGF9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiB0WzFdWzJdLWVbMV1bMl19ZnVuY3Rpb24geSgpe2Z1bmN0aW9uIHQodCxlKXtmb3IoO2U+MDspe3ZhciByPShlKzE+PjEpLTEsaT1uW3JdO2lmKG0odCxpKT49MClicmVhaztuW2kuXz1lXT1pLG5bdC5fPWU9cl09dH19ZnVuY3Rpb24gZSh0LGUpe2Zvcig7Oyl7dmFyIHI9ZSsxPDwxLG89ci0xLGE9ZSxzPW5bYV07aWYoaT5vJiZtKG5bb10scyk8MCYmKHM9blthPW9dKSxpPnImJm0obltyXSxzKTwwJiYocz1uW2E9cl0pLGE9PT1lKWJyZWFrO25bcy5fPWVdPXMsblt0Ll89ZT1hXT10fX12YXIgcj17fSxuPVtdLGk9MDtyZXR1cm4gci5wdXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0KG5bZS5fPWldPWUsaSsrKSxpfSxyLnBvcD1mdW5jdGlvbigpe2lmKCEoMD49aSkpe3ZhciB0LHI9blswXTtyZXR1cm4tLWk+MCYmKHQ9bltpXSxlKG5bdC5fPTBdPXQsMCkpLHJ9fSxyLnJlbW92ZT1mdW5jdGlvbihyKXt2YXIgbyxhPXIuXztpZihuW2FdPT09cilyZXR1cm4gYSE9PS0taSYmKG89bltpXSwobShvLHIpPDA/dDplKShuW28uXz1hXT1vLGEpKSxhfSxyfWZ1bmN0aW9uIGIodCxlKXtmdW5jdGlvbiBpKHQpe3MucmVtb3ZlKHQpLHRbMV1bMl09ZSh0KSxzLnB1c2godCl9dmFyIG89cih0LnRyYW5zZm9ybSksYT1uKHQudHJhbnNmb3JtKSxzPXkoKTtyZXR1cm4gZXx8KGU9ZiksdC5hcmNzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbixsLGMsdT1bXSxoPTA7Zm9yKG49MCxsPXQubGVuZ3RoO2w+bjsrK24pYz10W25dLG8odFtuXT1bY1swXSxjWzFdLDEvMF0sbik7Zm9yKG49MSxsPXQubGVuZ3RoLTE7bD5uOysrbilyPXQuc2xpY2Uobi0xLG4rMiksclsxXVsyXT1lKHIpLHUucHVzaChyKSxzLnB1c2gocik7Zm9yKG49MCxsPXUubGVuZ3RoO2w+bjsrK24pcj11W25dLHIucHJldmlvdXM9dVtuLTFdLHIubmV4dD11W24rMV07Zm9yKDtyPXMucG9wKCk7KXt2YXIgZj1yLnByZXZpb3VzLGQ9ci5uZXh0O3JbMV1bMl08aD9yWzFdWzJdPWg6aD1yWzFdWzJdLGYmJihmLm5leHQ9ZCxmWzJdPXJbMl0saShmKSksZCYmKGQucHJldmlvdXM9ZixkWzBdPXJbMF0saShkKSl9dC5mb3JFYWNoKGEpfSksdH12YXIgeD0iMS42LjI0Ijt0LnZlcnNpb249eCx0Lm1lc2g9dSx0Lm1lc2hBcmNzPWgsdC5tZXJnZT1wLHQubWVyZ2VBcmNzPWcsdC5mZWF0dXJlPWEsdC5uZWlnaGJvcnM9dix0LnByZXNpbXBsaWZ5PWJ9KX0se31dLDIzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj10KmUsbz1pKnQsYT1vLXQscz1vLWEsbD10LXMsYz1pKmUsdT1jLWUsaD1jLXUsZj1lLWgsZD1uLXMqaCxwPWQtbCpoLGc9cC1zKmYsdj1sKmYtZztyZXR1cm4gcj8oclswXT12LHJbMV09bixyKTpbdixuXX1lLmV4cG9ydHM9bjt2YXIgaT0rKE1hdGgucG93KDIsMjcpKzEpfSx7fV0sMjM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuPXQrZSxpPW4tdCxvPW4taSxhPWUtaSxzPXQtbztyZXR1cm4gcj8oclswXT1zK2EsclsxXT1uLHIpOltzK2Esbl19ZS5leHBvcnRzPW59LHt9XSwyMzU6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtpZih0KXt2YXIgZT10Lmxlbmd0aHx8dC5ieXRlTGVuZ3RoLHI9eS5sb2cyKGUpO3dbcl0ucHVzaCh0KX19ZnVuY3Rpb24gbyh0KXtpKHQuYnVmZmVyKX1mdW5jdGlvbiBhKHQpe3ZhciB0PXkubmV4dFBvdzIodCksZT15LmxvZzIodCkscj13W2VdO3JldHVybiByLmxlbmd0aD4wP3IucG9wKCk6bmV3IEFycmF5QnVmZmVyKHQpfWZ1bmN0aW9uIHModCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEodCksMCx0KX1mdW5jdGlvbiBsKHQpe3JldHVybiBuZXcgVWludDE2QXJyYXkoYSgyKnQpLDAsdCl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGEoNCp0KSwwLHQpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIG5ldyBJbnQ4QXJyYXkoYSh0KSwwLHQpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIG5ldyBJbnQxNkFycmF5KGEoMip0KSwwLHQpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIG5ldyBJbnQzMkFycmF5KGEoNCp0KSwwLHQpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoYSg0KnQpLDAsdCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbmV3IEZsb2F0NjRBcnJheShhKDgqdCksMCx0KX1mdW5jdGlvbiBnKHQpe3JldHVybiB4P25ldyBVaW50OENsYW1wZWRBcnJheShhKHQpLDAsdCk6cyh0KX1mdW5jdGlvbiB2KHQpe3JldHVybiBuZXcgRGF0YVZpZXcoYSh0KSwwLHQpfWZ1bmN0aW9uIG0odCl7dD15Lm5leHRQb3cyKHQpO3ZhciBlPXkubG9nMih0KSxyPUFbZV07cmV0dXJuIHIubGVuZ3RoPjA/ci5wb3AoKTpuZXcgbih0KX12YXIgeT10KCJiaXQtdHdpZGRsZSIpLGI9dCgiZHVwIik7ZS5fX1RZUEVEQVJSQVlfUE9PTHx8KGUuX19UWVBFREFSUkFZX1BPT0w9e1VJTlQ4OmIoWzMyLDBdKSxVSU5UMTY6YihbMzIsMF0pLFVJTlQzMjpiKFszMiwwXSksSU5UODpiKFszMiwwXSksSU5UMTY6YihbMzIsMF0pLElOVDMyOmIoWzMyLDBdKSxGTE9BVDpiKFszMiwwXSksRE9VQkxFOmIoWzMyLDBdKSxEQVRBOmIoWzMyLDBdKSxVSU5UOEM6YihbMzIsMF0pLEJVRkZFUjpiKFszMiwwXSl9KTt2YXIgeD0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5LF89ZS5fX1RZUEVEQVJSQVlfUE9PTDtfLlVJTlQ4Q3x8KF8uVUlOVDhDPWIoWzMyLDBdKSksXy5CVUZGRVJ8fChfLkJVRkZFUj1iKFszMiwwXSkpO3ZhciB3PV8uREFUQSxBPV8uQlVGRkVSO3IuZnJlZT1mdW5jdGlvbih0KXtpZihuLmlzQnVmZmVyKHQpKUFbeS5sb2cyKHQubGVuZ3RoKV0ucHVzaCh0KTtlbHNle2lmKCJbb2JqZWN0IEFycmF5QnVmZmVyXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkmJih0PXQuYnVmZmVyKSwhdClyZXR1cm47dmFyIGU9dC5sZW5ndGh8fHQuYnl0ZUxlbmd0aCxyPTB8eS5sb2cyKGUpO3dbcl0ucHVzaCh0KX19LHIuZnJlZVVpbnQ4PXIuZnJlZVVpbnQxNj1yLmZyZWVVaW50MzI9ci5mcmVlSW50OD1yLmZyZWVJbnQxNj1yLmZyZWVJbnQzMj1yLmZyZWVGbG9hdDMyPXIuZnJlZUZsb2F0PXIuZnJlZUZsb2F0NjQ9ci5mcmVlRG91YmxlPXIuZnJlZVVpbnQ4Q2xhbXBlZD1yLmZyZWVEYXRhVmlldz1vLHIuZnJlZUFycmF5QnVmZmVyPWksci5mcmVlQnVmZmVyPWZ1bmN0aW9uKHQpe0FbeS5sb2cyKHQubGVuZ3RoKV0ucHVzaCh0KX0sci5tYWxsb2M9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lfHwiYXJyYXlidWZmZXIiPT09ZSlyZXR1cm4gYSh0KTtzd2l0Y2goZSl7Y2FzZSJ1aW50OCI6cmV0dXJuIHModCk7Y2FzZSJ1aW50MTYiOnJldHVybiBsKHQpO2Nhc2UidWludDMyIjpyZXR1cm4gYyh0KTtjYXNlImludDgiOnJldHVybiB1KHQpO2Nhc2UiaW50MTYiOnJldHVybiBoKHQpO2Nhc2UiaW50MzIiOnJldHVybiBmKHQpO2Nhc2UiZmxvYXQiOmNhc2UiZmxvYXQzMiI6cmV0dXJuIGQodCk7Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQ2NCI6cmV0dXJuIHAodCk7Y2FzZSJ1aW50OF9jbGFtcGVkIjpyZXR1cm4gZyh0KTtjYXNlImJ1ZmZlciI6cmV0dXJuIG0odCk7Y2FzZSJkYXRhIjpjYXNlImRhdGF2aWV3IjpyZXR1cm4gdih0KTtkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBudWxsfSxyLm1hbGxvY0FycmF5QnVmZmVyPWEsci5tYWxsb2NVaW50OD1zLHIubWFsbG9jVWludDE2PWwsci5tYWxsb2NVaW50MzI9YyxyLm1hbGxvY0ludDg9dSxyLm1hbGxvY0ludDE2PWgsci5tYWxsb2NJbnQzMj1mLHIubWFsbG9jRmxvYXQzMj1yLm1hbGxvY0Zsb2F0PWQsci5tYWxsb2NGbG9hdDY0PXIubWFsbG9jRG91YmxlPXAsci5tYWxsb2NVaW50OENsYW1wZWQ9ZyxyLm1hbGxvY0RhdGFWaWV3PXYsci5tYWxsb2NCdWZmZXI9bSxyLmNsZWFyQ2FjaGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDszMj50OysrdClfLlVJTlQ4W3RdLmxlbmd0aD0wLF8uVUlOVDE2W3RdLmxlbmd0aD0wLF8uVUlOVDMyW3RdLmxlbmd0aD0wLF8uSU5UOFt0XS5sZW5ndGg9MCxfLklOVDE2W3RdLmxlbmd0aD0wLF8uSU5UMzJbdF0ubGVuZ3RoPTAsXy5GTE9BVFt0XS5sZW5ndGg9MCxfLkRPVUJMRVt0XS5sZW5ndGg9MCxfLlVJTlQ4Q1t0XS5sZW5ndGg9MCx3W3RdLmxlbmd0aD0wLEFbdF0ubGVuZ3RoPTB9fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sdCgiYnVmZmVyIikuQnVmZmVyKX0seyJiaXQtdHdpZGRsZSI6NDksYnVmZmVyOjUwLGR1cDo3Mn1dLDIzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPTEsbj10Lmxlbmd0aCxpPXRbMF0sbz10WzBdLGE9MTtuPmE7KythKWlmKG89aSxpPXRbYV0sZShpLG8pKXtpZihhPT09cil7cisrO2NvbnRpbnVlfXRbcisrXT1pfXJldHVybiB0Lmxlbmd0aD1yLHR9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9MSxyPXQubGVuZ3RoLG49dFswXSxpPXRbMF0sbz0xO3I+bzsrK28saT1uKWlmKGk9bixuPXRbb10sbiE9PWkpe2lmKG89PT1lKXtlKys7Y29udGludWV9dFtlKytdPW59cmV0dXJuIHQubGVuZ3RoPWUsdH1mdW5jdGlvbiBvKHQsZSxyKXtyZXR1cm4gMD09PXQubGVuZ3RoP3Q6ZT8ocnx8dC5zb3J0KGUpLG4odCxlKSk6KHJ8fHQuc29ydCgpLGkodCkpfWUuZXhwb3J0cz1vfSx7fV0sMjM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfHwoZT17fSksaSh0LGUuY2FudmFzfHxvLGUuY29udGV4dHx8YSxlKX1lLmV4cG9ydHM9bjt2YXIgaT10KCIuL2xpYi92dGV4dCIpLG89bnVsbCxhPW51bGw7InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksby53aWR0aD04MTkyLG8uaGVpZ2h0PTEwMjQsYT1vLmdldENvbnRleHQoIjJkIikpfSx7Ii4vbGliL3Z0ZXh0IjoyMzh9XSwyMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7Zm9yKHZhciBuPWUudGV4dEFsaWdufHwic3RhcnQiLGk9ZS50ZXh0QmFzZWxpbmV8fCJhbHBoYWJldGljIixvPVsxPDwzMCwxPDwzMF0sYT1bMCwwXSxzPXQubGVuZ3RoLGw9MDtzPmw7KytsKWZvcih2YXIgYz10W2xdLHU9MDsyPnU7Kyt1KW9bdV09MHxNYXRoLm1pbihvW3VdLGNbdV0pLGFbdV09MHxNYXRoLm1heChhW3VdLGNbdV0pO3ZhciBoPTA7c3dpdGNoKG4pe2Nhc2UiY2VudGVyIjpoPS0uNSoob1swXSthWzBdKTticmVhaztjYXNlInJpZ2h0IjpjYXNlImVuZCI6aD0tYVswXTticmVhaztjYXNlImxlZnQiOmNhc2Uic3RhcnQiOmg9LW9bMF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInZlY3Rvcml6ZS10ZXh0OiBVbnJlY29nbml6ZWQgdGV4dEFsaWduOiAnIituKyInIil9dmFyIGY9MDtzd2l0Y2goaSl7Y2FzZSJoYW5naW5nIjpjYXNlInRvcCI6Zj0tb1sxXTticmVhaztjYXNlIm1pZGRsZSI6Zj0tLjUqKG9bMV0rYVsxXSk7YnJlYWs7Y2FzZSJhbHBoYWJldGljIjpjYXNlImlkZW9ncmFwaGljIjpmPS0zKnI7YnJlYWs7Y2FzZSJib3R0b20iOmY9LWFbMV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInZlY3Rvcml6ZS10ZXh0OiBVbnJlY29naW5pemVkIHRleHRCYXNlbGluZTogJyIraSsiJyIpfXZhciBkPTEvcjtyZXR1cm4ibGluZUhlaWdodCJpbiBlP2QqPStlLmxpbmVIZWlnaHQ6IndpZHRoImluIGU/ZD1lLndpZHRoLyhhWzBdLW9bMF0pOiJoZWlnaHQiaW4gZSYmKGQ9ZS5oZWlnaHQvKGFbMV0tb1sxXSkpLHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybltkKih0WzBdK2gpLGQqKHRbMV0rZildfSl9ZnVuY3Rpb24gaSh0LGUscixuKXt2YXIgaT0wfE1hdGguY2VpbChlLm1lYXN1cmVUZXh0KHIpLndpZHRoKzIqbik7aWYoaT44MTkyKXRocm93IG5ldyBFcnJvcigidmVjdG9yaXplLXRleHQ6IFN0cmluZyB0b28gbG9uZyAoc29ycnksIHRoaXMgd2lsbCBnZXQgZml4ZWQgbGF0ZXIpIik7dmFyIG89MypuO3QuaGVpZ2h0PG8mJih0LmhlaWdodD1vKSxlLmZpbGxTdHlsZT0iIzAwMCIsZS5maWxsUmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCksZS5maWxsU3R5bGU9IiNmZmYiLGUuZmlsbFRleHQocixuLDIqbik7dmFyIGE9ZS5nZXRJbWFnZURhdGEoMCwwLGksbykscz11KGEuZGF0YSxbbyxpLDRdKTtyZXR1cm4gcy5waWNrKC0xLC0xLDApLnRyYW5zcG9zZSgxLDApfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1jKHQsMTI4KTtyZXR1cm4gZT9oKHIuY2VsbHMsci5wb3NpdGlvbnMsLjI1KTp7ZWRnZXM6ci5jZWxscyxwb3NpdGlvbnM6ci5wb3NpdGlvbnN9fWZ1bmN0aW9uIGEodCxlLHIsaSl7dmFyIGE9byh0LGkpLHM9bihhLnBvc2l0aW9ucyxlLHIpLGw9YS5lZGdlcyxjPSJjY3ciPT09ZS5vcmllbnRhdGlvbjtpZihmKHMsbCksZS5wb2x5Z29uc3x8ZS5wb2x5Z29ufHxlLnBvbHlsaW5lKXtmb3IodmFyIHU9cChsLHMpLGg9bmV3IEFycmF5KHUubGVuZ3RoKSxnPTA7Zzx1Lmxlbmd0aDsrK2cpe2Zvcih2YXIgdj11W2ddLG09bmV3IEFycmF5KHYubGVuZ3RoKSx5PTA7eTx2Lmxlbmd0aDsrK3kpe2Zvcih2YXIgYj12W3ldLHg9bmV3IEFycmF5KGIubGVuZ3RoKSxfPTA7XzxiLmxlbmd0aDsrK18peFtfXT1zW2JbX11dLnNsaWNlKCk7YyYmeC5yZXZlcnNlKCksbVt5XT14fWhbZ109bX1yZXR1cm4gaH1yZXR1cm4gZS50cmlhbmdsZXN8fGUudHJpYW5ndWxhdGV8fGUudHJpYW5nbGU/e2NlbGxzOmQocyxsLHtkZWxhdW5heTohMSxleHRlcmlvcjohMSxpbnRlcmlvcjohMH0pLHBvc2l0aW9uczpzfTp7ZWRnZXM6bCxwb3NpdGlvbnM6c319ZnVuY3Rpb24gcyh0LGUscil7dHJ5e3JldHVybiBhKHQsZSxyLCEwKX1jYXRjaChuKXt9dHJ5e3JldHVybiBhKHQsZSxyLCExKX1jYXRjaChuKXt9cmV0dXJuIGUucG9seWdvbnN8fGUucG9seWxpbmV8fGUucG9seWdvbj9bXTplLnRyaWFuZ2xlc3x8ZS50cmlhbmd1bGF0ZXx8ZS50cmlhbmdsZT97Y2VsbHM6W10scG9zaXRpb25zOltdfTp7ZWRnZXM6W10scG9zaXRpb25zOltdfX1mdW5jdGlvbiBsKHQsZSxyLG4pe3ZhciBvPW4uc2l6ZXx8NjQsYT1uLmZvbnR8fCJub3JtYWwiO3IuZm9udD1vKyJweCAiK2Esci50ZXh0QWxpZ249InN0YXJ0IixyLnRleHRCYXNlbGluZT0iYWxwaGFiZXRpYyIsci5kaXJlY3Rpb249Imx0ciI7dmFyIGw9aShlLHIsdCxvKTtyZXR1cm4gcyhsLG4sbyl9ZS5leHBvcnRzPWwsZS5leHBvcnRzLnByb2Nlc3NQaXhlbHM9czt2YXIgYz10KCJzdXJmYWNlLW5ldHMiKSx1PXQoIm5kYXJyYXkiKSxoPXQoInNpbXBsaWZ5LXBsYW5hci1ncmFwaCIpLGY9dCgiY2xlYW4tcHNsZyIpLGQ9dCgiY2R0MmQiKSxwPXQoInBsYW5hci1ncmFwaC10by1wb2x5bGluZSIpfSx7Y2R0MmQ6MjM5LCJjbGVhbi1wc2xnIjoyNDYsbmRhcnJheToyMTAsInBsYW5hci1ncmFwaC10by1wb2x5bGluZSI6MjkyLCJzaW1wbGlmeS1wbGFuYXItZ3JhcGgiOjI5Niwic3VyZmFjZS1uZXRzIjoyMjl9XSwyMzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm5bTWF0aC5taW4odFswXSx0WzFdKSxNYXRoLm1heCh0WzBdLHRbMV0pXX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQubWFwKG4pLnNvcnQoaSl9ZnVuY3Rpb24gYSh0LGUscil7cmV0dXJuIGUgaW4gdD90W2VdOnJ9ZnVuY3Rpb24gcyh0LGUscil7QXJyYXkuaXNBcnJheShlKT8ocj1yfHx7fSxlPWV8fFtdKToocj1lfHx7fSxlPVtdKTt2YXIgbj0hIWEociwiZGVsYXVuYXkiLCEwKSxpPSEhYShyLCJpbnRlcmlvciIsITApLHM9ISFhKHIsImV4dGVyaW9yIiwhMCksZj0hIWEociwiaW5maW5pdHkiLCExKTtpZighaSYmIXN8fDA9PT10Lmxlbmd0aClyZXR1cm5bXTt2YXIgZD1sKHQsZSk7aWYobnx8aSE9PXN8fGYpe2Zvcih2YXIgcD1jKHQubGVuZ3RoLG8oZSkpLGc9MDtnPGQubGVuZ3RoOysrZyl7dmFyIHY9ZFtnXTtwLmFkZFRyaWFuZ2xlKHZbMF0sdlsxXSx2WzJdKX1yZXR1cm4gbiYmdSh0LHApLHM/aT9mP2gocCwwLGYpOnAuY2VsbHMoKTpoKHAsMSxmKTpoKHAsLTEpfXJldHVybiBkfXZhciBsPXQoIi4vbGliL21vbm90b25lIiksYz10KCIuL2xpYi90cmlhbmd1bGF0aW9uIiksdT10KCIuL2xpYi9kZWxhdW5heSIpLGg9dCgiLi9saWIvZmlsdGVyIik7ZS5leHBvcnRzPXN9LHsiLi9saWIvZGVsYXVuYXkiOjI0MCwiLi9saWIvZmlsdGVyIjoyNDEsIi4vbGliL21vbm90b25lIjoyNDIsIi4vbGliL3RyaWFuZ3VsYXRpb24iOjI0M31dLDI0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSxhKXt2YXIgcz1lLm9wcG9zaXRlKG4saSk7aWYoISgwPnMpKXtpZihuPmkpe3ZhciBsPW47bj1pLGk9bCxsPWEsYT1zLHM9bH1lLmlzQ29uc3RyYWludChuLGkpfHxvKHRbbl0sdFtpXSx0W2FdLHRbc10pPDAmJnIucHVzaChuLGkpfX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciByPVtdLGk9dC5sZW5ndGgsYT1lLnN0YXJzLHM9MDtpPnM7KytzKWZvcih2YXIgbD1hW3NdLGM9MTtjPGwubGVuZ3RoO2MrPTIpe3ZhciB1PWxbY107aWYoIShzPnV8fGUuaXNDb25zdHJhaW50KHMsdSkpKXtmb3IodmFyIGg9bFtjLTFdLGY9LTEsZD0xO2Q8bC5sZW5ndGg7ZCs9MilpZihsW2QtMV09PT11KXtmPWxbZF07YnJlYWt9MD5mfHxvKHRbc10sdFt1XSx0W2hdLHRbZl0pPDAmJnIucHVzaChzLHUpfX1mb3IoO3IubGVuZ3RoPjA7KXtmb3IodmFyIHU9ci5wb3AoKSxzPXIucG9wKCksaD0tMSxmPS0xLGw9YVtzXSxwPTE7cDxsLmxlbmd0aDtwKz0yKXt2YXIgZz1sW3AtMV0sdj1sW3BdO2c9PT11P2Y9djp2PT09dSYmKGg9Zyl9MD5ofHwwPmZ8fG8odFtzXSx0W3VdLHRbaF0sdFtmXSk+PTB8fChlLmZsaXAocyx1KSxuKHQsZSxyLGgscyxmKSxuKHQsZSxyLHMsZixoKSxuKHQsZSxyLGYsdSxoKSxuKHQsZSxyLHUsaCxmKSl9fXZhciBvPXQoInJvYnVzdC1pbi1zcGhlcmUiKVs0XTt0KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpO2UuZXhwb3J0cz1pfSx7ImJpbmFyeS1zZWFyY2gtYm91bmRzIjoyNDQsInJvYnVzdC1pbi1zcGhlcmUiOjI0NX1dLDI0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSxvLGEpe3RoaXMuY2VsbHM9dCx0aGlzLm5laWdoYm9yPWUsdGhpcy5mbGFncz1uLHRoaXMuY29uc3RyYWludD1yLHRoaXMuYWN0aXZlPWksdGhpcy5uZXh0PW8sdGhpcy5ib3VuZGFyeT1hfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV18fHRbMl0tZVsyXX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPXQuY2VsbHMoKSxvPXIubGVuZ3RoLGE9MDtvPmE7KythKXt2YXIgcz1yW2FdLGw9c1swXSxjPXNbMV0sdT1zWzJdO3U+Yz9sPmMmJihzWzBdPWMsc1sxXT11LHNbMl09bCk6bD51JiYoc1swXT11LHNbMV09bCxzWzJdPWMpfXIuc29ydChpKTtmb3IodmFyIGg9bmV3IEFycmF5KG8pLGE9MDthPGgubGVuZ3RoOysrYSloW2FdPTA7dmFyIGY9W10sZD1bXSxwPW5ldyBBcnJheSgzKm8pLGc9bmV3IEFycmF5KDMqbyksdj1udWxsO2UmJih2PVtdKTtmb3IodmFyIG09bmV3IG4ocixwLGcsaCxmLGQsdiksYT0wO28+YTsrK2EpZm9yKHZhciBzPXJbYV0seT0wOzM+eTsrK3kpe3ZhciBsPXNbeV0sYz1zWyh5KzEpJTNdLGI9cFszKmEreV09bS5sb2NhdGUoYyxsLHQub3Bwb3NpdGUoYyxsKSkseD1nWzMqYSt5XT10LmlzQ29uc3RyYWludChsLGMpOzA+YiYmKHg/ZC5wdXNoKGEpOihmLnB1c2goYSksaFthXT0xKSxlJiZ2LnB1c2goW2MsbCwtMV0pKX1yZXR1cm4gbX1mdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49MCxpPTA7aTx0Lmxlbmd0aDsrK2kpZVtpXT09PXImJih0W24rK109dFtpXSk7cmV0dXJuIHQubGVuZ3RoPW4sdH1mdW5jdGlvbiBzKHQsZSxyKXt2YXIgbj1vKHQscik7aWYoMD09PWUpcmV0dXJuIHI/bi5jZWxscy5jb25jYXQobi5ib3VuZGFyeSk6bi5jZWxscztmb3IodmFyIGk9MSxzPW4uYWN0aXZlLGw9bi5uZXh0LGM9bi5mbGFncyx1PW4uY2VsbHMsaD1uLmNvbnN0cmFpbnQsZj1uLm5laWdoYm9yO3MubGVuZ3RoPjB8fGwubGVuZ3RoPjA7KXtmb3IoO3MubGVuZ3RoPjA7KXt2YXIgZD1zLnBvcCgpO2lmKGNbZF0hPT0taSl7Y1tkXT1pO2Zvcih2YXIgcD0odVtkXSwwKTszPnA7KytwKXt2YXIgZz1mWzMqZCtwXTtnPj0wJiYwPT09Y1tnXSYmKGhbMypkK3BdP2wucHVzaChnKToocy5wdXNoKGcpLGNbZ109aSkpfX19dmFyIHY9bDtsPXMscz12LGwubGVuZ3RoPTAsaT0taX12YXIgbT1hKHUsYyxlKTtyZXR1cm4gcj9tLmNvbmNhdChuLmJvdW5kYXJ5KTptfXZhciBsPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIik7ZS5leHBvcnRzPXM7dmFyIGM9bi5wcm90b3R5cGU7Yy5sb2NhdGU9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwLDBdO3JldHVybiBmdW5jdGlvbihlLHIsbil7dmFyIG89ZSxhPXIscz1uO3JldHVybiBuPnI/ZT5yJiYobz1yLGE9bixzPWUpOmU+biYmKG89bixhPWUscz1yKSwwPm8/LTE6KHRbMF09byx0WzFdPWEsdFsyXT1zLGwuZXEodGhpcy5jZWxscyx0LGkpKX19KCl9LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjI0NH1dLDI0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSl7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy5pZHg9cix0aGlzLmxvd2VySWRzPW4sdGhpcy51cHBlcklkcz1pfWZ1bmN0aW9uIGkodCxlLHIsbil7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy50eXBlPXIsdGhpcy5pZHg9bn1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9dC5hWzBdLWUuYVswXXx8dC5hWzFdLWUuYVsxXXx8dC50eXBlLWUudHlwZTtyZXR1cm4gcj9yOnQudHlwZSE9PXAmJihyPWQodC5hLHQuYixlLmIpKT9yOnQuaWR4LWUuaWR4fWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZCh0LmEsdC5iLGUpfWZ1bmN0aW9uIHModCxlLHIsbixpKXtmb3IodmFyIG89Zi5sdChlLG4sYSkscz1mLmd0KGUsbixhKSxsPW87cz5sOysrbCl7Zm9yKHZhciBjPWVbbF0sdT1jLmxvd2VySWRzLGg9dS5sZW5ndGg7aD4xJiZkKHJbdVtoLTJdXSxyW3VbaC0xXV0sbik+MDspdC5wdXNoKFt1W2gtMV0sdVtoLTJdLGldKSxoLT0xO3UubGVuZ3RoPWgsdS5wdXNoKGkpO2Zvcih2YXIgcD1jLnVwcGVySWRzLGg9cC5sZW5ndGg7aD4xJiZkKHJbcFtoLTJdXSxyW3BbaC0xXV0sbik8MDspdC5wdXNoKFtwW2gtMl0scFtoLTFdLGldKSxoLT0xO3AubGVuZ3RoPWgscC5wdXNoKGkpfX1mdW5jdGlvbiBsKHQsZSl7dmFyIHI7cmV0dXJuKHI9dC5hWzBdPGUuYVswXT9kKHQuYSx0LmIsZS5hKTpkKGUuYixlLmEsdC5hKSk/cjoocj1lLmJbMF08dC5iWzBdP2QodC5hLHQuYixlLmIpOmQoZS5iLGUuYSx0LmIpLHJ8fHQuaWR4LWUuaWR4KX1mdW5jdGlvbiBjKHQsZSxyKXt2YXIgaT1mLmxlKHQscixsKSxvPXRbaV0sYT1vLnVwcGVySWRzLHM9YVthLmxlbmd0aC0xXTtvLnVwcGVySWRzPVtzXSx0LnNwbGljZShpKzEsMCxuZXcgbihyLmEsci5iLHIuaWR4LFtzXSxhKSl9ZnVuY3Rpb24gdSh0LGUscil7dmFyIG49ci5hO3IuYT1yLmIsci5iPW47dmFyIGk9Zi5lcSh0LHIsbCksbz10W2ldLGE9dFtpLTFdO2EudXBwZXJJZHM9by51cHBlcklkcyx0LnNwbGljZShpLDEpfWZ1bmN0aW9uIGgodCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsYT1lLmxlbmd0aCxsPVtdLGg9MDtyPmg7KytoKWwucHVzaChuZXcgaSh0W2hdLG51bGwscCxoKSk7Zm9yKHZhciBoPTA7YT5oOysraCl7dmFyIGY9ZVtoXSxkPXRbZlswXV0sbT10W2ZbMV1dO2RbMF08bVswXT9sLnB1c2gobmV3IGkoZCxtLHYsaCksbmV3IGkobSxkLGcsaCkpOmRbMF0+bVswXSYmbC5wdXNoKG5ldyBpKG0sZCx2LGgpLG5ldyBpKGQsbSxnLGgpKX1sLnNvcnQobyk7Zm9yKHZhciB5PWxbMF0uYVswXS0oMStNYXRoLmFicyhsWzBdLmFbMF0pKSpNYXRoLnBvdygyLC01MiksYj1bbmV3IG4oW3ksMV0sW3ksMF0sLTEsW10sW10sW10sW10pXSx4PVtdLGg9MCxfPWwubGVuZ3RoO18+aDsrK2gpe3ZhciB3PWxbaF0sQT13LnR5cGU7QT09PXA/cyh4LGIsdCx3LmEsdy5pZHgpOkE9PT12P2MoYix0LHcpOnUoYix0LHcpfXJldHVybiB4fXZhciBmPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksZD10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXSxwPTAsZz0xLHY9MjtlLmV4cG9ydHM9aH0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MjQ0LCJyb2J1c3Qtb3JpZW50YXRpb24iOjIxNn1dLDI0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dGhpcy5zdGFycz10LHRoaXMuZWRnZXM9ZX1mdW5jdGlvbiBpKHQsZSxyKXtmb3IodmFyIG49MSxpPXQubGVuZ3RoO2k+bjtuKz0yKWlmKHRbbi0xXT09PWUmJnRbbl09PT1yKXJldHVybiB0W24tMV09dFtpLTJdLHRbbl09dFtpLTFdLHZvaWQodC5sZW5ndGg9aS0yKX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheSh0KSxpPTA7dD5pOysraSlyW2ldPVtdO3JldHVybiBuZXcgbihyLGUpfXZhciBhPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIik7ZS5leHBvcnRzPW87dmFyIHM9bi5wcm90b3R5cGU7cy5pc0NvbnN0cmFpbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfXZhciBlPVswLDBdO3JldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBlWzBdPU1hdGgubWluKHIsbiksZVsxXT1NYXRoLm1heChyLG4pLGEuZXEodGhpcy5lZGdlcyxlLHQpPj0wfX0oKSxzLnJlbW92ZVRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnN0YXJzO2koblt0XSxlLHIpLGkobltlXSxyLHQpLGkobltyXSx0LGUpfSxzLmFkZFRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnN0YXJzO25bdF0ucHVzaChlLHIpLG5bZV0ucHVzaChyLHQpLG5bcl0ucHVzaCh0LGUpfSxzLm9wcG9zaXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuc3RhcnNbZV0sbj0xLGk9ci5sZW5ndGg7aT5uO24rPTIpaWYocltuXT09PXQpcmV0dXJuIHJbbi0xXTtyZXR1cm4tMX0scy5mbGlwPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5vcHBvc2l0ZSh0LGUpLG49dGhpcy5vcHBvc2l0ZShlLHQpO3RoaXMucmVtb3ZlVHJpYW5nbGUodCxlLHIpLHRoaXMucmVtb3ZlVHJpYW5nbGUoZSx0LG4pLHRoaXMuYWRkVHJpYW5nbGUodCxuLHIpLHRoaXMuYWRkVHJpYW5nbGUoZSxyLG4pfSxzLmVkZ2VzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3RhcnMsZT1bXSxyPTAsbj10Lmxlbmd0aDtuPnI7KytyKWZvcih2YXIgaT10W3JdLG89MCxhPWkubGVuZ3RoO2E+bztvKz0yKWUucHVzaChbaVtvXSxpW28rMV1dKTtyZXR1cm4gZX0scy5jZWxscz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnN0YXJzLGU9W10scj0wLG49dC5sZW5ndGg7bj5yOysrcilmb3IodmFyIGk9dFtyXSxvPTAsYT1pLmxlbmd0aDthPm87bys9Mil7dmFyIHM9aVtvXSxsPWlbbysxXTtyPE1hdGgubWluKHMsbCkmJmUucHVzaChbcixzLGxdKX1yZXR1cm4gZX19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjI0NH1dLDI0NDpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsxMjFdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDoxMjF9XSwyNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgtMSksbj0xO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT1yW24tMV09bmV3IEFycmF5KHQubGVuZ3RoLTEpLG89MCxhPTA7bzx0Lmxlbmd0aDsrK28pbyE9PWUmJihpW2ErK109dFtuXVtvXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDt0PnI7KytyKXtlW3JdPW5ldyBBcnJheSh0KTtmb3IodmFyIG49MDt0Pm47KytuKWVbcl1bbl09WyJtIixuLCJbIix0LXItMiwiXSJdLmpvaW4oIiIpfXJldHVybiBlfWZ1bmN0aW9uIG8odCl7aWYoMT09PXQubGVuZ3RoKXJldHVybiB0WzBdO2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bInN1bSgiLHRbMF0sIiwiLHRbMV0sIikiXS5qb2luKCIiKTt2YXIgZT10Lmxlbmd0aD4+MTtyZXR1cm5bInN1bSgiLG8odC5zbGljZSgwLGUpKSwiLCIsbyh0LnNsaWNlKGUpKSwiKSJdLmpvaW4oIiIpfWZ1bmN0aW9uIGEodCxlKXtpZigibSI9PT10LmNoYXJBdCgwKSl7aWYoInciPT09ZS5jaGFyQXQoMCkpe3ZhciByPXQuc3BsaXQoIlsiKTtyZXR1cm5bInciLGUuc3Vic3RyKDEpLCJtIixyWzBdLnN1YnN0cigxKV0uam9pbigiIil9cmV0dXJuWyJwcm9kKCIsdCwiLCIsZSwiKSJdLmpvaW4oIiIpfXJldHVybiBhKGUsdCl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdCYhMD8iLSI6IiJ9ZnVuY3Rpb24gbCh0KXtpZigyPT09dC5sZW5ndGgpcmV0dXJuW1siZGlmZigiLGEodFswXVswXSx0WzFdWzFdKSwiLCIsYSh0WzFdWzBdLHRbMF1bMV0pLCIpIl0uam9pbigiIildO2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKFsic2NhbGUoIixvKGwobih0LHIpKSksIiwiLHMociksdFswXVtyXSwiKSJdLmpvaW4oIiIpKTtyZXR1cm4gZX1mdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciByPVtdLG49MDtlLTI+bjsrK24pci5wdXNoKFsicHJvZChtIix0LCJbIixuLCJdLG0iLHQsIlsiLG4sIl0pIl0uam9pbigiIikpO3JldHVybiBvKHIpfWZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlPVtdLHI9W10sYT1pKHQpLHM9MDt0PnM7KytzKWFbMF1bc109IjEiLGFbdC0xXVtzXT0idyIrcztmb3IodmFyIHM9MDt0PnM7KytzKTA9PT0oMSZzKT9lLnB1c2guYXBwbHkoZSxsKG4oYSxzKSkpOnIucHVzaC5hcHBseShyLGwobihhLHMpKSk7Zm9yKHZhciB1PW8oZSksaD1vKHIpLGY9ImV4YWN0SW5TcGhlcmUiK3QsZD1bXSxzPTA7dD5zOysrcylkLnB1c2goIm0iK3MpO2Zvcih2YXIgcD1bImZ1bmN0aW9uICIsZiwiKCIsZC5qb2luKCksIil7Il0scz0wO3Q+czsrK3Mpe3AucHVzaCgidmFyIHciLHMsIj0iLGMocyx0KSwiOyIpO2Zvcih2YXIgZz0wO3Q+ZzsrK2cpZyE9PXMmJnAucHVzaCgidmFyIHciLHMsIm0iLGcsIj1zY2FsZSh3IixzLCIsbSIsZywiWzBdKTsiKX1wLnB1c2goInZhciBwPSIsdSwiLG49IixoLCIsZD1kaWZmKHAsbik7cmV0dXJuIGRbZC5sZW5ndGgtMV07fXJldHVybiAiLGYpO3ZhciB4PW5ldyBGdW5jdGlvbigic3VtIiwiZGlmZiIsInByb2QiLCJzY2FsZSIscC5qb2luKCIiKSk7cmV0dXJuIHgobSx5LHYsYil9ZnVuY3Rpb24gaCgpe3JldHVybiAwfWZ1bmN0aW9uIGYoKXtyZXR1cm4gMH1mdW5jdGlvbiBkKCl7cmV0dXJuIDB9ZnVuY3Rpb24gcCh0KXt2YXIgZT1fW3QubGVuZ3RoXTtyZXR1cm4gZXx8KGU9X1t0Lmxlbmd0aF09dSh0Lmxlbmd0aCkpLGUuYXBwbHkodm9pZCAwLHQpfWZ1bmN0aW9uIGcoKXtmb3IoO18ubGVuZ3RoPD14OylfLnB1c2godShfLmxlbmd0aCkpO2Zvcih2YXIgdD1bXSxyPVsic2xvdyJdLG49MDt4Pj1uOysrbil0LnB1c2goImEiK24pLHIucHVzaCgibyIrbik7Zm9yKHZhciBpPVsiZnVuY3Rpb24gdGVzdEluU3BoZXJlKCIsdC5qb2luKCksIil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIDA7Il0sbj0yO3g+PW47KytuKWkucHVzaCgiY2FzZSAiLG4sIjpyZXR1cm4gbyIsbiwiKCIsdC5zbGljZSgwLG4pLmpvaW4oKSwiKTsiKTtpLnB1c2goIn12YXIgcz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoOysraSl7c1tpXT1hcmd1bWVudHNbaV19O3JldHVybiBzbG93KHMpO31yZXR1cm4gdGVzdEluU3BoZXJlIiksci5wdXNoKGkuam9pbigiIikpO3ZhciBvPUZ1bmN0aW9uLmFwcGx5KHZvaWQgMCxyKTtlLmV4cG9ydHM9by5hcHBseSh2b2lkIDAsW3BdLmNvbmNhdChfKSk7Zm9yKHZhciBuPTA7eD49bjsrK24pZS5leHBvcnRzW25dPV9bbl19dmFyIHY9dCgidHdvLXByb2R1Y3QiKSxtPXQoInJvYnVzdC1zdW0iKSx5PXQoInJvYnVzdC1zdWJ0cmFjdCIpLGI9dCgicm9idXN0LXNjYWxlIikseD02LF89W2gsZixkXTtnKCl9LHsicm9idXN0LXNjYWxlIjoyMTcsInJvYnVzdC1zdWJ0cmFjdCI6MjE4LCJyb2J1c3Qtc3VtIjoyMTksInR3by1wcm9kdWN0IjoyMzN9XSwyNDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZT14KHQpLHI9Yih5KGUpLHQpO3JldHVybiAwPnI/W2UsdyhlLDEvMCldOnI+MD9bdyhlLC0oMS8wKSksZV06W2UsZV19ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZS5sZW5ndGgpLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIGk9ZVtuXSxvPXRbaVswXV0sYT10W2lbMV1dO3Jbbl09W01hdGgubWluKG9bMF0sYVswXSksTWF0aC5taW4ob1sxXSxhWzFdKSxNYXRoLm1heChvWzBdLGFbMF0pLE1hdGgubWF4KG9bMV0sYVsxXSldfXJldHVybiByfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7KytyKXt2YXIgbj10W3JdO2Vbcl09W25bMF0sblsxXSxuWzBdLG5bMV1dfXJldHVybiBlfWZ1bmN0aW9uIGEodCxlLHIpe3ZhciBuPVtdO3JldHVybiB2KHIsZnVuY3Rpb24ocixpKXt2YXIgbz1lW3JdLGE9ZVtpXTtpZihvWzBdIT09YVswXSYmb1swXSE9PWFbMV0mJm9bMV0hPT1hWzBdJiZvWzFdIT09YVsxXSl7dmFyIHM9dFtvWzBdXSxsPXRbb1sxXV0sYz10W2FbMF1dLHU9dFthWzFdXTttKHMsbCxjLHUpJiZuLnB1c2goW3IsaV0pfX0pLG59ZnVuY3Rpb24gcyh0LGUscixuKXt2YXIgaT1bXTtyZXR1cm4gdihyLG4sZnVuY3Rpb24ocixuKXt2YXIgbz1lW3JdO2lmKG9bMF0hPT1uJiZvWzFdIT09bil7dmFyIGE9dFtuXSxzPXRbb1swXV0sbD10W29bMV1dO20ocyxsLGEsYSkmJmkucHVzaChbcixuXSl9fSksaX1mdW5jdGlvbiBsKHQsZSxyLG4saSl7ZnVuY3Rpb24gbyhlKXtpZihlPj10Lmxlbmd0aClyZXR1cm4gYVtlLXQubGVuZ3RoXTt2YXIgcj10W2VdO3JldHVyblt5KHJbMF0pLHkoclsxXSldfWZvcih2YXIgYT1bXSxzPTA7czxyLmxlbmd0aDsrK3Mpe3ZhciBsPXJbc10sYz1sWzBdLHU9bFsxXSxoPWVbY10sZj1lW3VdLGQ9QShfKHRbaFswXV0pLF8odFtoWzFdXSksXyh0W2ZbMF1dKSxfKHRbZlsxXV0pKTtpZihkKXt2YXIgcD1hLmxlbmd0aCt0Lmxlbmd0aDthLnB1c2goZCksbi5wdXNoKFtjLHBdLFt1LHBdKX19bi5zb3J0KGZ1bmN0aW9uKHQsZSl7aWYodFswXSE9PWVbMF0pcmV0dXJuIHRbMF0tZVswXTt2YXIgcj1vKHRbMV0pLG49byhlWzFdKTtyZXR1cm4gYihyWzBdLG5bMF0pfHxiKHJbMV0sblsxXSl9KTtmb3IodmFyIHM9bi5sZW5ndGgtMTtzPj0wOy0tcyl7dmFyIGc9bltzXSxjPWdbMF0sdj1lW2NdLG09dlswXSx4PXZbMV0sdz10W21dLGs9dFt4XTtpZigod1swXS1rWzBdfHx3WzFdLWtbMV0pPDApe3ZhciBNPW07bT14LHg9TX12WzBdPW07dmFyIFQsRT12WzFdPWdbMV07Zm9yKGkmJihUPXZbMl0pO3M+MCYmbltzLTFdWzBdPT09Yzspe3ZhciBnPW5bLS1zXSxMPWdbMV07aT9lLnB1c2goW0UsTCxUXSk6ZS5wdXNoKFtFLExdKSxFPUx9aT9lLnB1c2goW0UseCxUXSk6ZS5wdXNoKFtFLHhdKX1yZXR1cm4gYX1mdW5jdGlvbiBjKHQsZSxyKXtmb3IodmFyIGk9dC5sZW5ndGgrZS5sZW5ndGgsbz1uZXcgZyhpKSxhPXIscz0wO3M8ZS5sZW5ndGg7KytzKXt2YXIgbD1lW3NdLGM9bihsWzBdKSx1PW4obFsxXSk7YS5wdXNoKFtjWzBdLHVbMF0sY1sxXSx1WzFdXSksdC5wdXNoKFt4KGxbMF0pLHgobFsxXSldKX12KGEsZnVuY3Rpb24odCxlKXtvLmxpbmsodCxlKX0pO2Zvcih2YXIgaD0wLGY9ITAsZD1uZXcgQXJyYXkoaSkscz0wO2k+czsrK3Mpe3ZhciBwPW8uZmluZChzKTtwPT09cz8oZFtzXT1oLHRbaCsrXT10W3NdKTooZj0hMSxkW3NdPS0xKX1pZih0Lmxlbmd0aD1oLGYpcmV0dXJuIG51bGw7Zm9yKHZhciBzPTA7aT5zOysrcylkW3NdPDAmJihkW3NdPWRbby5maW5kKHMpXSk7cmV0dXJuIGR9ZnVuY3Rpb24gdSh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1mdW5jdGlvbiBoKHQsZSl7dmFyIHI9dFswXS1lWzBdfHx0WzFdLWVbMV07cmV0dXJuIHI/cjp0WzJdPGVbMl0/LTE6dFsyXT5lWzJdPzE6MH1mdW5jdGlvbiBmKHQsZSxyKXtpZigwIT09dC5sZW5ndGgpe2lmKGUpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24pe3ZhciBpPXRbbl0sbz1lW2lbMF1dLGE9ZVtpWzFdXTtpWzBdPU1hdGgubWluKG8sYSksaVsxXT1NYXRoLm1heChvLGEpfWVsc2UgZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24pe3ZhciBpPXRbbl0sbz1pWzBdLGE9aVsxXTtpWzBdPU1hdGgubWluKG8sYSksaVsxXT1NYXRoLm1heChvLGEpfXI/dC5zb3J0KGgpOnQuc29ydCh1KTtmb3IodmFyIHM9MSxuPTE7bjx0Lmxlbmd0aDsrK24pe3ZhciBsPXRbbi0xXSxjPXRbbl07KGNbMF0hPT1sWzBdfHxjWzFdIT09bFsxXXx8ciYmY1syXSE9PWxbMl0pJiYodFtzKytdPWMpfXQubGVuZ3RoPXN9fWZ1bmN0aW9uIGQodCxlLHIpe3ZhciBuPWkodCxlKSx1PWEodCxlLG4pLGg9byh0KSxkPXModCxlLG4saCkscD1sKHQsZSx1LGQsciksZz1jKHQscCxoKTtyZXR1cm4gZihlLGcsciksZz8hMDp1Lmxlbmd0aD4wfHxkLmxlbmd0aD4wfWZ1bmN0aW9uIHAodCxlLHIpe3ZhciBuLGk9ITE7aWYocil7bj1lO2Zvcih2YXIgbz1uZXcgQXJyYXkoZS5sZW5ndGgpLGE9MDthPGUubGVuZ3RoOysrYSl7dmFyIHM9ZVthXTtvW2FdPVtzWzBdLHNbMV0sclthXV19ZT1vfWZvcig7ZCh0LGUsISFyKTspaT0hMDtpZihyJiZpKXtuLmxlbmd0aD0wLHIubGVuZ3RoPTA7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciBzPWVbYV07bi5wdXNoKFtzWzBdLHNbMV1dKSxyLnB1c2goc1syXSl9fXJldHVybiBpfWUuZXhwb3J0cz1wO3ZhciBnPXQoInVuaW9uLWZpbmQiKSx2PXQoImJveC1pbnRlcnNlY3QiKSxtPSh0KCJjb21wYXJlLWNlbGwiKSx0KCJyb2J1c3Qtc2VnbWVudC1pbnRlcnNlY3QiKSkseT10KCJiaWctcmF0IiksYj10KCJiaWctcmF0L2NtcCIpLHg9dCgiYmlnLXJhdC90by1mbG9hdCIpLF89dCgicmF0LXZlYyIpLHc9dCgibmV4dGFmdGVyIiksQT10KCIuL2xpYi9yYXQtc2VnLWludGVyc2VjdCIpfSx7Ii4vbGliL3JhdC1zZWctaW50ZXJzZWN0IjoyNDcsImJpZy1yYXQiOjI1MSwiYmlnLXJhdC9jbXAiOjI0OSwiYmlnLXJhdC90by1mbG9hdCI6MjY0LCJib3gtaW50ZXJzZWN0IjoyNjUsImNvbXBhcmUtY2VsbCI6NTksbmV4dGFmdGVyOjI3MywicmF0LXZlYyI6Mjc1LCJyb2J1c3Qtc2VnbWVudC1pbnRlcnNlY3QiOjI3OCwidW5pb24tZmluZCI6Mjc5fV0sMjQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gcyhvKHRbMF0sZVsxXSksbyh0WzFdLGVbMF0pKX1mdW5jdGlvbiBpKHQsZSxyLGkpe3ZhciBvPWMoZSx0KSxzPWMoaSxyKSxmPW4obyxzKTtpZigwPT09bChmKSlyZXR1cm4gbnVsbDt2YXIgZD1jKHQscikscD1uKHMsZCksZz1hKHAsZik7cmV0dXJuIHUodCxoKG8sZykpfWUuZXhwb3J0cz1pO3ZhciBvPXQoImJpZy1yYXQvbXVsIiksYT10KCJiaWctcmF0L2RpdiIpLHM9dCgiYmlnLXJhdC9zdWIiKSxsPXQoImJpZy1yYXQvc2lnbiIpLGM9dCgicmF0LXZlYy9zdWIiKSx1PXQoInJhdC12ZWMvYWRkIiksaD10KCJyYXQtdmVjL211bHMiKTt0KCJiaWctcmF0L3RvLWZsb2F0Iil9LHsiYmlnLXJhdC9kaXYiOjI1MCwiYmlnLXJhdC9tdWwiOjI2MCwiYmlnLXJhdC9zaWduIjoyNjIsImJpZy1yYXQvc3ViIjoyNjMsImJpZy1yYXQvdG8tZmxvYXQiOjI2NCwicmF0LXZlYy9hZGQiOjI3NCwicmF0LXZlYy9tdWxzIjoyNzYsInJhdC12ZWMvc3ViIjoyNzd9XSwyNDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBpKHRbMF0ubXVsKGVbMV0pLmFkZChlWzBdLm11bCh0WzFdKSksdFsxXS5tdWwoZVsxXSkpfXZhciBpPXQoIi4vbGliL3JhdGlvbmFsaXplIik7ZS5leHBvcnRzPW59LHsiLi9saWIvcmF0aW9uYWxpemUiOjI1OH1dLDI0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHRbMF0ubXVsKGVbMV0pLmNtcChlWzBdLm11bCh0WzFdKSl9ZS5leHBvcnRzPW59LHt9XSwyNTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBpKHRbMF0ubXVsKGVbMV0pLHRbMV0ubXVsKGVbMF0pKX12YXIgaT10KCIuL2xpYi9yYXRpb25hbGl6ZSIpO2UuZXhwb3J0cz1ufSx7Ii4vbGliL3JhdGlvbmFsaXplIjoyNTh9XSwyNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2lmKGkodCkpcmV0dXJuIGU/Yyh0LG4oZSkpOlt0WzBdLmNsb25lKCksdFsxXS5jbG9uZSgpXTt2YXIgcix1LGg9MDtpZihvKHQpKXI9dC5jbG9uZSgpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KXI9cyh0KTtlbHNle2lmKDA9PT10KXJldHVyblthKDApLGEoMSldO2lmKHQ9PT1NYXRoLmZsb29yKHQpKXI9YSh0KTtlbHNle2Zvcig7dCE9PU1hdGguZmxvb3IodCk7KXQqPU1hdGgucG93KDIsMjU2KSxoLT0yNTY7cj1hKHQpfX1pZihpKGUpKXIubXVsKGVbMV0pLHU9ZVswXS5jbG9uZSgpO2Vsc2UgaWYobyhlKSl1PWUuY2xvbmUoKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl1PXMoZSk7ZWxzZSBpZihlKWlmKGU9PT1NYXRoLmZsb29yKGUpKXU9YShlKTtlbHNle2Zvcig7ZSE9PU1hdGguZmxvb3IoZSk7KWUqPU1hdGgucG93KDIsMjU2KSxoKz0yNTY7dT1hKGUpfWVsc2UgdT1hKDEpO3JldHVybiBoPjA/cj1yLnNobG4oaCk6MD5oJiYodT11LnNobG4oLWgpKSxsKHIsdSl9dmFyIGk9dCgiLi9pcy1yYXQiKSxvPXQoIi4vbGliL2lzLWJuIiksYT10KCIuL2xpYi9udW0tdG8tYm4iKSxzPXQoIi4vbGliL3N0ci10by1ibiIpLGw9dCgiLi9saWIvcmF0aW9uYWxpemUiKSxjPXQoIi4vZGl2Iik7ZS5leHBvcnRzPW59LHsiLi9kaXYiOjI1MCwiLi9pcy1yYXQiOjI1MiwiLi9saWIvaXMtYm4iOjI1NiwiLi9saWIvbnVtLXRvLWJuIjoyNTcsIi4vbGliL3JhdGlvbmFsaXplIjoyNTgsIi4vbGliL3N0ci10by1ibiI6MjU5fV0sMjUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJjI9PT10Lmxlbmd0aCYmaSh0WzBdKSYmaSh0WzFdKX12YXIgaT10KCIuL2xpYi9pcy1ibiIpO2UuZXhwb3J0cz1ufSx7Ii4vbGliL2lzLWJuIjoyNTZ9XSwyNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5jbXAobmV3IGkoMCkpfXZhciBpPXQoImJuLmpzIik7ZS5leHBvcnRzPW59LHsiYm4uanMiOjI2MX1dLDI1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlPXQubGVuZ3RoLHI9dC53b3JkcyxuPTA7aWYoMT09PWUpbj1yWzBdO2Vsc2UgaWYoMj09PWUpbj1yWzBdKzY3MTA4ODY0KnJbMV07ZWxzZSBmb3IodmFyIG49MCxpPTA7ZT5pO2krKyl7dmFyIG89cltpXTtuKz1vKk1hdGgucG93KDY3MTA4ODY0LGkpfXJldHVybiB0LnNpZ24/LW46bn1lLmV4cG9ydHM9bn0se31dLDI1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlPW8oaS5sbyh0KSk7aWYoMzI+ZSlyZXR1cm4gZTt2YXIgcj1vKGkuaGkodCkpO3JldHVybiByPjIwPzUyOnIrMzJ9dmFyIGk9dCgiZG91YmxlLWJpdHMiKSxvPXQoImJpdC10d2lkZGxlIikuY291bnRUcmFpbGluZ1plcm9zO2UuZXhwb3J0cz1ufSx7ImJpdC10d2lkZGxlIjo0OSwiZG91YmxlLWJpdHMiOjI3Mn1dLDI1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQmJkJvb2xlYW4odC53b3Jkcyl9dCgiYm4uanMiKTtlLmV4cG9ydHM9bn0seyJibi5qcyI6MjYxfV0sMjU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9by5leHBvbmVudCh0KTtyZXR1cm4gNTI+ZT9uZXcgaSh0KTpuZXcgaSh0Kk1hdGgucG93KDIsNTItZSkpLnNobG4oZS01Mil9dmFyIGk9dCgiYm4uanMiKSxvPXQoImRvdWJsZS1iaXRzIik7ZS5leHBvcnRzPW59LHsiYm4uanMiOjI2MSwiZG91YmxlLWJpdHMiOjI3Mn1dLDI1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9byh0KSxuPW8oZSk7aWYoMD09PXIpcmV0dXJuW2koMCksaSgxKV07aWYoMD09PW4pcmV0dXJuW2koMCksaSgwKV07MD5uJiYodD10Lm5lZygpLGU9ZS5uZWcoKSk7dmFyIGE9dC5nY2QoZSk7cmV0dXJuIGEuY21wbigxKT9bdC5kaXYoYSksZS5kaXYoYSldOlt0LGVdfXZhciBpPXQoIi4vbnVtLXRvLWJuIiksbz10KCIuL2JuLXNpZ24iKTtlLmV4cG9ydHM9bn0seyIuL2JuLXNpZ24iOjI1MywiLi9udW0tdG8tYm4iOjI1N31dLDI1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgaSh0KX12YXIgaT10KCJibi5qcyIpO2UuZXhwb3J0cz1ufSx7ImJuLmpzIjoyNjF9XSwyNjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBpKHRbMF0ubXVsKGVbMF0pLHRbMV0ubXVsKGVbMV0pKX12YXIgaT10KCIuL2xpYi9yYXRpb25hbGl6ZSIpO2UuZXhwb3J0cz1ufSx7Ii4vbGliL3JhdGlvbmFsaXplIjoyNTh9XSwyNjE6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIG4odCxlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIGkodCxlLHIpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0JiZBcnJheS5pc0FycmF5KHQud29yZHMpP3Q6KHRoaXMuc2lnbj0hMSx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLCJsZSIhPT1lJiYiYmUiIT09ZXx8KHI9ZSxlPTEwKSx2b2lkKG51bGwhPT10JiZ0aGlzLl9pbml0KHR8fDAsZXx8MTAscnx8ImJlIikpKX1mdW5jdGlvbiBvKHQsZSxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKHQubGVuZ3RoLHIpLG89ZTtpPm87bysrKXt2YXIgYT10LmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJjU0Pj1hP2EtNDkrMTA6YT49MTcmJjIyPj1hP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiBhKHQsZSxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4odC5sZW5ndGgsciksYT1lO28+YTthKyspe3ZhciBzPXQuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPXM+PTQ5P3MtNDkrMTA6cz49MTc/cy0xNysxMDpzfXJldHVybiBpfWZ1bmN0aW9uIHModCxlKXt0aGlzLm5hbWU9dCx0aGlzLnA9bmV3IGkoZSwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IGkoMSkuaXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gbCgpe3MuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBjKCl7cy5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIHUoKXtzLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gaCgpe3MuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9aS5fcHJpbWUodCk7dGhpcy5tPWUucCx0aGlzLnByaW1lPWV9ZWxzZSB0aGlzLm09dCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gZCh0KXtmLmNhbGwodGhpcyx0KSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT09MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgaSgxKS5pc2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnYuc2lnbj0hMCx0aGlzLm1pbnY9dGhpcy5taW52Lm1vZCh0aGlzLnIpfSJvYmplY3QiPT10eXBlb2YgdD90LmV4cG9ydHM9aTplLkJOPWksaS5CTj1pLGkud29yZFNpemU9MjYsaS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCxlLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdGhpcy5faW5pdE51bWJlcih0LGUsbik7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXJldHVybiB0aGlzLl9pbml0QXJyYXkodCxlLG4pOyJoZXgiPT09ZSYmKGU9MTYpLHIoZT09PSgwfGUpJiZlPj0yJiYzNj49ZSksdD10LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpO3ZhciBpPTA7Ii0iPT09dFswXSYmaSsrLDE2PT09ZT90aGlzLl9wYXJzZUhleCh0LGkpOnRoaXMuX3BhcnNlQmFzZSh0LGUsaSksIi0iPT09dFswXSYmKHRoaXMuc2lnbj0hMCksdGhpcy5zdHJpcCgpLCJsZSI9PT1uJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksZSxuKX0saS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24odCxlLG4pezA+dCYmKHRoaXMuc2lnbj0hMCx0PS10KSw2NzEwODg2ND50Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ0XSx0aGlzLmxlbmd0aD0xKTo0NTAzNTk5NjI3MzcwNDk2PnQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJnQsdC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KHIoOTAwNzE5OTI1NDc0MDk5Mj50KSx0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PW4mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxlLG4pfSxpLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHQsZSxuKXtpZihyKCJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpLHQubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKHQubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl0aGlzLndvcmRzW2ldPTA7dmFyIG89MDtpZigiYmUiPT09bilmb3IodmFyIGk9dC5sZW5ndGgtMSxhPTA7aT49MDtpLT0zKXt2YXIgcz10W2ldfHRbaS0xXTw8OHx0W2ktMl08PDE2O3RoaXMud29yZHNbYV18PXM8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1thKzFdPXM+Pj4yNi1vJjY3MTA4ODYzLG8rPTI0LG8+PTI2JiYoby09MjYsYSsrKX1lbHNlIGlmKCJsZSI9PT1uKWZvcih2YXIgaT0wLGE9MDtpPHQubGVuZ3RoO2krPTMpe3ZhciBzPXRbaV18dFtpKzFdPDw4fHRbaSsyXTw8MTY7dGhpcy53b3Jkc1thXXw9czw8byY2NzEwODg2Myx0aGlzLndvcmRzW2ErMV09cz4+PjI2LW8mNjcxMDg4NjMsbys9MjQsbz49MjYmJihvLT0yNixhKyspfXJldHVybiB0aGlzLnN0cmlwKCl9LGkucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbih0LGUpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgodC5sZW5ndGgtZSkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09MDtmb3IodmFyIG49MCxyPXQubGVuZ3RoLTYsaT0wO3I+PWU7ci09Nil7dmFyIGE9byh0LHIscis2KTt0aGlzLndvcmRzW2ldfD1hPDxuJjY3MTA4ODYzLHRoaXMud29yZHNbaSsxXXw9YT4+PjI2LW4mNDE5NDMwMyxuKz0yNCxuPj0yNiYmKG4tPTI2LGkrKyl9aWYocis2IT09ZSl7dmFyIGE9byh0LGUscis2KTt0aGlzLndvcmRzW2ldfD1hPDxuJjY3MTA4ODYzLHRoaXMud29yZHNbaSsxXXw9YT4+PjI2LW4mNDE5NDMwM310aGlzLnN0cmlwKCl9LGkucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24odCxlLHIpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuPTAsaT0xOzY3MTA4ODYzPj1pO2kqPWUpbisrO24tLSxpPWkvZXwwO2Zvcih2YXIgbz10Lmxlbmd0aC1yLHM9byVuLGw9TWF0aC5taW4obyxvLXMpK3IsYz0wLHU9cjtsPnU7dSs9biljPWEodCx1LHUrbixlKSx0aGlzLmltdWxuKGkpLHRoaXMud29yZHNbMF0rYzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jOnRoaXMuX2lhZGRuKGMpO2lmKDAhPT1zKXtmb3IodmFyIGg9MSxjPWEodCx1LHQubGVuZ3RoLGUpLHU9MDtzPnU7dSsrKWgqPWU7dGhpcy5pbXVsbihoKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKX19LGkucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7dC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXQud29yZHNbZV09dGhpcy53b3Jkc1tlXTt0Lmxlbmd0aD10aGlzLmxlbmd0aCx0LnNpZ249dGhpcy5zaWduLHQucmVkPXRoaXMucmVkfSxpLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBpKG51bGwpO3JldHVybiB0aGlzLmNvcHkodCksdH0saS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxpLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMuc2lnbj0hMSksdGhpc30saS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgcD1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxnPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHY9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07aS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24odCxlKXtpZih0PXR8fDEwLDE2PT09dHx8ImhleCI9PT10KXtmb3IodmFyIG49IiIsaT0wLGU9MHxlfHwxLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMud29yZHNbYV0sbD0oMTY3NzcyMTUmKHM8PGl8bykpLnRvU3RyaW5nKDE2KTtvPXM+Pj4yNC1pJjE2Nzc3MjE1LG49MCE9PW98fGEhPT10aGlzLmxlbmd0aC0xP3BbNi1sLmxlbmd0aF0rbCtuOmwrbixpKz0yLGk+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihuPW8udG9TdHJpbmcoMTYpK24pO24ubGVuZ3RoJWUhPT0wOyluPSIwIituO3JldHVybiB0aGlzLnNpZ24mJihuPSItIituKSxufWlmKHQ9PT0oMHx0KSYmdD49MiYmMzY+PXQpe3ZhciBjPWdbdF0sdT12W3RdLG49IiIsaD10aGlzLmNsb25lKCk7Zm9yKGguc2lnbj0hMTswIT09aC5jbXBuKDApOyl7dmFyIGY9aC5tb2RuKHUpLnRvU3RyaW5nKHQpO2g9aC5pZGl2bih1KSxuPTAhPT1oLmNtcG4oMCk/cFtjLWYubGVuZ3RoXStmK246ZitufXJldHVybiAwPT09dGhpcy5jbXBuKDApJiYobj0iMCIrbiksdGhpcy5zaWduJiYobj0iLSIrbiksbn1yKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LGkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0saS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbih0KXt0aGlzLnN0cmlwKCk7dmFyIGU9bmV3IEFycmF5KHRoaXMuYnl0ZUxlbmd0aCgpKTtlWzBdPTA7dmFyIHI9dGhpcy5jbG9uZSgpO2lmKCJsZSIhPT10KWZvcih2YXIgbj0wOzAhPT1yLmNtcG4oMCk7bisrKXt2YXIgaT1yLmFuZGxuKDI1NSk7ci5pc2hybig4KSxlW2UubGVuZ3RoLW4tMV09aX1lbHNlIGZvcih2YXIgbj0wOzAhPT1yLmNtcG4oMCk7bisrKXt2YXIgaT1yLmFuZGxuKDI1NSk7ci5pc2hybig4KSxlW25dPWl9cmV0dXJuIGV9LE1hdGguY2x6MzI/aS5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbih0KXtyZXR1cm4gMzItTWF0aC5jbHozMih0KX06aS5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbih0KXt2YXIgZT10LHI9MDtyZXR1cm4gZT49NDA5NiYmKHIrPTEzLGU+Pj49MTMpLGU+PTY0JiYocis9NyxlPj4+PTcpLGU+PTgmJihyKz00LGU+Pj49NCksZT49MiYmKHIrPTIsZT4+Pj0yKSxyK2V9LGkucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbih0KXtpZigwPT09dClyZXR1cm4gMjY7dmFyIGU9dCxyPTA7cmV0dXJuIDA9PT0oODE5MSZlKSYmKHIrPTEzLGU+Pj49MTMpLDA9PT0oMTI3JmUpJiYocis9NyxlPj4+PTcpLDA9PT0oMTUmZSkmJihyKz00LGU+Pj49NCksMD09PSgzJmUpJiYocis9MixlPj4+PTIpLDA9PT0oMSZlKSYmcisrLHJ9LGkucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB0PTAsZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0saS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZigwPT09dGhpcy5jbXBuKDApKXJldHVybiAwO2Zvcih2YXIgdD0wLGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tlXSk7aWYodCs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIHR9LGkucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LGkucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe2lmKDA9PT10aGlzLmNtcG4oMCkpcmV0dXJuIHRoaXMuY2xvbmUoKTt2YXIgdD10aGlzLmNsb25lKCk7cmV0dXJuIHQuc2lnbj0hdGhpcy5zaWduLHR9LGkucHJvdG90eXBlLmlvcj1mdW5jdGlvbih0KXtmb3IodGhpcy5zaWduPXRoaXMuc2lnbnx8dC5zaWduO3RoaXMubGVuZ3RoPHQubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy53b3Jkc1tlXT10aGlzLndvcmRzW2VdfHQud29yZHNbZV07cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUub3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IodCk6dC5jbG9uZSgpLmlvcih0aGlzKX0saS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih0KXt0aGlzLnNpZ249dGhpcy5zaWduJiZ0LnNpZ247dmFyIGU7ZT10aGlzLmxlbmd0aD50Lmxlbmd0aD90OnRoaXM7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdJnQud29yZHNbcl07cmV0dXJuIHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh0KTp0LmNsb25lKCkuaWFuZCh0aGlzKX0saS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbih0KXsKdGhpcy5zaWduPXRoaXMuc2lnbnx8dC5zaWduO3ZhciBlLHI7dGhpcy5sZW5ndGg+dC5sZW5ndGg/KGU9dGhpcyxyPXQpOihlPXQscj10aGlzKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0aGlzLndvcmRzW25dPWUud29yZHNbbl1eci53b3Jkc1tuXTtpZih0aGlzIT09ZSlmb3IoO248ZS5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09ZS53b3Jkc1tuXTtyZXR1cm4gdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKHQpOnQuY2xvbmUoKS5peG9yKHRoaXMpfSxpLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHQsZSl7cigibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTApO2Zvcih2YXIgbj10LzI2fDAsaT10JTI2O3RoaXMubGVuZ3RoPD1uOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIGU/dGhpcy53b3Jkc1tuXT10aGlzLndvcmRzW25dfDE8PGk6dGhpcy53b3Jkc1tuXT10aGlzLndvcmRzW25dJn4oMTw8aSksdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc2lnbiYmIXQuc2lnbil7dGhpcy5zaWduPSExO3ZhciBlPXRoaXMuaXN1Yih0KTtyZXR1cm4gdGhpcy5zaWduPSF0aGlzLnNpZ24sdGhpcy5fbm9ybVNpZ24oKX1pZighdGhpcy5zaWduJiZ0LnNpZ24pe3Quc2lnbj0hMTt2YXIgZT10aGlzLmlzdWIodCk7cmV0dXJuIHQuc2lnbj0hMCxlLl9ub3JtU2lnbigpfXZhciByLG47dGhpcy5sZW5ndGg+dC5sZW5ndGg/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtmb3IodmFyIGk9MCxvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBlPXIud29yZHNbb10rbi53b3Jkc1tvXStpO3RoaXMud29yZHNbb109NjcxMDg4NjMmZSxpPWU+Pj4yNn1mb3IoOzAhPT1pJiZvPHIubGVuZ3RoO28rKyl7dmFyIGU9ci53b3Jkc1tvXStpO3RoaXMud29yZHNbb109NjcxMDg4NjMmZSxpPWU+Pj4yNn1pZih0aGlzLmxlbmd0aD1yLmxlbmd0aCwwIT09aSl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1pLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihyIT09dGhpcylmb3IoO288ci5sZW5ndGg7bysrKXRoaXMud29yZHNbb109ci53b3Jkc1tvXTtyZXR1cm4gdGhpc30saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe2lmKHQuc2lnbiYmIXRoaXMuc2lnbil7dC5zaWduPSExO3ZhciBlPXRoaXMuc3ViKHQpO3JldHVybiB0LnNpZ249ITAsZX1pZighdC5zaWduJiZ0aGlzLnNpZ24pe3RoaXMuc2lnbj0hMTt2YXIgZT10LnN1Yih0aGlzKTtyZXR1cm4gdGhpcy5zaWduPSEwLGV9cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHQpOnQuY2xvbmUoKS5pYWRkKHRoaXMpfSxpLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHQpe2lmKHQuc2lnbil7dC5zaWduPSExO3ZhciBlPXRoaXMuaWFkZCh0KTtyZXR1cm4gdC5zaWduPSEwLGUuX25vcm1TaWduKCl9aWYodGhpcy5zaWduKXJldHVybiB0aGlzLnNpZ249ITEsdGhpcy5pYWRkKHQpLHRoaXMuc2lnbj0hMCx0aGlzLl9ub3JtU2lnbigpO3ZhciByPXRoaXMuY21wKHQpO2lmKDA9PT1yKXJldHVybiB0aGlzLnNpZ249ITEsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpczt2YXIgbixpO3I+MD8obj10aGlzLGk9dCk6KG49dCxpPXRoaXMpO2Zvcih2YXIgbz0wLGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIGU9bi53b3Jkc1thXS1pLndvcmRzW2FdK287bz1lPj4yNix0aGlzLndvcmRzW2FdPTY3MTA4ODYzJmV9Zm9yKDswIT09byYmYTxuLmxlbmd0aDthKyspe3ZhciBlPW4ud29yZHNbYV0rbztvPWU+PjI2LHRoaXMud29yZHNbYV09NjcxMDg4NjMmZX1pZigwPT09byYmYTxuLmxlbmd0aCYmbiE9PXRoaXMpZm9yKDthPG4ubGVuZ3RoO2ErKyl0aGlzLndvcmRzW2FdPW4ud29yZHNbYV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGEpLG4hPT10aGlzJiYodGhpcy5zaWduPSEwKSx0aGlzLnN0cmlwKCl9LGkucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIodCl9LGkucHJvdG90eXBlLl9zbWFsbE11bFRvPWZ1bmN0aW9uKHQsZSl7ZS5zaWduPXQuc2lnbiE9PXRoaXMuc2lnbixlLmxlbmd0aD10aGlzLmxlbmd0aCt0Lmxlbmd0aDtmb3IodmFyIHI9MCxuPTA7bjxlLmxlbmd0aC0xO24rKyl7Zm9yKHZhciBpPXI+Pj4yNixvPTY3MTA4ODYzJnIsYT1NYXRoLm1pbihuLHQubGVuZ3RoLTEpLHM9TWF0aC5tYXgoMCxuLXRoaXMubGVuZ3RoKzEpO2E+PXM7cysrKXt2YXIgbD1uLXMsYz0wfHRoaXMud29yZHNbbF0sdT0wfHQud29yZHNbc10saD1jKnUsZj02NzEwODg2MyZoO2k9aSsoaC82NzEwODg2NHwwKXwwLGY9ZitvfDAsbz02NzEwODg2MyZmLGk9aSsoZj4+PjI2KXwwfWUud29yZHNbbl09byxyPWl9cmV0dXJuIDAhPT1yP2Uud29yZHNbbl09cjplLmxlbmd0aC0tLGUuc3RyaXAoKX0saS5wcm90b3R5cGUuX2JpZ011bFRvPWZ1bmN0aW9uKHQsZSl7ZS5zaWduPXQuc2lnbiE9PXRoaXMuc2lnbixlLmxlbmd0aD10aGlzLmxlbmd0aCt0Lmxlbmd0aDtmb3IodmFyIHI9MCxuPTAsaT0wO2k8ZS5sZW5ndGgtMTtpKyspe3ZhciBvPW47bj0wO2Zvcih2YXIgYT02NzEwODg2MyZyLHM9TWF0aC5taW4oaSx0Lmxlbmd0aC0xKSxsPU1hdGgubWF4KDAsaS10aGlzLmxlbmd0aCsxKTtzPj1sO2wrKyl7dmFyIGM9aS1sLHU9MHx0aGlzLndvcmRzW2NdLGg9MHx0LndvcmRzW2xdLGY9dSpoLGQ9NjcxMDg4NjMmZjtvPW8rKGYvNjcxMDg4NjR8MCl8MCxkPWQrYXwwLGE9NjcxMDg4NjMmZCxvPW8rKGQ+Pj4yNil8MCxuKz1vPj4+MjYsbyY9NjcxMDg4NjN9ZS53b3Jkc1tpXT1hLHI9byxvPW59cmV0dXJuIDAhPT1yP2Uud29yZHNbaV09cjplLmxlbmd0aC0tLGUuc3RyaXAoKX0saS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4gcj10aGlzLmxlbmd0aCt0Lmxlbmd0aDw2Mz90aGlzLl9zbWFsbE11bFRvKHQsZSk6dGhpcy5fYmlnTXVsVG8odCxlKX0saS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBpKG51bGwpO3JldHVybiBlLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt0Lmxlbmd0aCksdGhpcy5tdWxUbyh0LGUpfSxpLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHQpe2lmKDA9PT10aGlzLmNtcG4oMCl8fDA9PT10LmNtcG4oMCkpcmV0dXJuIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xLHRoaXM7dmFyIGU9dGhpcy5sZW5ndGgscj10Lmxlbmd0aDt0aGlzLnNpZ249dC5zaWduIT09dGhpcy5zaWduLHRoaXMubGVuZ3RoPXRoaXMubGVuZ3RoK3QubGVuZ3RoLHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV09MDtmb3IodmFyIG49dGhpcy5sZW5ndGgtMjtuPj0wO24tLSl7Zm9yKHZhciBpPTAsbz0wLGE9TWF0aC5taW4obixyLTEpLHM9TWF0aC5tYXgoMCxuLWUrMSk7YT49cztzKyspe3ZhciBsPW4tcyxjPXRoaXMud29yZHNbbF0sdT10LndvcmRzW3NdLGg9Yyp1LGY9NjcxMDg4NjMmaDtpKz1oLzY3MTA4ODY0fDAsZis9byxvPTY3MTA4ODYzJmYsaSs9Zj4+PjI2fXRoaXMud29yZHNbbl09byx0aGlzLndvcmRzW24rMV0rPWksaT0wfWZvcih2YXIgaT0wLGw9MTtsPHRoaXMubGVuZ3RoO2wrKyl7dmFyIGQ9dGhpcy53b3Jkc1tsXStpO3RoaXMud29yZHNbbF09NjcxMDg4NjMmZCxpPWQ+Pj4yNn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbih0KXtyKCJudW1iZXIiPT10eXBlb2YgdCk7Zm9yKHZhciBlPTAsbj0wO248dGhpcy5sZW5ndGg7bisrKXt2YXIgaT10aGlzLndvcmRzW25dKnQsbz0oNjcxMDg4NjMmaSkrKDY3MTA4ODYzJmUpO2U+Pj0yNixlKz1pLzY3MTA4ODY0fDAsZSs9bz4+PjI2LHRoaXMud29yZHNbbl09NjcxMDg4NjMmb31yZXR1cm4gMCE9PWUmJih0aGlzLndvcmRzW25dPWUsdGhpcy5sZW5ndGgrKyksdGhpc30saS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKHQpfSxpLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LGkucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LGkucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHQpe3IoIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LG49KHQtZSkvMjYsaT02NzEwODg2Mz4+PjI2LWU8PDI2LWU7aWYoMCE9PWUpe2Zvcih2YXIgbz0wLGE9MDthPHRoaXMubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy53b3Jkc1thXSZpLGw9dGhpcy53b3Jkc1thXS1zPDxlO3RoaXMud29yZHNbYV09bHxvLG89cz4+PjI2LWV9byYmKHRoaXMud29yZHNbYV09byx0aGlzLmxlbmd0aCsrKX1pZigwIT09bil7Zm9yKHZhciBhPXRoaXMubGVuZ3RoLTE7YT49MDthLS0pdGhpcy53b3Jkc1thK25dPXRoaXMud29yZHNbYV07Zm9yKHZhciBhPTA7bj5hO2ErKyl0aGlzLndvcmRzW2FdPTA7dGhpcy5sZW5ndGgrPW59cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24odCxlLG4pe3IoIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgaTtpPWU/KGUtZSUyNikvMjY6MDt2YXIgbz10JTI2LGE9TWF0aC5taW4oKHQtbykvMjYsdGhpcy5sZW5ndGgpLHM9NjcxMDg4NjNeNjcxMDg4NjM+Pj5vPDxvLGw9bjtpZihpLT1hLGk9TWF0aC5tYXgoMCxpKSxsKXtmb3IodmFyIGM9MDthPmM7YysrKWwud29yZHNbY109dGhpcy53b3Jkc1tjXTtsLmxlbmd0aD1hfWlmKDA9PT1hKTtlbHNlIGlmKHRoaXMubGVuZ3RoPmEpe3RoaXMubGVuZ3RoLT1hO2Zvcih2YXIgYz0wO2M8dGhpcy5sZW5ndGg7YysrKXRoaXMud29yZHNbY109dGhpcy53b3Jkc1tjK2FdfWVsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciB1PTAsYz10aGlzLmxlbmd0aC0xO2M+PTAmJigwIT09dXx8Yz49aSk7Yy0tKXt2YXIgaD10aGlzLndvcmRzW2NdO3RoaXMud29yZHNbY109dTw8MjYtb3xoPj4+byx1PWgmc31yZXR1cm4gbCYmMCE9PXUmJihsLndvcmRzW2wubGVuZ3RoKytdPXUpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCksdGhpc30saS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKHQpfSxpLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4odCl9LGkucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHQpe3IoIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LG49KHQtZSkvMjYsaT0xPDxlO2lmKHRoaXMubGVuZ3RoPD1uKXJldHVybiExO3ZhciBvPXRoaXMud29yZHNbbl07cmV0dXJuISEobyZpKX0saS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHQpe3IoIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LG49KHQtZSkvMjY7aWYocighdGhpcy5zaWduLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSwwIT09ZSYmbisrLHRoaXMubGVuZ3RoPU1hdGgubWluKG4sdGhpcy5sZW5ndGgpLDAhPT1lKXt2YXIgaT02NzEwODg2M142NzEwODg2Mz4+PmU8PGU7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9aX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih0KX0saS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24odCl7cmV0dXJuIHIoIm51bWJlciI9PXR5cGVvZiB0KSwwPnQ/dGhpcy5pc3VibigtdCk6dGhpcy5zaWduPzE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTx0Pyh0aGlzLndvcmRzWzBdPXQtdGhpcy53b3Jkc1swXSx0aGlzLnNpZ249ITEsdGhpcyk6KHRoaXMuc2lnbj0hMSx0aGlzLmlzdWJuKHQpLHRoaXMuc2lnbj0hMCx0aGlzKTp0aGlzLl9pYWRkbih0KX0saS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKHQpe3RoaXMud29yZHNbMF0rPXQ7Zm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tlXT49NjcxMDg4NjQ7ZSsrKXRoaXMud29yZHNbZV0tPTY3MTA4ODY0LGU9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbZSsxXT0xOnRoaXMud29yZHNbZSsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxlKzEpLHRoaXN9LGkucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKHQpe2lmKHIoIm51bWJlciI9PXR5cGVvZiB0KSwwPnQpcmV0dXJuIHRoaXMuaWFkZG4oLXQpO2lmKHRoaXMuc2lnbilyZXR1cm4gdGhpcy5zaWduPSExLHRoaXMuaWFkZG4odCksdGhpcy5zaWduPSEwLHRoaXM7dGhpcy53b3Jkc1swXS09dDtmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPDA7ZSsrKXRoaXMud29yZHNbZV0rPTY3MTA4ODY0LHRoaXMud29yZHNbZSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4odCl9LGkucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih0KX0saS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNpZ249ITEsdGhpc30saS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LGkucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih0LGUsbil7dmFyIGksbz10Lmxlbmd0aCtuO2lmKHRoaXMud29yZHMubGVuZ3RoPG8pe2Zvcih2YXIgYT1uZXcgQXJyYXkobyksaT0wO2k8dGhpcy5sZW5ndGg7aSsrKWFbaV09dGhpcy53b3Jkc1tpXTt0aGlzLndvcmRzPWF9ZWxzZSBpPXRoaXMubGVuZ3RoO2Zvcih0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxvKTtpPHRoaXMubGVuZ3RoO2krKyl0aGlzLndvcmRzW2ldPTA7Zm9yKHZhciBzPTAsaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgbD10aGlzLndvcmRzW2krbl0rcyxjPXQud29yZHNbaV0qZTtsLT02NzEwODg2MyZjLHM9KGw+PjI2KS0oYy82NzEwODg2NHwwKSx0aGlzLndvcmRzW2krbl09NjcxMDg4NjMmbH1mb3IoO2k8dGhpcy5sZW5ndGgtbjtpKyspe3ZhciBsPXRoaXMud29yZHNbaStuXStzO3M9bD4+MjYsdGhpcy53b3Jkc1tpK25dPTY3MTA4ODYzJmx9aWYoMD09PXMpcmV0dXJuIHRoaXMuc3RyaXAoKTtyKC0xPT09cykscz0wO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt2YXIgbD0tdGhpcy53b3Jkc1tpXStzO3M9bD4+MjYsdGhpcy53b3Jkc1tpXT02NzEwODg2MyZsfXJldHVybiB0aGlzLnNpZ249ITAsdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoLXQubGVuZ3RoLG49dGhpcy5jbG9uZSgpLG89dCxhPW8ud29yZHNbby5sZW5ndGgtMV0scz10aGlzLl9jb3VudEJpdHMoYSk7cj0yNi1zLDAhPT1yJiYobz1vLnNobG4ociksbi5pc2hsbihyKSxhPW8ud29yZHNbby5sZW5ndGgtMV0pO3ZhciBsLGM9bi5sZW5ndGgtby5sZW5ndGg7aWYoIm1vZCIhPT1lKXtsPW5ldyBpKG51bGwpLGwubGVuZ3RoPWMrMSxsLndvcmRzPW5ldyBBcnJheShsLmxlbmd0aCk7Zm9yKHZhciB1PTA7dTxsLmxlbmd0aDt1KyspbC53b3Jkc1t1XT0wfXZhciBoPW4uY2xvbmUoKS5faXNobG5zdWJtdWwobywxLGMpO2guc2lnbnx8KG49aCxsJiYobC53b3Jkc1tjXT0xKSk7Zm9yKHZhciBmPWMtMTtmPj0wO2YtLSl7dmFyIGQ9NjcxMDg4NjQqbi53b3Jkc1tvLmxlbmd0aCtmXStuLndvcmRzW28ubGVuZ3RoK2YtMV07Zm9yKGQ9TWF0aC5taW4oZC9hfDAsNjcxMDg4NjMpLG4uX2lzaGxuc3VibXVsKG8sZCxmKTtuLnNpZ247KWQtLSxuLnNpZ249ITEsbi5faXNobG5zdWJtdWwobywxLGYpLDAhPT1uLmNtcG4oMCkmJihuLnNpZ249IW4uc2lnbik7bCYmKGwud29yZHNbZl09ZCl9cmV0dXJuIGwmJmwuc3RyaXAoKSxuLnN0cmlwKCksImRpdiIhPT1lJiYwIT09ciYmbi5pc2hybihyKSx7ZGl2Omw/bDpudWxsLG1vZDpufX0saS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHQsZSl7aWYocigwIT09dC5jbXBuKDApKSx0aGlzLnNpZ24mJiF0LnNpZ24pe3ZhciBuLG8sYT10aGlzLm5lZygpLmRpdm1vZCh0LGUpO3JldHVybiJtb2QiIT09ZSYmKG49YS5kaXYubmVnKCkpLCJkaXYiIT09ZSYmKG89MD09PWEubW9kLmNtcG4oMCk/YS5tb2Q6dC5zdWIoYS5tb2QpKSx7ZGl2Om4sbW9kOm99fWlmKCF0aGlzLnNpZ24mJnQuc2lnbil7dmFyIG4sYT10aGlzLmRpdm1vZCh0Lm5lZygpLGUpO3JldHVybiJtb2QiIT09ZSYmKG49YS5kaXYubmVnKCkpLHtkaXY6bixtb2Q6YS5tb2R9fXJldHVybiB0aGlzLnNpZ24mJnQuc2lnbj90aGlzLm5lZygpLmRpdm1vZCh0Lm5lZygpLGUpOnQubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh0KTwwP3tkaXY6bmV3IGkoMCksbW9kOnRoaXN9OjE9PT10Lmxlbmd0aD8iZGl2Ij09PWU/e2Rpdjp0aGlzLmRpdm4odC53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09ZT97ZGl2Om51bGwsbW9kOm5ldyBpKHRoaXMubW9kbih0LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpuZXcgaSh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHQsZSl9LGkucHJvdG90eXBlLmRpdj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCwiZGl2IikuZGl2fSxpLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9kKHQsIm1vZCIpLm1vZH0saS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kaXZtb2QodCk7aWYoMD09PWUubW9kLmNtcG4oMCkpcmV0dXJuIGUuZGl2O3ZhciByPWUuZGl2LnNpZ24/ZS5tb2QuaXN1Yih0KTplLm1vZCxuPXQuc2hybigxKSxpPXQuYW5kbG4oMSksbz1yLmNtcChuKTtyZXR1cm4gMD5vfHwxPT09aSYmMD09PW8/ZS5kaXY6ZS5kaXYuc2lnbj9lLmRpdi5pc3VibigxKTplLmRpdi5pYWRkbigxKX0saS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbih0KXtyKDY3MTA4ODYzPj10KTtmb3IodmFyIGU9KDE8PDI2KSV0LG49MCxpPXRoaXMubGVuZ3RoLTE7aT49MDtpLS0pbj0oZSpuK3RoaXMud29yZHNbaV0pJXQ7cmV0dXJuIG59LGkucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHQpe3IoNjcxMDg4NjM+PXQpO2Zvcih2YXIgZT0wLG49dGhpcy5sZW5ndGgtMTtuPj0wO24tLSl7dmFyIGk9dGhpcy53b3Jkc1tuXSs2NzEwODg2NCplO3RoaXMud29yZHNbbl09aS90fDAsZT1pJXR9cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHQpfSxpLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHQpe3IoIXQuc2lnbikscigwIT09dC5jbXBuKDApKTt2YXIgZT10aGlzLG49dC5jbG9uZSgpO2U9ZS5zaWduP2UubW9kKHQpOmUuY2xvbmUoKTtmb3IodmFyIG89bmV3IGkoMSksYT1uZXcgaSgwKSxzPW5ldyBpKDApLGw9bmV3IGkoMSksYz0wO2UuaXNFdmVuKCkmJm4uaXNFdmVuKCk7KWUuaXNocm4oMSksbi5pc2hybigxKSwrK2M7Zm9yKHZhciB1PW4uY2xvbmUoKSxoPWUuY2xvbmUoKTswIT09ZS5jbXBuKDApOyl7Zm9yKDtlLmlzRXZlbigpOyllLmlzaHJuKDEpLG8uaXNFdmVuKCkmJmEuaXNFdmVuKCk/KG8uaXNocm4oMSksYS5pc2hybigxKSk6KG8uaWFkZCh1KS5pc2hybigxKSxhLmlzdWIoaCkuaXNocm4oMSkpO2Zvcig7bi5pc0V2ZW4oKTspbi5pc2hybigxKSxzLmlzRXZlbigpJiZsLmlzRXZlbigpPyhzLmlzaHJuKDEpLGwuaXNocm4oMSkpOihzLmlhZGQodSkuaXNocm4oMSksbC5pc3ViKGgpLmlzaHJuKDEpKTtlLmNtcChuKT49MD8oZS5pc3ViKG4pLG8uaXN1YihzKSxhLmlzdWIobCkpOihuLmlzdWIoZSkscy5pc3ViKG8pLGwuaXN1YihhKSl9cmV0dXJue2E6cyxiOmwsZ2NkOm4uaXNobG4oYyl9fSxpLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24odCl7cighdC5zaWduKSxyKDAhPT10LmNtcG4oMCkpO3ZhciBlPXRoaXMsbj10LmNsb25lKCk7ZT1lLnNpZ24/ZS5tb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgbz1uZXcgaSgxKSxhPW5ldyBpKDApLHM9bi5jbG9uZSgpO2UuY21wbigxKT4wJiZuLmNtcG4oMSk+MDspe2Zvcig7ZS5pc0V2ZW4oKTspZS5pc2hybigxKSxvLmlzRXZlbigpP28uaXNocm4oMSk6by5pYWRkKHMpLmlzaHJuKDEpO2Zvcig7bi5pc0V2ZW4oKTspbi5pc2hybigxKSxhLmlzRXZlbigpP2EuaXNocm4oMSk6YS5pYWRkKHMpLmlzaHJuKDEpO2UuY21wKG4pPj0wPyhlLmlzdWIobiksby5pc3ViKGEpKToobi5pc3ViKGUpLGEuaXN1YihvKSl9cmV0dXJuIDA9PT1lLmNtcG4oMSk/bzphfSxpLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24odCl7aWYoMD09PXRoaXMuY21wbigwKSlyZXR1cm4gdC5jbG9uZSgpO2lmKDA9PT10LmNtcG4oMCkpcmV0dXJuIHRoaXMuY2xvbmUoKTt2YXIgZT10aGlzLmNsb25lKCkscj10LmNsb25lKCk7ZS5zaWduPSExLHIuc2lnbj0hMTtmb3IodmFyIG49MDtlLmlzRXZlbigpJiZyLmlzRXZlbigpO24rKyllLmlzaHJuKDEpLHIuaXNocm4oMSk7Zm9yKDs7KXtmb3IoO2UuaXNFdmVuKCk7KWUuaXNocm4oMSk7Zm9yKDtyLmlzRXZlbigpOylyLmlzaHJuKDEpO3ZhciBpPWUuY21wKHIpO2lmKDA+aSl7dmFyIG89ZTtlPXIscj1vfWVsc2UgaWYoMD09PWl8fDA9PT1yLmNtcG4oMSkpYnJlYWs7ZS5pc3ViKHIpfXJldHVybiByLmlzaGxuKG4pfSxpLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVnY2QodCkuYS5tb2QodCl9LGkucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT09KDEmdGhpcy53b3Jkc1swXSl9LGkucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLndvcmRzWzBdKX0saS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud29yZHNbMF0mdH0saS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24odCl7cigibnVtYmVyIj09dHlwZW9mIHQpO3ZhciBlPXQlMjYsbj0odC1lKS8yNixpPTE8PGU7aWYodGhpcy5sZW5ndGg8PW4pe2Zvcih2YXIgbz10aGlzLmxlbmd0aDtuKzE+bztvKyspdGhpcy53b3Jkc1tvXT0wO3JldHVybiB0aGlzLndvcmRzW25dfD1pLHRoaXMubGVuZ3RoPW4rMSx0aGlzfWZvcih2YXIgYT1pLG89bjswIT09YSYmbzx0aGlzLmxlbmd0aDtvKyspe3ZhciBzPXRoaXMud29yZHNbb107cys9YSxhPXM+Pj4yNixzJj02NzEwODg2Myx0aGlzLndvcmRzW29dPXN9cmV0dXJuIDAhPT1hJiYodGhpcy53b3Jkc1tvXT1hLHRoaXMubGVuZ3RoKyspLHRoaXN9LGkucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24odCl7dmFyIGU9MD50O2lmKGUmJih0PS10KSx0aGlzLnNpZ24mJiFlKXJldHVybi0xO2lmKCF0aGlzLnNpZ24mJmUpcmV0dXJuIDE7dCY9NjcxMDg4NjMsdGhpcy5zdHJpcCgpO3ZhciByO2lmKHRoaXMubGVuZ3RoPjEpcj0xO2Vsc2V7dmFyIG49dGhpcy53b3Jkc1swXTtyPW49PT10PzA6dD5uPy0xOjF9cmV0dXJuIHRoaXMuc2lnbiYmKHI9LXIpLHJ9LGkucHJvdG90eXBlLmNtcD1mdW5jdGlvbih0KXtpZih0aGlzLnNpZ24mJiF0LnNpZ24pcmV0dXJuLTE7aWYoIXRoaXMuc2lnbiYmdC5zaWduKXJldHVybiAxO3ZhciBlPXRoaXMudWNtcCh0KTtyZXR1cm4gdGhpcy5zaWduPy1lOmV9LGkucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24odCl7aWYodGhpcy5sZW5ndGg+dC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbj10aGlzLndvcmRzW3JdLGk9dC53b3Jkc1tyXTtpZihuIT09aSl7aT5uP2U9LTE6bj5pJiYoZT0xKTticmVha319cmV0dXJuIGV9LGkucmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZih0KX0saS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IikscighdGhpcy5zaWduLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHQuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh0KX0saS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiByKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LGkucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWQ9dCx0aGlzfSxpLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih0KXtyZXR1cm4gcighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh0KX0saS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKHQpe3JldHVybiByKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsdCl9LGkucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx0KX0saS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsdCl9LGkucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHQpLHRoaXMucmVkLm11bCh0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKHQpe3JldHVybiByKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5pbXVsKHRoaXMsdCl9LGkucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiByKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxpLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0saS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiByKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LGkucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxpLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0saS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHQpe3JldHVybiByKHRoaXMucmVkJiYhdC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsdCl9O3ZhciBtPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07cy5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB0PW5ldyBpKG51bGwpO3JldHVybiB0LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksdH0scy5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih0KXt2YXIgZSxyPXQ7ZG8gdGhpcy5zcGxpdChyLHRoaXMudG1wKSxyPXRoaXMuaW11bEsocikscj1yLmlhZGQodGhpcy50bXApLGU9ci5iaXRMZW5ndGgoKTt3aGlsZShlPnRoaXMubik7dmFyIG49ZTx0aGlzLm4/LTE6ci51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1uPyhyLndvcmRzWzBdPTAsci5sZW5ndGg9MSk6bj4wP3IuaXN1Yih0aGlzLnApOnIuc3RyaXAoKSxyfSxzLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe3QuaXNocm4odGhpcy5uLDAsZSl9LHMucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHQpe3JldHVybiB0LmltdWwodGhpcy5rKX0sbihsLHMpLGwucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTQxOTQzMDMsbj1NYXRoLm1pbih0Lmxlbmd0aCw5KSxpPTA7bj5pO2krKyllLndvcmRzW2ldPXQud29yZHNbaV07aWYoZS5sZW5ndGg9bix0Lmxlbmd0aDw9OSlyZXR1cm4gdC53b3Jkc1swXT0wLHZvaWQodC5sZW5ndGg9MSk7dmFyIG89dC53b3Jkc1s5XTtlLndvcmRzW2UubGVuZ3RoKytdPW8mcjtmb3IodmFyIGk9MTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXQud29yZHNbaV07dC53b3Jkc1tpLTEwXT0oYSZyKTw8NHxvPj4+MjIsbz1hfXQud29yZHNbaS0xMF09bz4+PjIyLHQubGVuZ3RoLT05fSxsLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXt0LndvcmRzW3QubGVuZ3RoXT0wLHQud29yZHNbdC5sZW5ndGgrMV09MCx0Lmxlbmd0aCs9Mjtmb3IodmFyIGUscj0wLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dC53b3Jkc1tuXTtlPTY0Kmkscis9OTc3KmksZSs9ci82NzEwODg2NHwwLHImPTY3MTA4ODYzLHQud29yZHNbbl09cixyPWV9cmV0dXJuIDA9PT10LndvcmRzW3QubGVuZ3RoLTFdJiYodC5sZW5ndGgtLSwwPT09dC53b3Jkc1t0Lmxlbmd0aC0xXSYmdC5sZW5ndGgtLSksdH0sbihjLHMpLG4odSxzKSxuKGgscyksaC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj0xOSp0LndvcmRzW3JdK2UsaT02NzEwODg2MyZuO24+Pj49MjYsdC53b3Jkc1tyXT1pLGU9bn1yZXR1cm4gMCE9PWUmJih0LndvcmRzW3QubGVuZ3RoKytdPWUpLHR9LGkuX3ByaW1lPWZ1bmN0aW9uIHkodCl7aWYobVt0XSlyZXR1cm4gbVt0XTt2YXIgeTtpZigiazI1NiI9PT10KXk9bmV3IGw7ZWxzZSBpZigicDIyNCI9PT10KXk9bmV3IGM7ZWxzZSBpZigicDE5MiI9PT10KXk9bmV3IHU7ZWxzZXtpZigicDI1NTE5IiE9PXQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrdCk7eT1uZXcgaH1yZXR1cm4gbVt0XT15LHl9LGYucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKHQpe3IoIXQuc2lnbiwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxyKHQucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGYucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHQsZSl7cighdC5zaWduJiYhZS5zaWduLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHIodC5yZWQmJnQucmVkPT09ZS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sZi5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UodCkuX2ZvcmNlUmVkKHRoaXMpOnQubW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxmLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24odCl7dmFyIGU9dC5jbG9uZSgpO3JldHVybiBlLnNpZ249IWUuc2lnbixlLmlhZGQodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGYucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmFkZChlKTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LGYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5pYWRkKGUpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyfSxmLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5zdWIoZSk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sZi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmlzdWIoZSk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyfSxmLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh0KSx0aGlzLmltb2QodC5zaGxuKGUpKX0sZi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkyKHQsZSksdGhpcy5pbW9kKHQuaW11bChlKSl9LGYucHJvdG90eXBlLm11bD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkyKHQsZSksdGhpcy5pbW9kKHQubXVsKGUpKX0sZi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbXVsKHQsdCl9LGYucHJvdG90eXBlLnNxcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tdWwodCx0KX0sZi5wcm90b3R5cGUuc3FydD1mdW5jdGlvbih0KXtpZigwPT09dC5jbXBuKDApKXJldHVybiB0LmNsb25lKCk7dmFyIGU9dGhpcy5tLmFuZGxuKDMpO2lmKHIoZSUyPT09MSksMz09PWUpe3ZhciBuPXRoaXMubS5hZGQobmV3IGkoMSkpLmlzaHJuKDIpLG89dGhpcy5wb3codCxuKTtyZXR1cm4gb31mb3IodmFyIGE9dGhpcy5tLnN1Ym4oMSkscz0wOzAhPT1hLmNtcG4oMCkmJjA9PT1hLmFuZGxuKDEpOylzKyssYS5pc2hybigxKTtyKDAhPT1hLmNtcG4oMCkpO3ZhciBsPW5ldyBpKDEpLnRvUmVkKHRoaXMpLGM9bC5yZWROZWcoKSx1PXRoaXMubS5zdWJuKDEpLmlzaHJuKDEpLGg9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihoPW5ldyBpKDIqaCpoKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coaCx1KS5jbXAoYyk7KWgucmVkSUFkZChjKTtmb3IodmFyIGY9dGhpcy5wb3coaCxhKSxvPXRoaXMucG93KHQsYS5hZGRuKDEpLmlzaHJuKDEpKSxkPXRoaXMucG93KHQsYSkscD1zOzAhPT1kLmNtcChsKTspe2Zvcih2YXIgZz1kLHY9MDswIT09Zy5jbXAobCk7disrKWc9Zy5yZWRTcXIoKTtyKHA+dik7dmFyIG09dGhpcy5wb3coZixuZXcgaSgxKS5pc2hsbihwLXYtMSkpO289by5yZWRNdWwobSksZj1tLnJlZFNxcigpLGQ9ZC5yZWRNdWwoZikscD12fXJldHVybiBvfSxmLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2ludm1wKHRoaXMubSk7cmV0dXJuIGUuc2lnbj8oZS5zaWduPSExLHRoaXMuaW1vZChlKS5yZWROZWcoKSk6dGhpcy5pbW9kKGUpfSxmLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24odCxlKXt2YXIgcj1bXTtpZigwPT09ZS5jbXBuKDApKXJldHVybiBuZXcgaSgxKTtmb3IodmFyIG49ZS5jbG9uZSgpOzAhPT1uLmNtcG4oMCk7KXIucHVzaChuLmFuZGxuKDEpKSxuLmlzaHJuKDEpO2Zvcih2YXIgbz10LGE9MDthPHIubGVuZ3RoJiYwPT09clthXTthKyssbz10aGlzLnNxcihvKSk7aWYoKythPHIubGVuZ3RoKWZvcih2YXIgbj10aGlzLnNxcihvKTthPHIubGVuZ3RoO2ErKyxuPXRoaXMuc3FyKG4pKTAhPT1yW2FdJiYobz10aGlzLm11bChvLG4pKTtyZXR1cm4gb30sZi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHQpe3ZhciBlPXQubW9kKHRoaXMubSk7cmV0dXJuIGU9PT10P2UuY2xvbmUoKTplfSxmLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih0KXt2YXIgZT10LmNsb25lKCk7cmV0dXJuIGUucmVkPW51bGwsZX0saS5tb250PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZCh0KX0sbihkLGYpLGQucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbW9kKHQuc2hsbih0aGlzLnNoaWZ0KSl9LGQucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW1vZCh0Lm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gZS5yZWQ9bnVsbCxlfSxkLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHQsZSl7aWYoMD09PXQuY21wbigwKXx8MD09PWUuY21wbigwKSlyZXR1cm4gdC53b3Jkc1swXT0wLHQubGVuZ3RoPTEsdDt2YXIgcj10LmltdWwoZSksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pc2hybih0aGlzLnNoaWZ0KSxvPWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/bz1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8MCYmKG89aS5pYWRkKHRoaXMubSkpLG8uX2ZvcmNlUmVkKHRoaXMpfSxkLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCxlKXtpZigwPT09dC5jbXBuKDApfHwwPT09ZS5jbXBuKDApKXJldHVybiBuZXcgaSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9dC5tdWwoZSksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxvPXIuaXN1YihuKS5pc2hybih0aGlzLnNoaWZ0KSxhPW87cmV0dXJuIG8uY21wKHRoaXMubSk+PTA/YT1vLmlzdWIodGhpcy5tKTpvLmNtcG4oMCk8MCYmKGE9by5pYWRkKHRoaXMubSkpLGEuX2ZvcmNlUmVkKHRoaXMpfSxkLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW1vZCh0Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7cmV0dXJuIGUuX2ZvcmNlUmVkKHRoaXMpfX0oInVuZGVmaW5lZCI9PXR5cGVvZiBlfHxlLHRoaXMpfSx7fV0sMjYyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGkodFswXSkqaSh0WzFdKX12YXIgaT10KCIuL2xpYi9ibi1zaWduIik7ZS5leHBvcnRzPW59LHsiLi9saWIvYm4tc2lnbiI6MjUzfV0sMjYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gaSh0WzBdLm11bChlWzFdKS5zdWIodFsxXS5tdWwoZVswXSkpLHRbMV0ubXVsKGVbMV0pKX12YXIgaT10KCIuL2xpYi9yYXRpb25hbGl6ZSIpO2UuZXhwb3J0cz1ufSx7Ii4vbGliL3JhdGlvbmFsaXplIjoyNTh9XSwyNjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZT10WzBdLHI9dFsxXTtpZigwPT09ZS5jbXBuKDApKXJldHVybiAwO3ZhciBuPWUuZGl2bW9kKHIpLGE9bi5kaXYscz1pKGEpLGw9bi5tb2Q7aWYoMD09PWwuY21wbigwKSlyZXR1cm4gcztpZihzKXt2YXIgYz1vKHMpKzQsdT1pKGwuc2hsbihjKS5kaXZSb3VuZChyKSk7cmV0dXJuIDA+cyYmKHU9LXUpLHMrdSpNYXRoLnBvdygyLC1jKX12YXIgaD1yLmJpdExlbmd0aCgpLWwuYml0TGVuZ3RoKCkrNTMsdT1pKGwuc2hsbihoKS5kaXZSb3VuZChyKSk7cmV0dXJuIDEwMjM+aD91Kk1hdGgucG93KDIsLWgpOih1Kj1NYXRoLnBvdygyLC0xMDIzKSx1Kk1hdGgucG93KDIsMTAyMy1oKSl9dmFyIGk9dCgiLi9saWIvYm4tdG8tbnVtIiksbz10KCIuL2xpYi9jdHoiKTtlLmV4cG9ydHM9bn0seyIuL2xpYi9ibi10by1udW0iOjI1NCwiLi9saWIvY3R6IjoyNTV9XSwyNjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj0wO3Q+cjsrK3IpaWYoIShlW3JdPD1lW3IrdF0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGkodCxlLHIsaSl7Zm9yKHZhciBvPTAsYT0wLHM9MCxsPXQubGVuZ3RoO2w+czsrK3Mpe3ZhciBjPXRbc107aWYoIW4oZSxjKSl7Zm9yKHZhciB1PTA7MiplPnU7Kyt1KXJbbysrXT1jW3VdO2lbYSsrXT1zfX1yZXR1cm4gYX1mdW5jdGlvbiBvKHQsZSxyLG4pe3ZhciBvPXQubGVuZ3RoLGE9ZS5sZW5ndGg7aWYoISgwPj1vfHwwPj1hKSl7dmFyIHM9dFswXS5sZW5ndGg+Pj4xO2lmKCEoMD49cykpe3ZhciBsLGM9aC5tYWxsb2NEb3VibGUoMipzKm8pLHU9aC5tYWxsb2NJbnQzMihvKTtpZihvPWkodCxzLGMsdSksbz4wKXtpZigxPT09cyYmbilmLmluaXQobyksbD1mLnN3ZWVwQ29tcGxldGUocyxyLDAsbyxjLHUsMCxvLGMsdSk7ZWxzZXt2YXIgcD1oLm1hbGxvY0RvdWJsZSgyKnMqYSksZz1oLm1hbGxvY0ludDMyKGEpO2E9aShlLHMscCxnKSxhPjAmJihmLmluaXQobythKSxsPTE9PT1zP2Yuc3dlZXBCaXBhcnRpdGUocyxyLDAsbyxjLHUsMCxhLHAsZyk6ZChzLHIsbixvLGMsdSxhLHAsZyksaC5mcmVlKHApLGguZnJlZShnKSl9aC5mcmVlKGMpLGguZnJlZSh1KX1yZXR1cm4gbH19fWZ1bmN0aW9uIGEodCxlKXt1LnB1c2goW3QsZV0pfWZ1bmN0aW9uIHModCl7cmV0dXJuIHU9W10sbyh0LHQsYSwhMCksdX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHU9W10sbyh0LGUsYSwhMSksdX1mdW5jdGlvbiBjKHQsZSxyKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBzKHQpO2Nhc2UgMjpyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9vKHQsdCxlLCEwKTpsKHQsZSk7Y2FzZSAzOnJldHVybiBvKHQsZSxyLCExKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiYm94LWludGVyc2VjdDogSW52YWxpZCBhcmd1bWVudHMiKX19ZS5leHBvcnRzPWM7dmFyIHUsaD10KCJ0eXBlZGFycmF5LXBvb2wiKSxmPXQoIi4vbGliL3N3ZWVwIiksZD10KCIuL2xpYi9pbnRlcnNlY3QiKX0seyIuL2xpYi9pbnRlcnNlY3QiOjI2NywiLi9saWIvc3dlZXAiOjI3MSwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwyNjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ImJydXRlRm9yY2UiKyh0PyJSZWQiOiJCbHVlIikrKGU/IkZsaXAiOiIiKSsocj8iRnVsbCI6IiIpLGk9WyJmdW5jdGlvbiAiLG4sIigiLHcuam9pbigpLCIpeyIsInZhciAiLGMsIj0yKiIsbywiOyJdLGw9ImZvcih2YXIgaT0iK3UrIiwiK3ArIj0iK2MrIioiK3UrIjtpPCIraCsiOysraSwiK3ArIis9IitjKyIpe3ZhciB4MD0iK2YrIlsiK2ErIisiK3ArIl0seDE9IitmKyJbIithKyIrIitwKyIrIitvKyJdLHhpPSIrZCsiW2ldOyIsQT0iZm9yKHZhciBqPSIrZysiLCIrYisiPSIrYysiKiIrZysiO2o8Iit2KyI7KytqLCIrYisiKz0iK2MrIil7dmFyIHkwPSIrbSsiWyIrYSsiKyIrYisiXSwiKyhyPyJ5MT0iK20rIlsiK2ErIisiK2IrIisiK28rIl0sIjoiIikrInlpPSIreSsiW2pdOyI7cmV0dXJuIHQ/aS5wdXNoKGwsXywiOiIsQSk6aS5wdXNoKEEsXywiOiIsbCkscj9pLnB1c2goImlmKHkxPHgwfHx4MTx5MCljb250aW51ZTsiKTplP2kucHVzaCgiaWYoeTA8PXgwfHx4MTx5MCljb250aW51ZTsiKTppLnB1c2goImlmKHkwPHgwfHx4MTx5MCljb250aW51ZTsiKSxpLnB1c2goImZvcih2YXIgaz0iK2ErIisxO2s8IitvKyI7KytrKXt2YXIgcjA9IitmKyJbaysiK3ArIl0scjE9IitmKyJbaysiK28rIisiK3ArIl0sYjA9IittKyJbaysiK2IrIl0sYjE9IittKyJbaysiK28rIisiK2IrIl07aWYocjE8YjB8fGIxPHIwKWNvbnRpbnVlICIrXysiO312YXIgIit4KyI9IitzKyIoIiksZT9pLnB1c2goInlpLHhpIik6aS5wdXNoKCJ4aSx5aSIpLGkucHVzaCgiKTtpZigiK3grIiE9PXZvaWQgMClyZXR1cm4gIit4KyI7fX19Iikse25hbWU6bixjb2RlOmkuam9pbigiIil9fWZ1bmN0aW9uIGkodCl7ZnVuY3Rpb24gZShlLHIpe3ZhciBvPW4oZSxyLHQpO2kucHVzaChvLmNvZGUpLGEucHVzaCgicmV0dXJuICIrby5uYW1lKyIoIit3LmpvaW4oKSsiKTsiKX12YXIgcj0iYnJ1dGVGb3JjZSIrKHQ/IkZ1bGwiOiJQYXJ0aWFsIiksaT1bXSxvPXcuc2xpY2UoKTt0fHxvLnNwbGljZSgzLDAsbCk7dmFyIGE9WyJmdW5jdGlvbiAiK3IrIigiK28uam9pbigpKyIpeyJdO2EucHVzaCgiaWYoIitoKyItIit1KyI+Iit2KyItIitnKyIpeyIpLHQ/KGUoITAsITEpLGEucHVzaCgifWVsc2V7IiksZSghMSwhMSkpOihhLnB1c2goImlmKCIrbCsiKXsiKSxlKCEwLCEwKSxhLnB1c2goIn1lbHNleyIpLGUoITAsITEpLGEucHVzaCgifX1lbHNle2lmKCIrbCsiKXsiKSxlKCExLCEwKSxhLnB1c2goIn1lbHNleyIpLGUoITEsITEpLGEucHVzaCgifSIpKSxhLnB1c2goIn19cmV0dXJuICIrcik7dmFyIHM9aS5qb2luKCIiKSthLmpvaW4oIiIpLGM9bmV3IEZ1bmN0aW9uKHMpO3JldHVybiBjKCl9dmFyIG89ImQiLGE9ImF4IixzPSJ2diIsbD0iZnAiLGM9ImVzIix1PSJycyIsaD0icmUiLGY9InJiIixkPSJyaSIscD0icnAiLGc9ImJzIix2PSJiZSIsbT0iYmIiLHk9ImJpIixiPSJicCIseD0icnYiLF89IlEiLHc9W28sYSxzLHUsaCxmLGQsZyx2LG0seV07ci5wYXJ0aWFsPWkoITEpLHIuZnVsbD1pKCEwKX0se31dLDI2NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9OCpjLmxvZzIoZSsxKSoodCsxKXwwLG49Yy5uZXh0UG93MihNKnIpO0wubGVuZ3RoPG4mJihsLmZyZWUoTCksTD1sLm1hbGxvY0ludDMyKG4pKTt2YXIgaT1jLm5leHRQb3cyKFQqcik7aT5TJiYobC5mcmVlKFMpLFM9bC5tYWxsb2NEb3VibGUoaSkpfWZ1bmN0aW9uIGkodCxlLHIsbixpLG8sYSxzLGwpe3ZhciBjPU0qdDtMW2NdPWUsTFtjKzFdPXIsTFtjKzJdPW4sTFtjKzNdPWksTFtjKzRdPW8sTFtjKzVdPWE7dmFyIHU9VCp0O1NbdV09cyxTW3UrMV09bH1mdW5jdGlvbiBvKHQsZSxyLG4saSxvLGEscyxsLGMsdSl7dmFyIGg9Mip0LGY9bCpoLGQ9Y1tmK2VdO3Q6Zm9yKHZhciBwPWksZz1pKmg7bz5wOysrcCxnKz1oKXt2YXIgdj1hW2crZV0sbT1hW2crZSt0XTtpZighKHY+ZHx8ZD5tfHxuJiZkPT09dikpe2Zvcih2YXIgeT1zW3BdLGI9ZSsxO3Q+YjsrK2Ipe3ZhciB2PWFbZytiXSxtPWFbZytiK3RdLHg9Y1tmK2JdLF89Y1tmK2IrdF07aWYoeD5tfHx2Pl8pY29udGludWUgdH12YXIgdztpZih3PW4/cih1LHkpOnIoeSx1KSx2b2lkIDAhPT13KXJldHVybiB3fX19ZnVuY3Rpb24gYSh0LGUscixuLGksbyxhLHMsbCxjKXt2YXIgdT0yKnQsaD1zKnUsZj1sW2grZV07dDpmb3IodmFyIGQ9bixwPW4qdTtpPmQ7KytkLHArPXUpe3ZhciBnPWFbZF07aWYoZyE9PWMpe3ZhciB2PW9bcCtlXSxtPW9bcCtlK3RdO2lmKCEodj5mfHxmPm0pKXtmb3IodmFyIHk9ZSsxO3Q+eTsrK3kpe3ZhciB2PW9bcCt5XSxtPW9bcCt5K3RdLGI9bFtoK3ldLHg9bFtoK3krdF07aWYoYj5tfHx2PngpY29udGludWUgdH12YXIgXz1yKGcsYyk7aWYodm9pZCAwIT09XylyZXR1cm4gX319fX1mdW5jdGlvbiBzKHQsZSxyLHMsbCxjLHUsZyxFKXtuKHQscyt1KTt2YXIgQyxQPTAsej0yKnQ7Zm9yKGkoUCsrLDAsMCxzLDAsdSxyPzE2OjAsLSgxLzApLDEvMCkscnx8aShQKyssMCwwLHUsMCxzLDEsLSgxLzApLDEvMCk7UD4wOyl7UC09MTt2YXIgUj1QKk0sTz1MW1JdLEk9TFtSKzFdLE49TFtSKzJdLGo9TFtSKzNdLEY9TFtSKzRdLEQ9TFtSKzVdLEI9UCpULFU9U1tCXSxWPVNbQisxXSxxPTEmRCxIPSEhKDE2JkQpLEc9bCxZPWMsWD1nLFc9RTtpZihxJiYoRz1nLFk9RSxYPWwsVz1jKSwhKDImRCYmKE49Xyh0LE8sSSxOLEcsWSxWKSxJPj1OKXx8NCZEJiYoST13KHQsTyxJLE4sRyxZLFUpLEk+PU4pKSl7dmFyIFo9Ti1JLCQ9Ri1qO2lmKEgpe2lmKHk+dCpaKihaKyQpKXtpZihDPWQuc2NhbkNvbXBsZXRlKHQsTyxlLEksTixHLFksaixGLFgsVyksdm9pZCAwIT09QylyZXR1cm4gQztjb250aW51ZX19ZWxzZXtpZih0Kk1hdGgubWluKFosJCk8dil7aWYoQz1oKHQsTyxlLHEsSSxOLEcsWSxqLEYsWCxXKSx2b2lkIDAhPT1DKXJldHVybiBDO2NvbnRpbnVlfWlmKG0+dCpaKiQpe2lmKEM9ZC5zY2FuQmlwYXJ0aXRlKHQsTyxlLHEsSSxOLEcsWSxqLEYsWCxXKSx2b2lkIDAhPT1DKXJldHVybiBDO2NvbnRpbnVlfX12YXIgSz1iKHQsTyxJLE4sRyxZLFUsVik7aWYoSz5JKWlmKHY+dCooSy1JKSl7aWYoQz1mKHQsTysxLGUsSSxLLEcsWSxqLEYsWCxXKSx2b2lkIDAhPT1DKXJldHVybiBDfWVsc2UgaWYoTz09PXQtMil7aWYoQz1xP2Quc3dlZXBCaXBhcnRpdGUodCxlLGosRixYLFcsSSxLLEcsWSk6ZC5zd2VlcEJpcGFydGl0ZSh0LGUsSSxLLEcsWSxqLEYsWCxXKSx2b2lkIDAhPT1DKXJldHVybiBDfWVsc2UgaShQKyssTysxLEksSyxqLEYscSwtKDEvMCksMS8wKSxpKFArKyxPKzEsaixGLEksSywxXnEsLSgxLzApLDEvMCk7aWYoTj5LKXt2YXIgUT1wKHQsTyxqLEYsWCxXKSxKPVhbeipRK09dLHR0PXgodCxPLFEsRixYLFcsSik7aWYoRj50dCYmaShQKyssTyxLLE4sdHQsRiwoNHxxKSsoSD8xNjowKSxKLFYpLFE+aiYmaShQKyssTyxLLE4saixRLCgyfHEpKyhIPzE2OjApLFUsSiksUSsxPT09dHQpe2lmKEM9SD9hKHQsTyxlLEssTixHLFksUSxYLFdbUV0pOm8odCxPLGUscSxLLE4sRyxZLFEsWCxXW1FdKSx2b2lkIDAhPT1DKXJldHVybiBDfWVsc2UgaWYodHQ+USl7dmFyIGV0O2lmKEgpe2lmKGV0PUEodCxPLEssTixHLFksSiksZXQ+Syl7dmFyIHJ0PXgodCxPLEssZXQsRyxZLEopO2lmKE89PT10LTIpe2lmKHJ0PksmJihDPWQuc3dlZXBDb21wbGV0ZSh0LGUsSyxydCxHLFksUSx0dCxYLFcpLHZvaWQgMCE9PUMpKXJldHVybiBDO2lmKGV0PnJ0JiYoQz1kLnN3ZWVwQmlwYXJ0aXRlKHQsZSxydCxldCxHLFksUSx0dCxYLFcpLHZvaWQgMCE9PUMpKXJldHVybiBDfWVsc2UgcnQ+SyYmaShQKyssTysxLEsscnQsUSx0dCwxNiwtKDEvMCksMS8wKSxldD5ydCYmKGkoUCsrLE8rMSxydCxldCxRLHR0LDAsLSgxLzApLDEvMCksaShQKyssTysxLFEsdHQscnQsZXQsMSwtKDEvMCksMS8wKSl9fWVsc2UgZXQ9cT9rKHQsTyxLLE4sRyxZLEopOkEodCxPLEssTixHLFksSiksZXQ+SyYmKE89PT10LTI/Qz1xP2Quc3dlZXBCaXBhcnRpdGUodCxlLFEsdHQsWCxXLEssZXQsRyxZKTpkLnN3ZWVwQmlwYXJ0aXRlKHQsZSxLLGV0LEcsWSxRLHR0LFgsVyk6KGkoUCsrLE8rMSxLLGV0LFEsdHQscSwtKDEvMCksMS8wKSxpKFArKyxPKzEsUSx0dCxLLGV0LDFecSwtKDEvMCksMS8wKSkpfX19fX1lLmV4cG9ydHM9czt2YXIgbD10KCJ0eXBlZGFycmF5LXBvb2wiKSxjPXQoImJpdC10d2lkZGxlIiksdT10KCIuL2JydXRlIiksaD11LnBhcnRpYWwsZj11LmZ1bGwsZD10KCIuL3N3ZWVwIikscD10KCIuL21lZGlhbiIpLGc9dCgiLi9wYXJ0aXRpb24iKSx2PTEyOCxtPTE8PDIyLHk9MTw8MjIsYj1nKCIhKGxvPj1wMCkmJiEocDE+PWhpKSIsWyJwMCIsInAxIl0pLHg9ZygibG89PT1wMCIsWyJwMCJdKSxfPWcoImxvPHAwIixbInAwIl0pLHc9ZygiaGk8PXAwIixbInAwIl0pLEE9ZygibG88PXAwJiZwMDw9aGkiLFsicDAiXSksaz1nKCJsbzxwMCYmcDA8PWhpIixbInAwIl0pLE09NixUPTIsRT0xMDI0LEw9bC5tYWxsb2NJbnQzMihFKSxTPWwubWFsbG9jRG91YmxlKEUpfSx7Ii4vYnJ1dGUiOjI2NiwiLi9tZWRpYW4iOjI2OCwiLi9wYXJ0aXRpb24iOjI2OSwiLi9zd2VlcCI6MjcxLCJiaXQtdHdpZGRsZSI6NDksInR5cGVkYXJyYXktcG9vbCI6MjM1fV0sMjY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixpLG8pe2Zvcih2YXIgYT0yKnQscz1hKihyKzEpK2UsbD1yKzE7bj5sOysrbCxzKz1hKWZvcih2YXIgYz1pW3NdLHU9bCxoPWEqKGwtMSk7dT5yJiZpW2grZV0+YzstLXUsaC09YSl7Zm9yKHZhciBmPWgsZD1oK2EscD0wO2E+cDsrK3AsKytmLCsrZCl7dmFyIGc9aVtmXTtpW2ZdPWlbZF0saVtkXT1nfXZhciB2PW9bdV07b1t1XT1vW3UtMV0sb1t1LTFdPXZ9fWZ1bmN0aW9uIGkodCxlLHIsaSxvLGwpe2lmKHIrMT49aSlyZXR1cm4gcjtmb3IodmFyIGM9cix1PWksaD1pK3I+Pj4xLGY9Mip0LGQ9aCxwPW9bZipoK2VdO3U+Yzspe2lmKHM+dS1jKXtuKHQsZSxjLHUsbyxsKSxwPW9bZipoK2VdO2JyZWFrfXZhciBnPXUtYyx2PU1hdGgucmFuZG9tKCkqZytjfDAsbT1vW2YqditlXSx5PU1hdGgucmFuZG9tKCkqZytjfDAsYj1vW2YqeStlXSx4PU1hdGgucmFuZG9tKCkqZytjfDAsXz1vW2YqeCtlXTtiPj1tP18+PWI/KGQ9eSxwPWIpOm0+PV8/KGQ9dixwPW0pOihkPXgscD1fKTpiPj1fPyhkPXkscD1iKTpfPj1tPyhkPXYscD1tKTooZD14LHA9Xyk7Zm9yKHZhciB3PWYqKHUtMSksQT1mKmQsaz0wO2Y+azsrK2ssKyt3LCsrQSl7dmFyIE09b1t3XTtvW3ddPW9bQV0sb1tBXT1NfXZhciBUPWxbdS0xXTtsW3UtMV09bFtkXSxsW2RdPVQsZD1hKHQsZSxjLHUtMSxvLGwscCk7Zm9yKHZhciB3PWYqKHUtMSksQT1mKmQsaz0wO2Y+azsrK2ssKyt3LCsrQSl7dmFyIE09b1t3XTtvW3ddPW9bQV0sb1tBXT1NfXZhciBUPWxbdS0xXTtpZihsW3UtMV09bFtkXSxsW2RdPVQsZD5oKXtmb3IodT1kLTE7dT5jJiZvW2YqKHUtMSkrZV09PT1wOyl1LT0xO3UrPTF9ZWxzZXtpZighKGg+ZCkpYnJlYWs7Zm9yKGM9ZCsxO3U+YyYmb1tmKmMrZV09PT1wOyljKz0xfX1yZXR1cm4gYSh0LGUscixoLG8sbCxvW2YqaCtlXSl9ZS5leHBvcnRzPWk7dmFyIG89dCgiLi9wYXJ0aXRpb24iKSxhPW8oImxvPHAwIixbInAwIl0pLHM9OH0seyIuL3BhcnRpdGlvbiI6MjY5fV0sMjY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj0iYWJjZGVmIi5zcGxpdCgiIikuY29uY2F0KGUpLG49W107cmV0dXJuIHQuaW5kZXhPZigibG8iKT49MCYmbi5wdXNoKCJsbz1lW2srbl0iKSx0LmluZGV4T2YoImhpIik+PTAmJm4ucHVzaCgiaGk9ZVtrK29dIiksci5wdXNoKGkucmVwbGFjZSgiXyIsbi5qb2luKCkpLnJlcGxhY2UoIiQiLHQpKSxGdW5jdGlvbi5hcHBseSh2b2lkIDAscil9ZS5leHBvcnRzPW47dmFyIGk9ImZvcih2YXIgaj0yKmEsaz1qKmMsbD1rLG09YyxuPWIsbz1hK2IscD1jO2Q+cDsrK3Asays9ail7dmFyIF87aWYoJClpZihtPT09cCltKz0xLGwrPWo7ZWxzZXtmb3IodmFyIHM9MDtqPnM7KytzKXt2YXIgdD1lW2src107ZVtrK3NdPWVbbF0sZVtsKytdPXR9dmFyIHU9ZltwXTtmW3BdPWZbbV0sZlttKytdPXV9fXJldHVybiBtIn0se31dLDI3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7NCpmPj1lP2koMCxlLTEsdCk6aCgwLGUtMSx0KX1mdW5jdGlvbiBpKHQsZSxyKXtmb3IodmFyIG49MioodCsxKSxpPXQrMTtlPj1pOysraSl7Zm9yKHZhciBvPXJbbisrXSxhPXJbbisrXSxzPWksbD1uLTI7cy0tID50Oyl7dmFyIGM9cltsLTJdLHU9cltsLTFdO2lmKG8+YylicmVhaztpZihjPT09byYmYT51KWJyZWFrO3JbbF09YyxyW2wrMV09dSxsLT0yfXJbbF09byxyW2wrMV09YX19ZnVuY3Rpb24gbyh0LGUscil7dCo9MixlKj0yO3ZhciBuPXJbdF0saT1yW3QrMV07clt0XT1yW2VdLHJbdCsxXT1yW2UrMV0scltlXT1uLHJbZSsxXT1pfWZ1bmN0aW9uIGEodCxlLHIpe3QqPTIsZSo9MixyW3RdPXJbZV0sclt0KzFdPXJbZSsxXX1mdW5jdGlvbiBzKHQsZSxyLG4pe3QqPTIsZSo9MixyKj0yO3ZhciBpPW5bdF0sbz1uW3QrMV07blt0XT1uW2VdLG5bdCsxXT1uW2UrMV0sbltlXT1uW3JdLG5bZSsxXT1uW3IrMV0sbltyXT1pLG5bcisxXT1vfWZ1bmN0aW9uIGwodCxlLHIsbixpKXt0Kj0yLGUqPTIsaVt0XT1pW2VdLGlbZV09cixpW3QrMV09aVtlKzFdLGlbZSsxXT1ufWZ1bmN0aW9uIGModCxlLHIpe3QqPTIsZSo9Mjt2YXIgbj1yW3RdLGk9cltlXTtyZXR1cm4gaT5uPyExOm49PT1pP3JbdCsxXT5yW2UrMV06ITB9ZnVuY3Rpb24gdSh0LGUscixuKXt0Kj0yO3ZhciBpPW5bdF07cmV0dXJuIGU+aT8hMDppPT09ZT9uW3QrMV08cjohMX1mdW5jdGlvbiBoKHQsZSxyKXt2YXIgbj0oZS10KzEpLzZ8MCxkPXQrbixwPWUtbixnPXQrZT4+MSx2PWctbixtPWcrbix5PWQsYj12LHg9ZyxfPW0sdz1wLEE9dCsxLGs9ZS0xLE09MDtjKHksYixyKSYmKE09eSx5PWIsYj1NKSxjKF8sdyxyKSYmKE09XyxfPXcsdz1NKSxjKHkseCxyKSYmKE09eSx5PXgseD1NKSxjKGIseCxyKSYmKE09YixiPXgseD1NKSxjKHksXyxyKSYmKE09eSx5PV8sXz1NKSxjKHgsXyxyKSYmKE09eCx4PV8sXz1NKSxjKGIsdyxyKSYmKE09YixiPXcsdz1NKSxjKGIseCxyKSYmKE09YixiPXgseD1NKSxjKF8sdyxyKSYmKE09XyxfPXcsdz1NKTtmb3IodmFyIFQ9clsyKmJdLEU9clsyKmIrMV0sTD1yWzIqX10sUz1yWzIqXysxXSxDPTIqeSxQPTIqeCx6PTIqdyxSPTIqZCxPPTIqZyxJPTIqcCxOPTA7Mj5OOysrTil7dmFyIGo9cltDK05dLEY9cltQK05dLEQ9clt6K05dO3JbUitOXT1qLHJbTytOXT1GLHJbSStOXT1EfWEodix0LHIpLGEobSxlLHIpO2Zvcih2YXIgQj1BO2s+PUI7KytCKWlmKHUoQixULEUscikpQiE9PUEmJm8oQixBLHIpLCsrQTtlbHNlIGlmKCF1KEIsTCxTLHIpKWZvcig7Oyl7aWYodShrLEwsUyxyKSl7dShrLFQsRSxyKT8ocyhCLEEsayxyKSwrK0EsLS1rKToobyhCLGssciksLS1rKTticmVha31pZigtLWs8QilicmVha31sKHQsQS0xLFQsRSxyKSxsKGUsaysxLEwsUyxyKSxmPj1BLTItdD9pKHQsQS0yLHIpOmgodCxBLTIsciksZj49ZS0oaysyKT9pKGsrMixlLHIpOmgoaysyLGUsciksZj49ay1BP2koQSxrLHIpOmgoQSxrLHIpfWUuZXhwb3J0cz1uO3ZhciBmPTMyfSx7fV0sMjcxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9aC5uZXh0UG93Mih0KTtnLmxlbmd0aDxlJiYodS5mcmVlKGcpLGc9dS5tYWxsb2NJbnQzMihlKSksdi5sZW5ndGg8ZSYmKHUuZnJlZSh2KSx2PXUubWFsbG9jSW50MzIoZSkpLG0ubGVuZ3RoPGUmJih1LmZyZWUobSksbT11Lm1hbGxvY0ludDMyKGUpKSx5Lmxlbmd0aDxlJiYodS5mcmVlKHkpLHk9dS5tYWxsb2NJbnQzMihlKSksYi5sZW5ndGg8ZSYmKHUuZnJlZShiKSxiPXUubWFsbG9jSW50MzIoZSkpLHgubGVuZ3RoPGUmJih1LmZyZWUoeCkseD11Lm1hbGxvY0ludDMyKGUpKTt2YXIgcj04KmU7Xy5sZW5ndGg8ciYmKHUuZnJlZShfKSxfPXUubWFsbG9jRG91YmxlKHIpKX1mdW5jdGlvbiBpKHQsZSxyLG4pe3ZhciBpPWVbbl0sbz10W3ItMV07dFtpXT1vLGVbb109aX1mdW5jdGlvbiBvKHQsZSxyLG4pe3Rbcl09bixlW25dPXJ9ZnVuY3Rpb24gYSh0LGUscixuLGEscyxsLGMsdSxoKXtmb3IodmFyIHA9MCxiPTIqdCx4PXQtMSx3PWItMSxBPXI7bj5BOysrQSl7dmFyIGs9c1tBXSxNPWIqQTtfW3ArK109YVtNK3hdLF9bcCsrXT0tKGsrMSksX1twKytdPWFbTSt3XSxfW3ArK109a31mb3IodmFyIEE9bDtjPkE7KytBKXt2YXIgaz1oW0FdK2QsVD1iKkE7X1twKytdPXVbVCt4XSxfW3ArK109LWssX1twKytdPXVbVCt3XSxfW3ArK109a312YXIgRT1wPj4+MTtmKF8sRSk7Zm9yKHZhciBMPTAsUz0wLEE9MDtFPkE7KytBKXt2YXIgQz0wfF9bMipBKzFdO2lmKEM+PWQpQz1DLWR8MCxpKG0seSxTLS0sQyk7ZWxzZSBpZihDPj0wKWkoZyx2LEwtLSxDKTtlbHNlIGlmKC1kPj1DKXtDPS1DLWR8MDtmb3IodmFyIFA9MDtMPlA7KytQKXt2YXIgej1lKGdbUF0sQyk7aWYodm9pZCAwIT09eilyZXR1cm4gen1vKG0seSxTKyssQyl9ZWxzZXtDPS1DLTF8MDtmb3IodmFyIFA9MDtTPlA7KytQKXt2YXIgej1lKEMsbVtQXSk7aWYodm9pZCAwIT09eilyZXR1cm4gen1vKGcsdixMKyssQyl9fX1mdW5jdGlvbiBzKHQsZSxyLG4sYSxzLGwsYyx1LGgpe2Zvcih2YXIgZD0wLHA9Mip0LHc9dC0xLEE9cC0xLGs9cjtuPms7KytrKXt2YXIgTT1zW2tdKzE8PDEsVD1wKms7X1tkKytdPWFbVCt3XSxfW2QrK109LU0sX1tkKytdPWFbVCtBXSxfW2QrK109TX1mb3IodmFyIGs9bDtjPms7KytrKXt2YXIgTT1oW2tdKzE8PDEsRT1wKms7X1tkKytdPXVbRSt3XSxfW2QrK109MXwtTSxfW2QrK109dVtFK0FdLF9bZCsrXT0xfE19dmFyIEw9ZD4+PjE7ZihfLEwpO2Zvcih2YXIgUz0wLEM9MCxQPTAsaz0wO0w+azsrK2spe3ZhciB6PTB8X1syKmsrMV0sUj0xJno7aWYoTC0xPmsmJno+PjE9PT1fWzIqayszXT4+MSYmKFI9MixrKz0xKSwwPnope2Zvcih2YXIgTz0tKHo+PjEpLTEsST0wO1A+STsrK0kpe3ZhciBOPWUoYltJXSxPKTtpZih2b2lkIDAhPT1OKXJldHVybiBOfWlmKDAhPT1SKWZvcih2YXIgST0wO1M+STsrK0kpe3ZhciBOPWUoZ1tJXSxPKTtpZih2b2lkIDAhPT1OKXJldHVybiBOfWlmKDEhPT1SKWZvcih2YXIgST0wO0M+STsrK0kpe3ZhciBOPWUobVtJXSxPKTtpZih2b2lkIDAhPT1OKXJldHVybiBOfTA9PT1SP28oZyx2LFMrKyxPKToxPT09Uj9vKG0seSxDKyssTyk6Mj09PVImJm8oYix4LFArKyxPKX1lbHNle3ZhciBPPSh6Pj4xKS0xOzA9PT1SP2koZyx2LFMtLSxPKToxPT09Uj9pKG0seSxDLS0sTyk6Mj09PVImJmkoYix4LFAtLSxPKX19fWZ1bmN0aW9uIGwodCxlLHIsbixhLHMsbCxjLHUsaCxwLG0pe3ZhciB5PTAsYj0yKnQseD1lLHc9ZSt0LEE9MSxrPTE7bj9rPWQ6QT1kO2Zvcih2YXIgTT1hO3M+TTsrK00pe3ZhciBUPU0rQSxFPWIqTTtfW3krK109bFtFK3hdLF9beSsrXT0tVCxfW3krK109bFtFK3ddLF9beSsrXT1UfWZvcih2YXIgTT11O2g+TTsrK00pe3ZhciBUPU0rayxMPWIqTTtfW3krK109cFtMK3hdLF9beSsrXT0tVH12YXIgUz15Pj4+MTtmKF8sUyk7Zm9yKHZhciBDPTAsTT0wO1M+TTsrK00pe3ZhciBQPTB8X1syKk0rMV07aWYoMD5QKXt2YXIgVD0tUCx6PSExO2lmKFQ+PWQ/KHo9IW4sVC09ZCk6KHo9ISFuLFQtPTEpLHopbyhnLHYsQysrLFQpO2Vsc2V7dmFyIFI9bVtUXSxPPWIqVCxJPXBbTytlKzFdLE49cFtPK2UrMSt0XTt0OmZvcih2YXIgaj0wO0M+ajsrK2ope3ZhciBGPWdbal0sRD1iKkY7aWYoIShOPGxbRCtlKzFdfHxsW0QrZSsxK3RdPEkpKXtmb3IodmFyIEI9ZSsyO3Q+QjsrK0IpaWYocFtPK0IrdF08bFtEK0JdfHxsW0QrQit0XTxwW08rQl0pY29udGludWUgdDt2YXIgVSxWPWNbRl07aWYoVT1uP3IoUixWKTpyKFYsUiksdm9pZCAwIT09VSlyZXR1cm4gVX19fX1lbHNlIGkoZyx2LEMtLSxQLUEpfX1mdW5jdGlvbiBjKHQsZSxyLG4saSxvLGEscyxsLGMsdSl7Zm9yKHZhciBoPTAscD0yKnQsdj1lLG09ZSt0LHk9bjtpPnk7Kyt5KXt2YXIgYj15K2QseD1wKnk7X1toKytdPW9beCt2XSxfW2grK109LWIsX1toKytdPW9beCttXSxfW2grK109Yn1mb3IodmFyIHk9cztsPnk7Kyt5KXt2YXIgYj15KzEsdz1wKnk7X1toKytdPWNbdyt2XSxfW2grK109LWJ9dmFyIEE9aD4+PjE7ZihfLEEpO2Zvcih2YXIgaz0wLHk9MDtBPnk7Kyt5KXt2YXIgTT0wfF9bMip5KzFdO2lmKDA+TSl7dmFyIGI9LU07aWYoYj49ZClnW2srK109Yi1kO2Vsc2V7Yi09MTt2YXIgVD11W2JdLEU9cCpiLEw9Y1tFK2UrMV0sUz1jW0UrZSsxK3RdO3Q6Zm9yKHZhciBDPTA7az5DOysrQyl7dmFyIFA9Z1tDXSx6PWFbUF07aWYoej09PVQpYnJlYWs7dmFyIFI9cCpQO2lmKCEoUzxvW1IrZSsxXXx8b1tSK2UrMSt0XTxMKSl7Zm9yKHZhciBPPWUrMjt0Pk87KytPKWlmKGNbRStPK3RdPG9bUitPXXx8b1tSK08rdF08Y1tFK09dKWNvbnRpbnVlIHQ7dmFyIEk9cih6LFQpO2lmKHZvaWQgMCE9PUkpcmV0dXJuIEl9fX19ZWxzZXtmb3IodmFyIGI9TS1kLEM9ay0xO0M+PTA7LS1DKWlmKGdbQ109PT1iKXtmb3IodmFyIE89QysxO2s+TzsrK08pZ1tPLTFdPWdbT107YnJlYWt9LS1rfX19ZS5leHBvcnRzPXtpbml0Om4sc3dlZXBCaXBhcnRpdGU6YSxzd2VlcENvbXBsZXRlOnMsc2NhbkJpcGFydGl0ZTpsLHNjYW5Db21wbGV0ZTpjfTt2YXIgdT10KCJ0eXBlZGFycmF5LXBvb2wiKSxoPXQoImJpdC10d2lkZGxlIiksZj10KCIuL3NvcnQiKSxkPTE8PDI4LHA9MTAyNCxnPXUubWFsbG9jSW50MzIocCksdj11Lm1hbGxvY0ludDMyKHApLG09dS5tYWxsb2NJbnQzMihwKSx5PXUubWFsbG9jSW50MzIocCksYj11Lm1hbGxvY0ludDMyKHApLHg9dS5tYWxsb2NJbnQzMihwKSxfPXUubWFsbG9jRG91YmxlKDgqcCl9LHsiLi9zb3J0IjoyNzAsImJpdC10d2lkZGxlIjo0OSwidHlwZWRhcnJheS1wb29sIjoyMzV9XSwyNzI6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcih0LGUpewpyZXR1cm4gZFswXT10LGRbMV09ZSxmWzBdfWZ1bmN0aW9uIG4odCl7cmV0dXJuIGZbMF09dCxkWzBdfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGZbMF09dCxkWzFdfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZFsxXT10LGRbMF09ZSxmWzBdfWZ1bmN0aW9uIGEodCl7cmV0dXJuIGZbMF09dCxkWzFdfWZ1bmN0aW9uIHModCl7cmV0dXJuIGZbMF09dCxkWzBdfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gcC53cml0ZVVJbnQzMkxFKHQsMCwhMCkscC53cml0ZVVJbnQzMkxFKGUsNCwhMCkscC5yZWFkRG91YmxlTEUoMCwhMCl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gcC53cml0ZURvdWJsZUxFKHQsMCwhMCkscC5yZWFkVUludDMyTEUoMCwhMCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gcC53cml0ZURvdWJsZUxFKHQsMCwhMCkscC5yZWFkVUludDMyTEUoNCwhMCl9dmFyIGg9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBGbG9hdDY0QXJyYXkpe3ZhciBmPW5ldyBGbG9hdDY0QXJyYXkoMSksZD1uZXcgVWludDMyQXJyYXkoZi5idWZmZXIpO2ZbMF09MSxoPSEwLDEwNzI2OTMyNDg9PT1kWzFdPyhlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZbMF09dCxbZFswXSxkWzFdXX0sZS5leHBvcnRzLnBhY2s9cixlLmV4cG9ydHMubG89bixlLmV4cG9ydHMuaGk9aSk6MTA3MjY5MzI0OD09PWRbMF0/KGUuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZlswXT10LFtkWzFdLGRbMF1dfSxlLmV4cG9ydHMucGFjaz1vLGUuZXhwb3J0cy5sbz1hLGUuZXhwb3J0cy5oaT1zKTpoPSExfWlmKCFoKXt2YXIgcD1uZXcgdCg4KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHAud3JpdGVEb3VibGVMRSh0LDAsITApLFtwLnJlYWRVSW50MzJMRSgwLCEwKSxwLnJlYWRVSW50MzJMRSg0LCEwKV19LGUuZXhwb3J0cy5wYWNrPWwsZS5leHBvcnRzLmxvPWMsZS5leHBvcnRzLmhpPXV9ZS5leHBvcnRzLnNpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGUuZXhwb3J0cy5oaSh0KT4+PjMxfSxlLmV4cG9ydHMuZXhwb25lbnQ9ZnVuY3Rpb24odCl7dmFyIHI9ZS5leHBvcnRzLmhpKHQpO3JldHVybihyPDwxPj4+MjEpLTEwMjN9LGUuZXhwb3J0cy5mcmFjdGlvbj1mdW5jdGlvbih0KXt2YXIgcj1lLmV4cG9ydHMubG8odCksbj1lLmV4cG9ydHMuaGkodCksaT0xMDQ4NTc1Jm47cmV0dXJuIDIxNDY0MzUwNzImbiYmKGkrPTE8PDIwKSxbcixpXX0sZS5leHBvcnRzLmRlbm9ybWFsaXplZD1mdW5jdGlvbih0KXt2YXIgcj1lLmV4cG9ydHMuaGkodCk7cmV0dXJuISgyMTQ2NDM1MDcyJnIpfX0pLmNhbGwodGhpcyx0KCJidWZmZXIiKS5CdWZmZXIpfSx7YnVmZmVyOjUwfV0sMjczOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtpZihpc05hTih0KXx8aXNOYU4oZSkpcmV0dXJuIE5hTjtpZih0PT09ZSlyZXR1cm4gdDtpZigwPT09dClyZXR1cm4gMD5lPy1vOm87dmFyIHI9aS5oaSh0KSxuPWkubG8odCk7cmV0dXJuIGU+dD09dD4wP249PT1hPyhyKz0xLG49MCk6bis9MTowPT09bj8obj1hLHItPTEpOm4tPTEsaS5wYWNrKG4scil9dmFyIGk9dCgiZG91YmxlLWJpdHMiKSxvPU1hdGgucG93KDIsLTEwNzQpLGE9LTE+Pj4wO2UuZXhwb3J0cz1ufSx7ImRvdWJsZS1iaXRzIjoyNzJ9XSwyNzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxvPTA7cj5vOysrbyluW29dPWkodFtvXSxlW29dKTtyZXR1cm4gbn12YXIgaT10KCJiaWctcmF0L2FkZCIpO2UuZXhwb3J0cz1ufSx7ImJpZy1yYXQvYWRkIjoyNDh9XSwyNzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3IpZVtyXT1pKHRbcl0pO3JldHVybiBlfWUuZXhwb3J0cz1uO3ZhciBpPXQoImJpZy1yYXQiKX0seyJiaWctcmF0IjoyNTF9XSwyNzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj1pKGUpLG49dC5sZW5ndGgsYT1uZXcgQXJyYXkobikscz0wO24+czsrK3MpYVtzXT1vKHRbc10scik7cmV0dXJuIGF9dmFyIGk9dCgiYmlnLXJhdCIpLG89dCgiYmlnLXJhdC9tdWwiKTtlLmV4cG9ydHM9bn0seyJiaWctcmF0IjoyNTEsImJpZy1yYXQvbXVsIjoyNjB9XSwyNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxvPTA7cj5vOysrbyluW29dPWkodFtvXSxlW29dKTtyZXR1cm4gbn12YXIgaT10KCJiaWctcmF0L3N1YiIpO2UuZXhwb3J0cz1ufSx7ImJpZy1yYXQvc3ViIjoyNjN9XSwyNzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuKXtmb3IodmFyIGk9MDsyPmk7KytpKXt2YXIgbz10W2ldLGE9ZVtpXSxzPU1hdGgubWluKG8sYSksbD1NYXRoLm1heChvLGEpLGM9cltpXSx1PW5baV0saD1NYXRoLm1pbihjLHUpLGY9TWF0aC5tYXgoYyx1KTtpZihzPmZ8fGg+bClyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBpKHQsZSxyLGkpe3ZhciBhPW8odCxyLGkpLHM9byhlLHIsaSk7aWYoYT4wJiZzPjB8fDA+YSYmMD5zKXJldHVybiExO3ZhciBsPW8ocix0LGUpLGM9byhpLHQsZSk7cmV0dXJuIGw+MCYmYz4wfHwwPmwmJjA+Yz8hMTowPT09YSYmMD09PXMmJjA9PT1sJiYwPT09Yz9uKHQsZSxyLGkpOiEwfWUuZXhwb3J0cz1pO3ZhciBvPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpWzNdfSx7InJvYnVzdC1vcmllbnRhdGlvbiI6MjE2fV0sMjc5OltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzE5NV1bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVwOjE5NX1dLDI4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPWkodCxlLmxlbmd0aCksbj1uZXcgQXJyYXkoZS5sZW5ndGgpLG89bmV3IEFycmF5KGUubGVuZ3RoKSxhPVtdLHM9MDtzPGUubGVuZ3RoOysrcyl7dmFyIGw9cltzXS5sZW5ndGg7b1tzXT1sLG5bc109ITAsMT49bCYmYS5wdXNoKHMpfWZvcig7YS5sZW5ndGg+MDspe3ZhciBjPWEucG9wKCk7bltjXT0hMTtmb3IodmFyIHU9cltjXSxzPTA7czx1Lmxlbmd0aDsrK3Mpe3ZhciBoPXVbc107MD09PS0tb1toXSYmYS5wdXNoKGgpfX1mb3IodmFyIGY9bmV3IEFycmF5KGUubGVuZ3RoKSxkPVtdLHM9MDtzPGUubGVuZ3RoOysrcylpZihuW3NdKXt2YXIgYz1kLmxlbmd0aDtmW3NdPWMsZC5wdXNoKGVbc10pfWVsc2UgZltzXT0tMTtmb3IodmFyIHA9W10scz0wO3M8dC5sZW5ndGg7KytzKXt2YXIgZz10W3NdO25bZ1swXV0mJm5bZ1sxXV0mJnAucHVzaChbZltnWzBdXSxmW2dbMV1dXSl9cmV0dXJuW3AsZF19ZS5leHBvcnRzPW47dmFyIGk9dCgiZWRnZXMtdG8tYWRqYWNlbmN5LWxpc3QiKX0seyJlZGdlcy10by1hZGphY2VuY3ktbGlzdCI6MjgxfV0sMjgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj10Lmxlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIGUpe2U9MDtmb3IodmFyIG49MDtyPm47KytuKXt2YXIgbz10W25dO2U9TWF0aC5tYXgoZSxvWzBdLG9bMV0pfWU9KDB8ZSkrMX1lPTB8ZTtmb3IodmFyIGE9bmV3IEFycmF5KGUpLG49MDtlPm47KytuKWFbbl09W107Zm9yKHZhciBuPTA7cj5uOysrbil7dmFyIG89dFtuXTthW29bMF1dLnB1c2gob1sxXSksYVtvWzFdXS5wdXNoKG9bMF0pfWZvcih2YXIgcz0wO2U+czsrK3MpaShhW3NdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pO3JldHVybiBhfWUuZXhwb3J0cz1uO3ZhciBpPXQoInVuaXEiKX0se3VuaXE6MjM2fV0sMjgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmdW5jdGlvbiByKHQsZSl7dmFyIHI9Y1tlXVt0W2VdXTtyLnNwbGljZShyLmluZGV4T2YodCksMSl9ZnVuY3Rpb24gbih0LG4sbyl7Zm9yKHZhciBhLHMsbCx1PTA7Mj51OysrdSlpZihjW3VdW25dLmxlbmd0aD4wKXthPWNbdV1bbl1bMF0sbD11O2JyZWFrfXM9YVsxXmxdO2Zvcih2YXIgaD0wOzI+aDsrK2gpZm9yKHZhciBmPWNbaF1bbl0sZD0wO2Q8Zi5sZW5ndGg7KytkKXt2YXIgcD1mW2RdLGc9cFsxXmhdLHY9aShlW3RdLGVbbl0sZVtzXSxlW2ddKTt2PjAmJihhPXAscz1nLGw9aCl9cmV0dXJuIG8/czooYSYmcihhLGwpLHMpfWZ1bmN0aW9uIG8odCxvKXt2YXIgYT1jW29dW3RdWzBdLHM9W3RdO3IoYSxvKTtmb3IodmFyIGw9YVsxXm9dOzspe2Zvcig7bCE9PXQ7KXMucHVzaChsKSxsPW4oc1tzLmxlbmd0aC0yXSxsLCExKTtpZihjWzBdW3RdLmxlbmd0aCtjWzFdW3RdLmxlbmd0aD09PTApYnJlYWs7dmFyIHU9c1tzLmxlbmd0aC0xXSxoPXQsZj1zWzFdLGQ9bih1LGgsITApO2lmKGkoZVt1XSxlW2hdLGVbZl0sZVtkXSk8MClicmVhaztzLnB1c2godCksbD1uKHUsaCl9cmV0dXJuIHN9ZnVuY3Rpb24gYSh0LGUpe3JldHVybiBlWzFdPT09ZVtlLmxlbmd0aC0xXX1mb3IodmFyIHM9MHxlLmxlbmd0aCxsPXQubGVuZ3RoLGM9W25ldyBBcnJheShzKSxuZXcgQXJyYXkocyldLHU9MDtzPnU7Kyt1KWNbMF1bdV09W10sY1sxXVt1XT1bXTtmb3IodmFyIHU9MDtsPnU7Kyt1KXt2YXIgaD10W3VdO2NbMF1baFswXV0ucHVzaChoKSxjWzFdW2hbMV1dLnB1c2goaCl9Zm9yKHZhciBmPVtdLHU9MDtzPnU7Kyt1KWNbMF1bdV0ubGVuZ3RoK2NbMV1bdV0ubGVuZ3RoPT09MCYmZi5wdXNoKFt1XSk7Zm9yKHZhciB1PTA7cz51OysrdSlmb3IodmFyIGQ9MDsyPmQ7KytkKXtmb3IodmFyIHA9W107Y1tkXVt1XS5sZW5ndGg+MDspe3ZhciBnPShjWzBdW3VdLmxlbmd0aCxvKHUsZCkpO2EocCxnKT9wLnB1c2guYXBwbHkocCxnKToocC5sZW5ndGg+MCYmZi5wdXNoKHApLHA9Zyl9cC5sZW5ndGg+MCYmZi5wdXNoKHApfXJldHVybiBmfWUuZXhwb3J0cz1uO3ZhciBpPXQoImNvbXBhcmUtYW5nbGUiKX0seyJjb21wYXJlLWFuZ2xlIjoyODN9XSwyODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49cyh0WzBdLC1lWzBdKSxpPXModFsxXSwtZVsxXSksbz1zKHJbMF0sLWVbMF0pLGE9cyhyWzFdLC1lWzFdKSx1PWMobChuLG8pLGwoaSxhKSk7cmV0dXJuIHVbdS5sZW5ndGgtMV0+PTB9ZnVuY3Rpb24gaSh0LGUscixpKXt2YXIgcz1vKGUscixpKTtpZigwPT09cyl7dmFyIGw9YShvKHQsZSxyKSksYz1hKG8odCxlLGkpKTtpZihsPT09Yyl7aWYoMD09PWwpe3ZhciB1PW4odCxlLHIpLGg9bih0LGUsaSk7cmV0dXJuIHU9PT1oPzA6dT8xOi0xfXJldHVybiAwfXJldHVybiAwPT09Yz9sPjA/LTE6bih0LGUsaSk/LTE6MTowPT09bD9jPjA/MTpuKHQsZSxyKT8xOi0xOmEoYy1sKX12YXIgZj1vKHQsZSxyKTtpZihmPjApcmV0dXJuIHM+MCYmbyh0LGUsaSk+MD8xOi0xO2lmKDA+ZilyZXR1cm4gcz4wfHxvKHQsZSxpKT4wPzE6LTE7dmFyIGQ9byh0LGUsaSk7cmV0dXJuIGQ+MD8xOm4odCxlLHIpPzE6LTF9ZS5leHBvcnRzPWk7dmFyIG89dCgicm9idXN0LW9yaWVudGF0aW9uIiksYT10KCJzaWdudW0iKSxzPXQoInR3by1zdW0iKSxsPXQoInJvYnVzdC1wcm9kdWN0IiksYz10KCJyb2J1c3Qtc3VtIil9LHsicm9idXN0LW9yaWVudGF0aW9uIjoyMTYsInJvYnVzdC1wcm9kdWN0IjoyODQsInJvYnVzdC1zdW0iOjIxOSxzaWdudW06Mjg1LCJ0d28tc3VtIjoyMzR9XSwyODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gbyhlLHRbMF0pO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gbyh0LGVbMF0pO2lmKDA9PT10Lmxlbmd0aHx8MD09PWUubGVuZ3RoKXJldHVyblswXTt2YXIgcj1bMF07aWYodC5sZW5ndGg8ZS5sZW5ndGgpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24pcj1pKHIsbyhlLHRbbl0pKTtlbHNlIGZvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKXI9aShyLG8odCxlW25dKSk7cmV0dXJuIHJ9dmFyIGk9dCgicm9idXN0LXN1bSIpLG89dCgicm9idXN0LXNjYWxlIik7ZS5leHBvcnRzPW59LHsicm9idXN0LXNjYWxlIjoyMTcsInJvYnVzdC1zdW0iOjIxOX1dLDI4NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIDA+dD8tMTp0PjA/MTowfX0se31dLDI4NjpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsyMF1bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVwOjIwfV0sMjg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixpKXt0aGlzLm1pZD10LHRoaXMubGVmdD1lLHRoaXMucmlnaHQ9cix0aGlzLmxlZnRQb2ludHM9bix0aGlzLnJpZ2h0UG9pbnRzPWksdGhpcy5jb3VudD0oZT9lLmNvdW50OjApKyhyP3IuY291bnQ6MCkrbi5sZW5ndGh9ZnVuY3Rpb24gaSh0LGUpe3QubWlkPWUubWlkLHQubGVmdD1lLmxlZnQsdC5yaWdodD1lLnJpZ2h0LHQubGVmdFBvaW50cz1lLmxlZnRQb2ludHMsdC5yaWdodFBvaW50cz1lLnJpZ2h0UG9pbnRzLHQuY291bnQ9ZS5jb3VudH1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9cChlKTt0Lm1pZD1yLm1pZCx0LmxlZnQ9ci5sZWZ0LHQucmlnaHQ9ci5yaWdodCx0LmxlZnRQb2ludHM9ci5sZWZ0UG9pbnRzLHQucmlnaHRQb2ludHM9ci5yaWdodFBvaW50cyx0LmNvdW50PXIuY291bnR9ZnVuY3Rpb24gYSh0LGUpe3ZhciByPXQuaW50ZXJ2YWxzKFtdKTtyLnB1c2goZSksbyh0LHIpfWZ1bmN0aW9uIHModCxlKXt2YXIgcj10LmludGVydmFscyhbXSksbj1yLmluZGV4T2YoZSk7cmV0dXJuIDA+bj95OihyLnNwbGljZShuLDEpLG8odCxyKSxiKX1mdW5jdGlvbiBsKHQsZSxyKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoJiZ0W25dWzBdPD1lOysrbil7dmFyIGk9cih0W25dKTtpZihpKXJldHVybiBpfX1mdW5jdGlvbiBjKHQsZSxyKXtmb3IodmFyIG49dC5sZW5ndGgtMTtuPj0wJiZ0W25dWzFdPj1lOy0tbil7dmFyIGk9cih0W25dKTtpZihpKXJldHVybiBpfX1mdW5jdGlvbiB1KHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBuPWUodFtyXSk7aWYobilyZXR1cm4gbn19ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB0LWV9ZnVuY3Rpb24gZih0LGUpe3ZhciByPXRbMF0tZVswXTtyZXR1cm4gcj9yOnRbMV0tZVsxXX1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9dFsxXS1lWzFdO3JldHVybiByP3I6dFswXS1lWzBdfWZ1bmN0aW9uIHAodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiBudWxsO2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKHRbcl1bMF0sdFtyXVsxXSk7ZS5zb3J0KGgpO2Zvcih2YXIgaT1lW2UubGVuZ3RoPj4xXSxvPVtdLGE9W10scz1bXSxyPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBsPXRbcl07bFsxXTxpP28ucHVzaChsKTppPGxbMF0/YS5wdXNoKGwpOnMucHVzaChsKX12YXIgYz1zLHU9cy5zbGljZSgpO3JldHVybiBjLnNvcnQoZiksdS5zb3J0KGQpLG5ldyBuKGkscChvKSxwKGEpLGMsdSl9ZnVuY3Rpb24gZyh0KXt0aGlzLnJvb3Q9dH1mdW5jdGlvbiB2KHQpe3JldHVybiBuZXcgZyh0JiYwIT09dC5sZW5ndGg/cCh0KTpudWxsKX12YXIgbT10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLHk9MCxiPTEseD0yO2UuZXhwb3J0cz12O3ZhciBfPW4ucHJvdG90eXBlO18uaW50ZXJ2YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0LnB1c2guYXBwbHkodCx0aGlzLmxlZnRQb2ludHMpLHRoaXMubGVmdCYmdGhpcy5sZWZ0LmludGVydmFscyh0KSx0aGlzLnJpZ2h0JiZ0aGlzLnJpZ2h0LmludGVydmFscyh0KSx0fSxfLmluc2VydD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvdW50LXRoaXMubGVmdFBvaW50cy5sZW5ndGg7aWYodGhpcy5jb3VudCs9MSx0WzFdPHRoaXMubWlkKXRoaXMubGVmdD80Kih0aGlzLmxlZnQuY291bnQrMSk+MyooZSsxKT9hKHRoaXMsdCk6dGhpcy5sZWZ0Lmluc2VydCh0KTp0aGlzLmxlZnQ9cChbdF0pO2Vsc2UgaWYodFswXT50aGlzLm1pZCl0aGlzLnJpZ2h0PzQqKHRoaXMucmlnaHQuY291bnQrMSk+MyooZSsxKT9hKHRoaXMsdCk6dGhpcy5yaWdodC5pbnNlcnQodCk6dGhpcy5yaWdodD1wKFt0XSk7ZWxzZXt2YXIgcj1tLmdlKHRoaXMubGVmdFBvaW50cyx0LGYpLG49bS5nZSh0aGlzLnJpZ2h0UG9pbnRzLHQsZCk7dGhpcy5sZWZ0UG9pbnRzLnNwbGljZShyLDAsdCksdGhpcy5yaWdodFBvaW50cy5zcGxpY2UobiwwLHQpfX0sXy5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb3VudC10aGlzLmxlZnRQb2ludHM7aWYodFsxXTx0aGlzLm1pZCl7aWYoIXRoaXMubGVmdClyZXR1cm4geTt2YXIgcj10aGlzLnJpZ2h0P3RoaXMucmlnaHQuY291bnQ6MDtpZig0KnI+MyooZS0xKSlyZXR1cm4gcyh0aGlzLHQpO3ZhciBuPXRoaXMubGVmdC5yZW1vdmUodCk7cmV0dXJuIG49PT14Pyh0aGlzLmxlZnQ9bnVsbCx0aGlzLmNvdW50LT0xLGIpOihuPT09YiYmKHRoaXMuY291bnQtPTEpLG4pfWlmKHRbMF0+dGhpcy5taWQpe2lmKCF0aGlzLnJpZ2h0KXJldHVybiB5O3ZhciBvPXRoaXMubGVmdD90aGlzLmxlZnQuY291bnQ6MDtpZig0Km8+MyooZS0xKSlyZXR1cm4gcyh0aGlzLHQpO3ZhciBuPXRoaXMucmlnaHQucmVtb3ZlKHQpO3JldHVybiBuPT09eD8odGhpcy5yaWdodD1udWxsLHRoaXMuY291bnQtPTEsYik6KG49PT1iJiYodGhpcy5jb3VudC09MSksbil9aWYoMT09PXRoaXMuY291bnQpcmV0dXJuIHRoaXMubGVmdFBvaW50c1swXT09PXQ/eDp5O2lmKDE9PT10aGlzLmxlZnRQb2ludHMubGVuZ3RoJiZ0aGlzLmxlZnRQb2ludHNbMF09PT10KXtpZih0aGlzLmxlZnQmJnRoaXMucmlnaHQpe2Zvcih2YXIgYT10aGlzLGw9dGhpcy5sZWZ0O2wucmlnaHQ7KWE9bCxsPWwucmlnaHQ7aWYoYT09PXRoaXMpbC5yaWdodD10aGlzLnJpZ2h0O2Vsc2V7dmFyIGM9dGhpcy5sZWZ0LG49dGhpcy5yaWdodDthLmNvdW50LT1sLmNvdW50LGEucmlnaHQ9bC5sZWZ0LGwubGVmdD1jLGwucmlnaHQ9bn1pKHRoaXMsbCksdGhpcy5jb3VudD0odGhpcy5sZWZ0P3RoaXMubGVmdC5jb3VudDowKSsodGhpcy5yaWdodD90aGlzLnJpZ2h0LmNvdW50OjApK3RoaXMubGVmdFBvaW50cy5sZW5ndGh9ZWxzZSB0aGlzLmxlZnQ/aSh0aGlzLHRoaXMubGVmdCk6aSh0aGlzLHRoaXMucmlnaHQpO3JldHVybiBifWZvcih2YXIgYz1tLmdlKHRoaXMubGVmdFBvaW50cyx0LGYpO2M8dGhpcy5sZWZ0UG9pbnRzLmxlbmd0aCYmdGhpcy5sZWZ0UG9pbnRzW2NdWzBdPT09dFswXTsrK2MpaWYodGhpcy5sZWZ0UG9pbnRzW2NdPT09dCl7dGhpcy5jb3VudC09MSx0aGlzLmxlZnRQb2ludHMuc3BsaWNlKGMsMSk7Zm9yKHZhciBuPW0uZ2UodGhpcy5yaWdodFBvaW50cyx0LGQpO248dGhpcy5yaWdodFBvaW50cy5sZW5ndGgmJnRoaXMucmlnaHRQb2ludHNbbl1bMV09PT10WzFdOysrbilpZih0aGlzLnJpZ2h0UG9pbnRzW25dPT09dClyZXR1cm4gdGhpcy5yaWdodFBvaW50cy5zcGxpY2UobiwxKSxifXJldHVybiB5fSxfLnF1ZXJ5UG9pbnQ9ZnVuY3Rpb24odCxlKXtpZih0PHRoaXMubWlkKXtpZih0aGlzLmxlZnQpe3ZhciByPXRoaXMubGVmdC5xdWVyeVBvaW50KHQsZSk7aWYocilyZXR1cm4gcn1yZXR1cm4gbCh0aGlzLmxlZnRQb2ludHMsdCxlKX1pZih0PnRoaXMubWlkKXtpZih0aGlzLnJpZ2h0KXt2YXIgcj10aGlzLnJpZ2h0LnF1ZXJ5UG9pbnQodCxlKTtpZihyKXJldHVybiByfXJldHVybiBjKHRoaXMucmlnaHRQb2ludHMsdCxlKX1yZXR1cm4gdSh0aGlzLmxlZnRQb2ludHMsZSl9LF8ucXVlcnlJbnRlcnZhbD1mdW5jdGlvbih0LGUscil7aWYodDx0aGlzLm1pZCYmdGhpcy5sZWZ0KXt2YXIgbj10aGlzLmxlZnQucXVlcnlJbnRlcnZhbCh0LGUscik7aWYobilyZXR1cm4gbn1pZihlPnRoaXMubWlkJiZ0aGlzLnJpZ2h0KXt2YXIgbj10aGlzLnJpZ2h0LnF1ZXJ5SW50ZXJ2YWwodCxlLHIpO2lmKG4pcmV0dXJuIG59cmV0dXJuIGU8dGhpcy5taWQ/bCh0aGlzLmxlZnRQb2ludHMsZSxyKTp0PnRoaXMubWlkP2ModGhpcy5yaWdodFBvaW50cyx0LHIpOnUodGhpcy5sZWZ0UG9pbnRzLHIpfTt2YXIgdz1nLnByb3RvdHlwZTt3Lmluc2VydD1mdW5jdGlvbih0KXt0aGlzLnJvb3Q/dGhpcy5yb290Lmluc2VydCh0KTp0aGlzLnJvb3Q9bmV3IG4odFswXSxudWxsLG51bGwsW3RdLFt0XSl9LHcucmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKHRoaXMucm9vdCl7dmFyIGU9dGhpcy5yb290LnJlbW92ZSh0KTtyZXR1cm4gZT09PXgmJih0aGlzLnJvb3Q9bnVsbCksZSE9PXl9cmV0dXJuITF9LHcucXVlcnlQb2ludD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJvb3Q/dGhpcy5yb290LnF1ZXJ5UG9pbnQodCxlKTp2b2lkIDB9LHcucXVlcnlJbnRlcnZhbD1mdW5jdGlvbih0LGUscil7cmV0dXJuIGU+PXQmJnRoaXMucm9vdD90aGlzLnJvb3QucXVlcnlJbnRlcnZhbCh0LGUscik6dm9pZCAwfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodywiY291bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290P3RoaXMucm9vdC5jb3VudDowfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LCJpbnRlcnZhbHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290P3RoaXMucm9vdC5pbnRlcnZhbHMoW10pOltdfX0pfSx7ImJpbmFyeS1zZWFyY2gtYm91bmRzIjoyODZ9XSwyODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByLG47aWYoZVswXVswXTxlWzFdWzBdKXI9ZVswXSxuPWVbMV07ZWxzZXtpZighKGVbMF1bMF0+ZVsxXVswXSkpe3ZhciBpPU1hdGgubWluKHRbMF1bMV0sdFsxXVsxXSksYT1NYXRoLm1heCh0WzBdWzFdLHRbMV1bMV0pLHM9TWF0aC5taW4oZVswXVsxXSxlWzFdWzFdKSxsPU1hdGgubWF4KGVbMF1bMV0sZVsxXVsxXSk7cmV0dXJuIHM+YT9hLXM6aT5sP2ktbDphLWx9cj1lWzFdLG49ZVswXX12YXIgYyx1O3RbMF1bMV08dFsxXVsxXT8oYz10WzBdLHU9dFsxXSk6KGM9dFsxXSx1PXRbMF0pO3ZhciBoPW8obixyLGMpO3JldHVybiBoP2g6KGg9byhuLHIsdSksaD9oOnUtbil9ZnVuY3Rpb24gaSh0LGUpe3ZhciByLGk7aWYoZVswXVswXTxlWzFdWzBdKXI9ZVswXSxpPWVbMV07ZWxzZXtpZighKGVbMF1bMF0+ZVsxXVswXSkpcmV0dXJuIG4oZSx0KTtyPWVbMV0saT1lWzBdfXZhciBhLHM7aWYodFswXVswXTx0WzFdWzBdKWE9dFswXSxzPXRbMV07ZWxzZXtpZighKHRbMF1bMF0+dFsxXVswXSkpcmV0dXJuLW4odCxlKTthPXRbMV0scz10WzBdfXZhciBsPW8ocixpLHMpLGM9byhyLGksYSk7aWYoMD5sKXtpZigwPj1jKXJldHVybiBsfWVsc2UgaWYobD4wKXtpZihjPj0wKXJldHVybiBsfWVsc2UgaWYoYylyZXR1cm4gYztpZihsPW8ocyxhLGkpLGM9byhzLGEsciksMD5sKXtpZigwPj1jKXJldHVybiBsfWVsc2UgaWYobD4wKXtpZihjPj0wKXJldHVybiBsfWVsc2UgaWYoYylyZXR1cm4gYztyZXR1cm4gaVswXS1zWzBdfWUuZXhwb3J0cz1pO3ZhciBvPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpfSx7InJvYnVzdC1vcmllbnRhdGlvbiI6MjE2fV0sMjg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixpLG8pe3RoaXMuX2NvbG9yPXQsdGhpcy5rZXk9ZSx0aGlzLnZhbHVlPXIsdGhpcy5sZWZ0PW4sdGhpcy5yaWdodD1pLHRoaXMuX2NvdW50PW99ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbmV3IG4odC5fY29sb3IsdC5rZXksdC52YWx1ZSx0LmxlZnQsdC5yaWdodCx0Ll9jb3VudCl9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBuZXcgbih0LGUua2V5LGUudmFsdWUsZS5sZWZ0LGUucmlnaHQsZS5fY291bnQpfWZ1bmN0aW9uIGEodCl7dC5fY291bnQ9MSsodC5sZWZ0P3QubGVmdC5fY291bnQ6MCkrKHQucmlnaHQ/dC5yaWdodC5fY291bnQ6MCl9ZnVuY3Rpb24gcyh0LGUpe3RoaXMuX2NvbXBhcmU9dCx0aGlzLnJvb3Q9ZX1mdW5jdGlvbiBsKHQsZSl7aWYoZS5sZWZ0KXt2YXIgcj1sKHQsZS5sZWZ0KTtpZihyKXJldHVybiByfXZhciByPXQoZS5rZXksZS52YWx1ZSk7cmV0dXJuIHI/cjplLnJpZ2h0P2wodCxlLnJpZ2h0KTp2b2lkIDB9ZnVuY3Rpb24gYyh0LGUscixuKXt2YXIgaT1lKHQsbi5rZXkpO2lmKDA+PWkpe2lmKG4ubGVmdCl7dmFyIG89Yyh0LGUscixuLmxlZnQpO2lmKG8pcmV0dXJuIG99dmFyIG89cihuLmtleSxuLnZhbHVlKTtpZihvKXJldHVybiBvfXJldHVybiBuLnJpZ2h0P2ModCxlLHIsbi5yaWdodCk6dm9pZCAwfWZ1bmN0aW9uIHUodCxlLHIsbixpKXt2YXIgbyxhPXIodCxpLmtleSkscz1yKGUsaS5rZXkpO2lmKDA+PWEpe2lmKGkubGVmdCYmKG89dSh0LGUscixuLGkubGVmdCkpKXJldHVybiBvO2lmKHM+MCYmKG89bihpLmtleSxpLnZhbHVlKSkpcmV0dXJuIG99cmV0dXJuIHM+MCYmaS5yaWdodD91KHQsZSxyLG4saS5yaWdodCk6dm9pZCAwfWZ1bmN0aW9uIGgodCxlKXt0aGlzLnRyZWU9dCx0aGlzLl9zdGFjaz1lfWZ1bmN0aW9uIGYodCxlKXt0LmtleT1lLmtleSx0LnZhbHVlPWUudmFsdWUsdC5sZWZ0PWUubGVmdCx0LnJpZ2h0PWUucmlnaHQsdC5fY29sb3I9ZS5fY29sb3IsdC5fY291bnQ9ZS5fY291bnR9ZnVuY3Rpb24gZCh0KXtmb3IodmFyIGUscixuLHMsbD10Lmxlbmd0aC0xO2w+PTA7LS1sKXtpZihlPXRbbF0sMD09PWwpcmV0dXJuIHZvaWQoZS5fY29sb3I9bSk7aWYocj10W2wtMV0sci5sZWZ0PT09ZSl7aWYobj1yLnJpZ2h0LG4ucmlnaHQmJm4ucmlnaHQuX2NvbG9yPT09dil7aWYobj1yLnJpZ2h0PWkobikscz1uLnJpZ2h0PWkobi5yaWdodCksci5yaWdodD1uLmxlZnQsbi5sZWZ0PXIsbi5yaWdodD1zLG4uX2NvbG9yPXIuX2NvbG9yLGUuX2NvbG9yPW0sci5fY29sb3I9bSxzLl9jb2xvcj1tLGEociksYShuKSxsPjEpe3ZhciBjPXRbbC0yXTtjLmxlZnQ9PT1yP2MubGVmdD1uOmMucmlnaHQ9bn1yZXR1cm4gdm9pZCh0W2wtMV09bil9aWYobi5sZWZ0JiZuLmxlZnQuX2NvbG9yPT09dil7aWYobj1yLnJpZ2h0PWkobikscz1uLmxlZnQ9aShuLmxlZnQpLHIucmlnaHQ9cy5sZWZ0LG4ubGVmdD1zLnJpZ2h0LHMubGVmdD1yLHMucmlnaHQ9bixzLl9jb2xvcj1yLl9jb2xvcixyLl9jb2xvcj1tLG4uX2NvbG9yPW0sZS5fY29sb3I9bSxhKHIpLGEobiksYShzKSxsPjEpe3ZhciBjPXRbbC0yXTtjLmxlZnQ9PT1yP2MubGVmdD1zOmMucmlnaHQ9c31yZXR1cm4gdm9pZCh0W2wtMV09cyl9aWYobi5fY29sb3I9PT1tKXtpZihyLl9jb2xvcj09PXYpcmV0dXJuIHIuX2NvbG9yPW0sdm9pZChyLnJpZ2h0PW8odixuKSk7ci5yaWdodD1vKHYsbik7Y29udGludWV9aWYobj1pKG4pLHIucmlnaHQ9bi5sZWZ0LG4ubGVmdD1yLG4uX2NvbG9yPXIuX2NvbG9yLHIuX2NvbG9yPXYsYShyKSxhKG4pLGw+MSl7dmFyIGM9dFtsLTJdO2MubGVmdD09PXI/Yy5sZWZ0PW46Yy5yaWdodD1ufXRbbC0xXT1uLHRbbF09cixsKzE8dC5sZW5ndGg/dFtsKzFdPWU6dC5wdXNoKGUpLGwrPTJ9ZWxzZXtpZihuPXIubGVmdCxuLmxlZnQmJm4ubGVmdC5fY29sb3I9PT12KXtpZihuPXIubGVmdD1pKG4pLHM9bi5sZWZ0PWkobi5sZWZ0KSxyLmxlZnQ9bi5yaWdodCxuLnJpZ2h0PXIsbi5sZWZ0PXMsbi5fY29sb3I9ci5fY29sb3IsZS5fY29sb3I9bSxyLl9jb2xvcj1tLHMuX2NvbG9yPW0sYShyKSxhKG4pLGw+MSl7dmFyIGM9dFtsLTJdO2MucmlnaHQ9PT1yP2MucmlnaHQ9bjpjLmxlZnQ9bn1yZXR1cm4gdm9pZCh0W2wtMV09bil9aWYobi5yaWdodCYmbi5yaWdodC5fY29sb3I9PT12KXtpZihuPXIubGVmdD1pKG4pLHM9bi5yaWdodD1pKG4ucmlnaHQpLHIubGVmdD1zLnJpZ2h0LG4ucmlnaHQ9cy5sZWZ0LHMucmlnaHQ9cixzLmxlZnQ9bixzLl9jb2xvcj1yLl9jb2xvcixyLl9jb2xvcj1tLG4uX2NvbG9yPW0sZS5fY29sb3I9bSxhKHIpLGEobiksYShzKSxsPjEpe3ZhciBjPXRbbC0yXTtjLnJpZ2h0PT09cj9jLnJpZ2h0PXM6Yy5sZWZ0PXN9cmV0dXJuIHZvaWQodFtsLTFdPXMpfWlmKG4uX2NvbG9yPT09bSl7aWYoci5fY29sb3I9PT12KXJldHVybiByLl9jb2xvcj1tLHZvaWQoci5sZWZ0PW8odixuKSk7ci5sZWZ0PW8odixuKTtjb250aW51ZX1pZihuPWkobiksci5sZWZ0PW4ucmlnaHQsbi5yaWdodD1yLG4uX2NvbG9yPXIuX2NvbG9yLHIuX2NvbG9yPXYsYShyKSxhKG4pLGw+MSl7dmFyIGM9dFtsLTJdO2MucmlnaHQ9PT1yP2MucmlnaHQ9bjpjLmxlZnQ9bn10W2wtMV09bix0W2xdPXIsbCsxPHQubGVuZ3RoP3RbbCsxXT1lOnQucHVzaChlKSxsKz0yfX19ZnVuY3Rpb24gcCh0LGUpe3JldHVybiBlPnQ/LTE6dD5lPzE6MH1mdW5jdGlvbiBnKHQpe3JldHVybiBuZXcgcyh0fHxwLG51bGwpfWUuZXhwb3J0cz1nO3ZhciB2PTAsbT0xLHk9cy5wcm90b3R5cGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHksImtleXMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7dC5wdXNoKGUpfSksdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwidmFsdWVzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihlLHIpe3QucHVzaChyKX0pLHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3Q/dGhpcy5yb290Ll9jb3VudDowfX0pLHkuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuX2NvbXBhcmUsaT10aGlzLnJvb3QsbD1bXSxjPVtdO2k7KXt2YXIgdT1yKHQsaS5rZXkpO2wucHVzaChpKSxjLnB1c2godSksaT0wPj11P2kubGVmdDppLnJpZ2h0fWwucHVzaChuZXcgbih2LHQsZSxudWxsLG51bGwsMSkpO2Zvcih2YXIgaD1sLmxlbmd0aC0yO2g+PTA7LS1oKXt2YXIgaT1sW2hdO2NbaF08PTA/bFtoXT1uZXcgbihpLl9jb2xvcixpLmtleSxpLnZhbHVlLGxbaCsxXSxpLnJpZ2h0LGkuX2NvdW50KzEpOmxbaF09bmV3IG4oaS5fY29sb3IsaS5rZXksaS52YWx1ZSxpLmxlZnQsbFtoKzFdLGkuX2NvdW50KzEpfWZvcih2YXIgaD1sLmxlbmd0aC0xO2g+MTstLWgpe3ZhciBmPWxbaC0xXSxpPWxbaF07aWYoZi5fY29sb3I9PT1tfHxpLl9jb2xvcj09PW0pYnJlYWs7dmFyIGQ9bFtoLTJdO2lmKGQubGVmdD09PWYpaWYoZi5sZWZ0PT09aSl7dmFyIHA9ZC5yaWdodDtpZighcHx8cC5fY29sb3IhPT12KXtpZihkLl9jb2xvcj12LGQubGVmdD1mLnJpZ2h0LGYuX2NvbG9yPW0sZi5yaWdodD1kLGxbaC0yXT1mLGxbaC0xXT1pLGEoZCksYShmKSxoPj0zKXt2YXIgZz1sW2gtM107Zy5sZWZ0PT09ZD9nLmxlZnQ9ZjpnLnJpZ2h0PWZ9YnJlYWt9Zi5fY29sb3I9bSxkLnJpZ2h0PW8obSxwKSxkLl9jb2xvcj12LGgtPTF9ZWxzZXt2YXIgcD1kLnJpZ2h0O2lmKCFwfHxwLl9jb2xvciE9PXYpe2lmKGYucmlnaHQ9aS5sZWZ0LGQuX2NvbG9yPXYsZC5sZWZ0PWkucmlnaHQsaS5fY29sb3I9bSxpLmxlZnQ9ZixpLnJpZ2h0PWQsbFtoLTJdPWksbFtoLTFdPWYsYShkKSxhKGYpLGEoaSksaD49Myl7dmFyIGc9bFtoLTNdO2cubGVmdD09PWQ/Zy5sZWZ0PWk6Zy5yaWdodD1pfWJyZWFrfWYuX2NvbG9yPW0sZC5yaWdodD1vKG0scCksZC5fY29sb3I9dixoLT0xfWVsc2UgaWYoZi5yaWdodD09PWkpe3ZhciBwPWQubGVmdDtpZighcHx8cC5fY29sb3IhPT12KXtpZihkLl9jb2xvcj12LGQucmlnaHQ9Zi5sZWZ0LGYuX2NvbG9yPW0sZi5sZWZ0PWQsbFtoLTJdPWYsbFtoLTFdPWksYShkKSxhKGYpLGg+PTMpe3ZhciBnPWxbaC0zXTtnLnJpZ2h0PT09ZD9nLnJpZ2h0PWY6Zy5sZWZ0PWZ9YnJlYWt9Zi5fY29sb3I9bSxkLmxlZnQ9byhtLHApLGQuX2NvbG9yPXYsaC09MX1lbHNle3ZhciBwPWQubGVmdDtpZighcHx8cC5fY29sb3IhPT12KXtpZihmLmxlZnQ9aS5yaWdodCxkLl9jb2xvcj12LGQucmlnaHQ9aS5sZWZ0LGkuX2NvbG9yPW0saS5yaWdodD1mLGkubGVmdD1kLGxbaC0yXT1pLGxbaC0xXT1mLGEoZCksYShmKSxhKGkpLGg+PTMpe3ZhciBnPWxbaC0zXTtnLnJpZ2h0PT09ZD9nLnJpZ2h0PWk6Zy5sZWZ0PWl9YnJlYWt9Zi5fY29sb3I9bSxkLmxlZnQ9byhtLHApLGQuX2NvbG9yPXYsaC09MX19cmV0dXJuIGxbMF0uX2NvbG9yPW0sbmV3IHMocixsWzBdKX0seS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLnJvb3Qpc3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gbCh0LHRoaXMucm9vdCk7Y2FzZSAyOnJldHVybiBjKGUsdGhpcy5fY29tcGFyZSx0LHRoaXMucm9vdCk7Y2FzZSAzOmlmKHRoaXMuX2NvbXBhcmUoZSxyKT49MClyZXR1cm47cmV0dXJuIHUoZSxyLHRoaXMuX2NvbXBhcmUsdCx0aGlzLnJvb3QpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHksImJlZ2luIix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5yb290O2U7KXQucHVzaChlKSxlPWUubGVmdDtyZXR1cm4gbmV3IGgodGhpcyx0KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiZW5kIix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5yb290O2U7KXQucHVzaChlKSxlPWUucmlnaHQ7cmV0dXJuIG5ldyBoKHRoaXMsdCl9fSkseS5hdD1mdW5jdGlvbih0KXtpZigwPnQpcmV0dXJuIG5ldyBoKHRoaXMsW10pO2Zvcih2YXIgZT10aGlzLnJvb3Qscj1bXTs7KXtpZihyLnB1c2goZSksZS5sZWZ0KXtpZih0PGUubGVmdC5fY291bnQpe2U9ZS5sZWZ0O2NvbnRpbnVlfXQtPWUubGVmdC5fY291bnR9aWYoIXQpcmV0dXJuIG5ldyBoKHRoaXMscik7aWYodC09MSwhZS5yaWdodClicmVhaztpZih0Pj1lLnJpZ2h0Ll9jb3VudClicmVhaztlPWUucmlnaHR9cmV0dXJuIG5ldyBoKHRoaXMsW10pfSx5LmdlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W10saT0wO3I7KXt2YXIgbz1lKHQsci5rZXkpO24ucHVzaChyKSwwPj1vJiYoaT1uLmxlbmd0aCkscj0wPj1vP3IubGVmdDpyLnJpZ2h0fXJldHVybiBuLmxlbmd0aD1pLG5ldyBoKHRoaXMsbil9LHkuZ3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2NvbXBhcmUscj10aGlzLnJvb3Qsbj1bXSxpPTA7cjspe3ZhciBvPWUodCxyLmtleSk7bi5wdXNoKHIpLDA+byYmKGk9bi5sZW5ndGgpLHI9MD5vP3IubGVmdDpyLnJpZ2h0fXJldHVybiBuLmxlbmd0aD1pLG5ldyBoKHRoaXMsbil9LHkubHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2NvbXBhcmUscj10aGlzLnJvb3Qsbj1bXSxpPTA7cjspe3ZhciBvPWUodCxyLmtleSk7bi5wdXNoKHIpLG8+MCYmKGk9bi5sZW5ndGgpLHI9MD49bz9yLmxlZnQ6ci5yaWdodH1yZXR1cm4gbi5sZW5ndGg9aSxuZXcgaCh0aGlzLG4pfSx5LmxlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W10saT0wO3I7KXt2YXIgbz1lKHQsci5rZXkpO24ucHVzaChyKSxvPj0wJiYoaT1uLmxlbmd0aCkscj0wPm8/ci5sZWZ0OnIucmlnaHR9cmV0dXJuIG4ubGVuZ3RoPWksbmV3IGgodGhpcyxuKX0seS5maW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W107cjspe3ZhciBpPWUodCxyLmtleSk7aWYobi5wdXNoKHIpLDA9PT1pKXJldHVybiBuZXcgaCh0aGlzLG4pO3I9MD49aT9yLmxlZnQ6ci5yaWdodH1yZXR1cm4gbmV3IGgodGhpcyxbXSl9LHkucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmluZCh0KTtyZXR1cm4gZT9lLnJlbW92ZSgpOnRoaXN9LHkuZ2V0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290O3I7KXt2YXIgbj1lKHQsci5rZXkpO2lmKDA9PT1uKXJldHVybiByLnZhbHVlO3I9MD49bj9yLmxlZnQ6ci5yaWdodH19O3ZhciBiPWgucHJvdG90eXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJ2YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFjay5sZW5ndGg+MH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwibm9kZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFjay5sZW5ndGg+MD90aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV06bnVsbH0sZW51bWVyYWJsZTohMH0pLGIuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGgodGhpcy50cmVlLHRoaXMuX3N0YWNrLnNsaWNlKCkpfSxiLnJlbW92ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N0YWNrO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gdGhpcy50cmVlO3ZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj10W3QubGVuZ3RoLTFdO2VbZS5sZW5ndGgtMV09bmV3IG4oci5fY29sb3Isci5rZXksci52YWx1ZSxyLmxlZnQsci5yaWdodCxyLl9jb3VudCk7Zm9yKHZhciBpPXQubGVuZ3RoLTI7aT49MDstLWkpe3ZhciByPXRbaV07ci5sZWZ0PT09dFtpKzFdP2VbaV09bmV3IG4oci5fY29sb3Isci5rZXksci52YWx1ZSxlW2krMV0sci5yaWdodCxyLl9jb3VudCk6ZVtpXT1uZXcgbihyLl9jb2xvcixyLmtleSxyLnZhbHVlLHIubGVmdCxlW2krMV0sci5fY291bnQpfWlmKHI9ZVtlLmxlbmd0aC0xXSxyLmxlZnQmJnIucmlnaHQpe3ZhciBvPWUubGVuZ3RoO2ZvcihyPXIubGVmdDtyLnJpZ2h0OyllLnB1c2gocikscj1yLnJpZ2h0O3ZhciBhPWVbby0xXTtlLnB1c2gobmV3IG4oci5fY29sb3IsYS5rZXksYS52YWx1ZSxyLmxlZnQsci5yaWdodCxyLl9jb3VudCkpLGVbby0xXS5rZXk9ci5rZXksZVtvLTFdLnZhbHVlPXIudmFsdWU7Zm9yKHZhciBpPWUubGVuZ3RoLTI7aT49bzstLWkpcj1lW2ldLGVbaV09bmV3IG4oci5fY29sb3Isci5rZXksci52YWx1ZSxyLmxlZnQsZVtpKzFdLHIuX2NvdW50KTtlW28tMV0ubGVmdD1lW29dfWlmKHI9ZVtlLmxlbmd0aC0xXSxyLl9jb2xvcj09PXYpe3ZhciBsPWVbZS5sZW5ndGgtMl07bC5sZWZ0PT09cj9sLmxlZnQ9bnVsbDpsLnJpZ2h0PT09ciYmKGwucmlnaHQ9bnVsbCksZS5wb3AoKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSllW2ldLl9jb3VudC0tO3JldHVybiBuZXcgcyh0aGlzLnRyZWUuX2NvbXBhcmUsZVswXSl9aWYoci5sZWZ0fHxyLnJpZ2h0KXtyLmxlZnQ/ZihyLHIubGVmdCk6ci5yaWdodCYmZihyLHIucmlnaHQpLHIuX2NvbG9yPW07Zm9yKHZhciBpPTA7aTxlLmxlbmd0aC0xOysraSllW2ldLl9jb3VudC0tO3JldHVybiBuZXcgcyh0aGlzLnRyZWUuX2NvbXBhcmUsZVswXSl9aWYoMT09PWUubGVuZ3RoKXJldHVybiBuZXcgcyh0aGlzLnRyZWUuX2NvbXBhcmUsbnVsbCk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpZVtpXS5fY291bnQtLTt2YXIgYz1lW2UubGVuZ3RoLTJdO3JldHVybiBkKGUpLGMubGVmdD09PXI/Yy5sZWZ0PW51bGw6Yy5yaWdodD1udWxsLG5ldyBzKHRoaXMudHJlZS5fY29tcGFyZSxlWzBdKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsImtleSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFjay5sZW5ndGg+MD90aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV0ua2V5OnZvaWQgMH0sZW51bWVyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFjay5sZW5ndGg+MD90aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV0udmFsdWU6dm9pZCAwfSxlbnVtZXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsImluZGV4Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9MCxlPXRoaXMuX3N0YWNrO2lmKDA9PT1lLmxlbmd0aCl7dmFyIHI9dGhpcy50cmVlLnJvb3Q7cmV0dXJuIHI/ci5fY291bnQ6MH1lW2UubGVuZ3RoLTFdLmxlZnQmJih0PWVbZS5sZW5ndGgtMV0ubGVmdC5fY291bnQpO2Zvcih2YXIgbj1lLmxlbmd0aC0yO24+PTA7LS1uKWVbbisxXT09PWVbbl0ucmlnaHQmJigrK3QsZVtuXS5sZWZ0JiYodCs9ZVtuXS5sZWZ0Ll9jb3VudCkpO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwfSksYi5uZXh0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3RhY2s7aWYoMCE9PXQubGVuZ3RoKXt2YXIgZT10W3QubGVuZ3RoLTFdO2lmKGUucmlnaHQpZm9yKGU9ZS5yaWdodDtlOyl0LnB1c2goZSksZT1lLmxlZnQ7ZWxzZSBmb3IodC5wb3AoKTt0Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdLnJpZ2h0PT09ZTspZT10W3QubGVuZ3RoLTFdLHQucG9wKCl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiaGFzTmV4dCIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N0YWNrO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMTtpZih0W3QubGVuZ3RoLTFdLnJpZ2h0KXJldHVybiEwO2Zvcih2YXIgZT10Lmxlbmd0aC0xO2U+MDstLWUpaWYodFtlLTFdLmxlZnQ9PT10W2VdKXJldHVybiEwO3JldHVybiExfX0pLGIudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N0YWNrO2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbid0IHVwZGF0ZSBlbXB0eSBub2RlISIpO3ZhciByPW5ldyBBcnJheShlLmxlbmd0aCksaT1lW2UubGVuZ3RoLTFdO3Jbci5sZW5ndGgtMV09bmV3IG4oaS5fY29sb3IsaS5rZXksdCxpLmxlZnQsaS5yaWdodCxpLl9jb3VudCk7Zm9yKHZhciBvPWUubGVuZ3RoLTI7bz49MDstLW8paT1lW29dLGkubGVmdD09PWVbbysxXT9yW29dPW5ldyBuKGkuX2NvbG9yLGkua2V5LGkudmFsdWUscltvKzFdLGkucmlnaHQsaS5fY291bnQpOnJbb109bmV3IG4oaS5fY29sb3IsaS5rZXksaS52YWx1ZSxpLmxlZnQscltvKzFdLGkuX2NvdW50KTtyZXR1cm4gbmV3IHModGhpcy50cmVlLl9jb21wYXJlLHJbMF0pfSxiLnByZXY9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdGFjaztpZigwIT09dC5sZW5ndGgpe3ZhciBlPXRbdC5sZW5ndGgtMV07aWYoZS5sZWZ0KWZvcihlPWUubGVmdDtlOyl0LnB1c2goZSksZT1lLnJpZ2h0O2Vsc2UgZm9yKHQucG9wKCk7dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXS5sZWZ0PT09ZTspZT10W3QubGVuZ3RoLTFdLHQucG9wKCl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiaGFzUHJldiIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N0YWNrO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMTtpZih0W3QubGVuZ3RoLTFdLmxlZnQpcmV0dXJuITA7Zm9yKHZhciBlPXQubGVuZ3RoLTE7ZT4wOy0tZSlpZih0W2UtMV0ucmlnaHQ9PT10W2VdKXJldHVybiEwO3JldHVybiExfX0pfSx7fV0sMjkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMuc2xhYnM9dCx0aGlzLmNvb3JkaW5hdGVzPWUsdGhpcy5ob3Jpem9udGFsPXJ9ZnVuY3Rpb24gaSh0LGUpe3JldHVybiB0LnktZX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPW51bGw7dDspe3ZhciBuLGksYT10LmtleTthWzBdWzBdPGFbMV1bMF0/KG49YVswXSxpPWFbMV0pOihuPWFbMV0saT1hWzBdKTt2YXIgcz1oKG4saSxlKTtpZigwPnMpdD10LmxlZnQ7ZWxzZSBpZihzPjApaWYoZVswXSE9PWFbMV1bMF0pcj10LHQ9dC5yaWdodDtlbHNle3ZhciBsPW8odC5yaWdodCxlKTtpZihsKXJldHVybiBsO3Q9dC5sZWZ0fWVsc2V7aWYoZVswXSE9PWFbMV1bMF0pcmV0dXJuIHQ7dmFyIGw9byh0LnJpZ2h0LGUpO2lmKGwpcmV0dXJuIGw7dD10LmxlZnR9fXJldHVybiByfWZ1bmN0aW9uIGEodCxlLHIsbil7dGhpcy55PXQsdGhpcy5pbmRleD1lLHRoaXMuc3RhcnQ9cix0aGlzLmNsb3NlZD1ufWZ1bmN0aW9uIHModCxlLHIsbil7dGhpcy54PXQsdGhpcy5zZWdtZW50PWUsdGhpcy5jcmVhdGU9cix0aGlzLmluZGV4PW59ZnVuY3Rpb24gbCh0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0yKmUsaT1uZXcgQXJyYXkociksbz0wO2U+bzsrK28pe3ZhciBsPXRbb10sYz1sWzBdWzBdPGxbMV1bMF07aVsyKm9dPW5ldyBzKGxbMF1bMF0sbCxjLG8pLGlbMipvKzFdPW5ldyBzKGxbMV1bMF0sbCwhYyxvKX1pLnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgcj10LngtZS54O3JldHVybiByP3I6KHI9dC5jcmVhdGUtZS5jcmVhdGUscj9yOk1hdGgubWluKHQuc2VnbWVudFswXVsxXSx0LnNlZ21lbnRbMV1bMV0pLU1hdGgubWluKGUuc2VnbWVudFswXVsxXSxlLnNlZ21lbnRbMV1bMV0pKX0pO2Zvcih2YXIgaD11KGYpLGQ9W10scD1bXSxnPVtdLG89MDtyPm87KXtmb3IodmFyIHY9aVtvXS54LG09W107cj5vOyl7dmFyIHk9aVtvXTtpZih5LnghPT12KWJyZWFrO28rPTEseS5zZWdtZW50WzBdWzBdPT09eS54JiZ5LnNlZ21lbnRbMV1bMF09PT15Lng/eS5jcmVhdGUmJih5LnNlZ21lbnRbMF1bMV08eS5zZWdtZW50WzFdWzFdPyhtLnB1c2gobmV3IGEoeS5zZWdtZW50WzBdWzFdLHkuaW5kZXgsITAsITApKSxtLnB1c2gobmV3IGEoeS5zZWdtZW50WzFdWzFdLHkuaW5kZXgsITEsITEpKSk6KG0ucHVzaChuZXcgYSh5LnNlZ21lbnRbMV1bMV0seS5pbmRleCwhMCwhMSkpLG0ucHVzaChuZXcgYSh5LnNlZ21lbnRbMF1bMV0seS5pbmRleCwhMSwhMCkpKSk6aD15LmNyZWF0ZT9oLmluc2VydCh5LnNlZ21lbnQseS5pbmRleCk6aC5yZW1vdmUoeS5zZWdtZW50KX1kLnB1c2goaC5yb290KSxwLnB1c2godiksZy5wdXNoKG0pfXJldHVybiBuZXcgbihkLHAsZyl9ZS5leHBvcnRzPWw7dmFyIGM9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKSx1PXQoImZ1bmN0aW9uYWwtcmVkLWJsYWNrLXRyZWUiKSxoPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpLGY9dCgiLi9saWIvb3JkZXItc2VnbWVudHMiKSxkPW4ucHJvdG90eXBlO2QuY2FzdFVwPWZ1bmN0aW9uKHQpe3ZhciBlPWMubGUodGhpcy5jb29yZGluYXRlcyx0WzBdKTtpZigwPmUpcmV0dXJuLTE7dmFyIHI9KHRoaXMuc2xhYnNbZV0sbyh0aGlzLnNsYWJzW2VdLHQpKSxuPS0xO2lmKHImJihuPXIudmFsdWUpLHRoaXMuY29vcmRpbmF0ZXNbZV09PT10WzBdKXt2YXIgYT1udWxsO2lmKHImJihhPXIua2V5KSxlPjApe3ZhciBzPW8odGhpcy5zbGFic1tlLTFdLHQpO3MmJihhP2Yocy5rZXksYSk+MCYmKGE9cy5rZXksbj1zLnZhbHVlKToobj1zLnZhbHVlLGE9cy5rZXkpKX12YXIgbD10aGlzLmhvcml6b250YWxbZV07aWYobC5sZW5ndGg+MCl7dmFyIHU9Yy5nZShsLHRbMV0saSk7aWYodTxsLmxlbmd0aCl7dmFyIGQ9bFt1XTtpZih0WzFdPT09ZC55KXtpZihkLmNsb3NlZClyZXR1cm4gZC5pbmRleDtmb3IoO3U8bC5sZW5ndGgtMSYmbFt1KzFdLnk9PT10WzFdOylpZih1Kz0xLGQ9bFt1XSxkLmNsb3NlZClyZXR1cm4gZC5pbmRleDtpZihkLnk9PT10WzFdJiYhZC5zdGFydCl7aWYodSs9MSx1Pj1sLmxlbmd0aClyZXR1cm4gbjtkPWxbdV19fWlmKGQuc3RhcnQpaWYoYSl7dmFyIHA9aChhWzBdLGFbMV0sW3RbMF0sZC55XSk7YVswXVswXT5hWzFdWzBdJiYocD0tcCkscD4wJiYobj1kLmluZGV4KX1lbHNlIG49ZC5pbmRleDtlbHNlIGQueSE9PXRbMV0mJihuPWQuaW5kZXgpfX19cmV0dXJuIG59fSx7Ii4vbGliL29yZGVyLXNlZ21lbnRzIjoyODgsImJpbmFyeS1zZWFyY2gtYm91bmRzIjoyODYsImZ1bmN0aW9uYWwtcmVkLWJsYWNrLXRyZWUiOjI4OSwicm9idXN0LW9yaWVudGF0aW9uIjoyMTZ9XSwyOTE6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuITB9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgaT10W2VdO3JldHVybiBpPyEhaS5xdWVyeVBvaW50KHIsbik6ITF9fWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPXt9LHI9MDtyPHQubGVuZ3RoOysrcil7dmFyIG49dFtyXSxvPW5bMF1bMF0sYT1uWzBdWzFdLHM9blsxXVsxXSxsPVtNYXRoLm1pbihhLHMpLE1hdGgubWF4KGEscyldO28gaW4gZT9lW29dLnB1c2gobCk6ZVtvXT1bbF19Zm9yKHZhciBjPXt9LHU9T2JqZWN0LmtleXMoZSkscj0wO3I8dS5sZW5ndGg7KytyKXt2YXIgaD1lW3Vbcl1dO2NbdVtyXV09ZChoKX1yZXR1cm4gaShjKX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXAubGUoZSxyWzBdKTtpZigwPm4pcmV0dXJuIDE7dmFyIGk9dFtuXTtpZighaSl7aWYoIShuPjAmJmVbbl09PT1yWzBdKSlyZXR1cm4gMTtpPXRbbi0xXX1mb3IodmFyIG89MTtpOyl7dmFyIGE9aS5rZXkscz1oKHIsYVswXSxhWzFdKTtpZihhWzBdWzBdPGFbMV1bMF0paWYoMD5zKWk9aS5sZWZ0O2Vsc2V7aWYoIShzPjApKXJldHVybiAwO289LTEsaT1pLnJpZ2h0fWVsc2UgaWYocz4wKWk9aS5sZWZ0O2Vsc2V7aWYoISgwPnMpKXJldHVybiAwO289MSxpPWkucmlnaHR9fXJldHVybiBvfX1mdW5jdGlvbiBzKHQpe3JldHVybiAxfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGVbMF0sZVsxXSk/MDoxfX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KHJbMF0sclsxXSk/MDplKHIpfX1mdW5jdGlvbiB1KHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPVtdLG49W10saT0wO2U+aTsrK2kpZm9yKHZhciB1PXRbaV0saD11Lmxlbmd0aCxkPWgtMSxwPTA7aD5wO2Q9cCsrKXt2YXIgZz11W2RdLHY9dVtwXTtnWzBdPT09dlswXT9uLnB1c2goW2csdl0pOnIucHVzaChbZyx2XSl9aWYoMD09PXIubGVuZ3RoKXJldHVybiAwPT09bi5sZW5ndGg/czpsKG8obikpO3ZhciBtPWYocikseT1hKG0uc2xhYnMsbS5jb29yZGluYXRlcyk7cmV0dXJuIDA9PT1uLmxlbmd0aD95OmMobyhuKSx5KX1lLmV4cG9ydHM9dTt2YXIgaD10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXSxmPXQoInNsYWItZGVjb21wb3NpdGlvbiIpLGQ9dCgiaW50ZXJ2YWwtdHJlZS0xZCIpLHA9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6Mjg2LCJpbnRlcnZhbC10cmVlLTFkIjoyODcsInJvYnVzdC1vcmllbnRhdGlvbiI6MjE2LCJzbGFiLWRlY29tcG9zaXRpb24iOjI5MH1dLDI5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheSh0KSxuPTA7dD5uOysrbilyW25dPWU7cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDt0PnI7KytyKWVbcl09W107cmV0dXJuIGV9ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIHIodCl7Zm9yKHZhciByPXQubGVuZ3RoLG49WzBdLGk9MDtyPmk7KytpKXt2YXIgbz1lW3RbaV1dLGE9ZVt0WyhpKzEpJXJdXSxzPWMoLW9bMF0sb1sxXSksbD1jKC1vWzBdLGFbMV0pLGg9YyhhWzBdLG9bMV0pLGY9YyhhWzBdLGFbMV0pO249dShuLHUodShzLGwpLHUoaCxmKSkpfXJldHVybiBuW24ubGVuZ3RoLTFdPjB9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0wO2U+cjsrK3IpaWYoIU9bdFtyXV0pcmV0dXJuITE7cmV0dXJuITB9dmFyIGQ9Zih0LGUpO3Q9ZFswXSxlPWRbMV07Zm9yKHZhciBwPWUubGVuZ3RoLGc9KHQubGVuZ3RoLGEodCxlLmxlbmd0aCkpLHY9MDtwPnY7Kyt2KWlmKGdbdl0ubGVuZ3RoJTI9PT0xKXRocm93IG5ldyBFcnJvcigicGxhbmFyLWdyYXBoLXRvLXBvbHlsaW5lOiBncmFwaCBtdXN0IGJlIG1hbmlmb2xkIik7dmFyIG09cyh0LGUpO209bS5maWx0ZXIocik7Zm9yKHZhciB5PW0ubGVuZ3RoLGI9bmV3IEFycmF5KHkpLHg9bmV3IEFycmF5KHkpLHY9MDt5PnY7Kyt2KXtiW3ZdPXY7dmFyIF89bmV3IEFycmF5KHkpLHc9bVt2XS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSxBPWwoW3ddKSxrPTA7dDpmb3IodmFyIE09MDt5Pk07KytNKWlmKF9bTV09MCx2IT09TSl7Zm9yKHZhciBUPW1bTV0sRT1ULmxlbmd0aCxMPTA7RT5MOysrTCl7dmFyIFM9QShlW1RbTF1dKTtpZigwIT09Uyl7MD5TJiYoX1tNXT0xLGsrPTEpO2NvbnRpbnVlIHR9fV9bTV09MSxrKz0xfXhbdl09W2ssdixfXX14LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gZVswXS10WzBdfSk7Zm9yKHZhciB2PTA7eT52Oysrdilmb3IodmFyIF89eFt2XSxDPV9bMV0sUD1fWzJdLE09MDt5Pk07KytNKVBbTV0mJihiW01dPUMpO2Zvcih2YXIgej1pKHkpLHY9MDt5PnY7Kyt2KXpbdl0ucHVzaChiW3ZdKSx6W2Jbdl1dLnB1c2godik7Zm9yKHZhciBSPXt9LE89bihwLCExKSx2PTA7eT52Oysrdilmb3IodmFyIFQ9bVt2XSxFPVQubGVuZ3RoLE09MDtFPk07KytNKXt2YXIgST1UW01dLE49VFsoTSsxKSVFXSxqPU1hdGgubWluKEksTikrIjoiK01hdGgubWF4KEksTik7aWYoaiBpbiBSKXt2YXIgRj1SW2pdO3pbRl0ucHVzaCh2KSx6W3ZdLnB1c2goRiksT1tJXT1PW05dPSEwfWVsc2UgUltqXT12fWZvcih2YXIgRD1bXSxCPW4oeSwtMSksdj0wO3k+djsrK3YpYlt2XSE9PXZ8fG8obVt2XSk/Qlt2XT0tMTooRC5wdXNoKHYpLEJbdl09MCk7Zm9yKHZhciBkPVtdO0QubGVuZ3RoPjA7KXt2YXIgVT1ELnBvcCgpLFY9eltVXTtoKFYsZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSk7dmFyIHEsSD1WLmxlbmd0aCxHPUJbVV07aWYoMD09PUcpe3ZhciBUPW1bVV07cT1bVF19Zm9yKHZhciB2PTA7SD52Oysrdil7dmFyIFk9Vlt2XTtpZighKEJbWV0+PTApJiYoQltZXT0xXkcsRC5wdXNoKFkpLDA9PT1HKSl7dmFyIFQ9bVtZXTtvKFQpfHwoVC5yZXZlcnNlKCkscS5wdXNoKFQpKX19MD09PUcmJmQucHVzaChxKX1yZXR1cm4gZH1lLmV4cG9ydHM9bzt2YXIgYT10KCJlZGdlcy10by1hZGphY2VuY3ktbGlzdCIpLHM9dCgicGxhbmFyLWR1YWwiKSxsPXQoInBvaW50LWluLWJpZy1wb2x5Z29uIiksYz10KCJ0d28tcHJvZHVjdCIpLHU9dCgicm9idXN0LXN1bSIpLGg9dCgidW5pcSIpLGY9dCgiLi9saWIvdHJpbS1sZWF2ZXMiKX0seyIuL2xpYi90cmltLWxlYXZlcyI6MjgwLCJlZGdlcy10by1hZGphY2VuY3ktbGlzdCI6MjgxLCJwbGFuYXItZHVhbCI6MjgyLCJwb2ludC1pbi1iaWctcG9seWdvbiI6MjkxLCJyb2J1c3Qtc3VtIjoyMTksInR3by1wcm9kdWN0IjoyMzMsdW5pcToyMzZ9XSwyOTM6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bNDldWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDo0OX1dLDI5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjsidXNlIHJlc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3RoaXMucm9vdHM9bmV3IEFycmF5KHQpLHRoaXMucmFua3M9bmV3IEFycmF5KHQpO2Zvcih2YXIgZT0wO3Q+ZTsrK2UpdGhpcy5yb290c1tlXT1lLHRoaXMucmFua3NbZV09MH1lLmV4cG9ydHM9bixuLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290cy5sZW5ndGh9LG4ucHJvdG90eXBlLm1ha2VTZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJvb3RzLmxlbmd0aDtyZXR1cm4gdGhpcy5yb290cy5wdXNoKHQpLHRoaXMucmFua3MucHVzaCgwKSx0fSxuLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnJvb3RzO2VbdF0hPT10Oyl7dmFyIHI9ZVt0XTtlW3RdPWVbcl0sdD1yfXJldHVybiB0fSxuLnByb3RvdHlwZS5saW5rPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5maW5kKHQpLG49dGhpcy5maW5kKGUpO2lmKHIhPT1uKXt2YXIgaT10aGlzLnJhbmtzLG89dGhpcy5yb290cyxhPWlbcl0scz1pW25dO3M+YT9vW3JdPW46YT5zP29bbl09cjoob1tuXT1yLCsraVtyXSl9fX0se31dLDI5NTpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsxOTZdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0seyJiaXQtdHdpZGRsZSI6MjkzLGR1cDoxOTYsInVuaW9uLWZpbmQiOjI5NH1dLDI5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj1NYXRoLmFicyhvKHQsZSxyKSksaT1NYXRoLnNxcnQoTWF0aC5wb3coZVswXS1yWzBdLDIpK01hdGgucG93KGVbMV0tclsxXSwyKSk7cmV0dXJuIG4vaX1mdW5jdGlvbiBpKHQsZSxyKXtmdW5jdGlvbiBpKHQpe2lmKHhbdF0pcmV0dXJuIDEvMDt2YXIgcj1tW3RdLGk9eVt0XTtyZXR1cm4gMD5yfHwwPmk/MS8wOm4oZVt0XSxlW3JdLGVbaV0pfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1NW3RdLG49TVtlXTtNW3RdPW4sTVtlXT1yLFRbcl09ZSxUW25dPXR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gYltNW3RdXX1mdW5jdGlvbiBsKHQpe3JldHVybiAxJnQ/dC0xPj4xOih0Pj4xKS0xfWZ1bmN0aW9uIGModCl7Zm9yKHZhciBlPXModCk7Oyl7dmFyIHI9ZSxuPTIqdCsxLGk9MioodCsxKSxhPXQ7aWYoTD5uKXt2YXIgbD1zKG4pO3I+bCYmKGE9bixyPWwpfWlmKEw+aSl7dmFyIGM9cyhpKTtyPmMmJihhPWkpfWlmKGE9PT10KXJldHVybiB0O28odCxhKSx0PWF9fWZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlPXModCk7dD4wOyl7dmFyIHI9bCh0KTtpZihyPj0wKXt2YXIgbj1zKHIpO2lmKG4+ZSl7byh0LHIpLHQ9cjtjb250aW51ZX19cmV0dXJuIHR9fWZ1bmN0aW9uIGgoKXtpZihMPjApe3ZhciB0PU1bMF07cmV0dXJuIG8oMCxMLTEpLEwtPTEsYygwKSx0fXJldHVybi0xfWZ1bmN0aW9uIGYodCxlKXt2YXIgcj1NW3RdO3JldHVybiBiW3JdPT09ZT90OihiW3JdPS0oMS8wKSx1KHQpLGgoKSxiW3JdPWUsTCs9MSx1KEwtMSkpfWZ1bmN0aW9uIGQodCl7aWYoIXhbdF0pe3hbdF09ITA7dmFyIGU9bVt0XSxyPXlbdF07bVtyXT49MCYmKG1bcl09ZSkseVtlXT49MCYmKHlbZV09ciksVFtlXT49MCYmZihUW2VdLGkoZSkpLFRbcl0+PTAmJmYoVFtyXSxpKHIpKX19ZnVuY3Rpb24gcCh0LGUpe2lmKHRbZV08MClyZXR1cm4gZTt2YXIgcj1lLG49ZTtkb3t2YXIgaT10W25dO2lmKCF4W25dfHwwPml8fGk9PT1uKWJyZWFrO2lmKG49aSxpPXRbbl0sIXhbbl18fDA+aXx8aT09PW4pYnJlYWs7bj1pLHI9dFtyXX13aGlsZShyIT09bik7Zm9yKHZhciBvPWU7byE9PW47bz10W29dKXRbb109bjtyZXR1cm4gbn1mb3IodmFyIGc9ZS5sZW5ndGgsdj10Lmxlbmd0aCxtPW5ldyBBcnJheShnKSx5PW5ldyBBcnJheShnKSxiPW5ldyBBcnJheShnKSx4PW5ldyBBcnJheShnKSxfPTA7Zz5fOysrXyltW19dPXlbX109LTEsYltfXT0xLzAseFtfXT0hMTtmb3IodmFyIF89MDt2Pl87KytfKXt2YXIgdz10W19dO2lmKDIhPT13Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIklucHV0IG11c3QgYmUgYSBncmFwaCIpO3ZhciBBPXdbMV0saz13WzBdOy0xIT09eVtrXT95W2tdPS0yOnlba109QSwtMSE9PW1bQV0/bVtBXT0tMjptW0FdPWt9Zm9yKHZhciBNPVtdLFQ9bmV3IEFycmF5KGcpLF89MDtnPl87KytfKXt2YXIgRT1iW19dPWkoXyk7MS8wPkU/KFRbX109TS5sZW5ndGgsTS5wdXNoKF8pKTpUW19dPS0xfWZvcih2YXIgTD1NLmxlbmd0aCxfPUw+PjE7Xz49MDstLV8pYyhfKTtmb3IoOzspe3ZhciBTPWgoKTtpZigwPlN8fGJbU10+cilicmVhaztkKFMpfWZvcih2YXIgQz1bXSxfPTA7Zz5fOysrXyl4W19dfHwoVFtfXT1DLmxlbmd0aCxDLnB1c2goZVtfXS5zbGljZSgpKSk7dmFyIFA9KEMubGVuZ3RoLFtdKTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXAobSx0WzBdKSxyPXAoeSx0WzFdKTtpZihlPj0wJiZyPj0wJiZlIT09cil7dmFyIG49VFtlXSxpPVRbcl07biE9PWkmJlAucHVzaChbbixpXSl9fSksYS51bmlxdWUoYS5ub3JtYWxpemUoUCkpLHtwb3NpdGlvbnM6QyxlZGdlczpQfX1lLmV4cG9ydHM9aTt2YXIgbz10KCJyb2J1c3Qtb3JpZW50YXRpb24iKSxhPXQoInNpbXBsaWNpYWwtY29tcGxleCIpfSx7InJvYnVzdC1vcmllbnRhdGlvbiI6MjE2LCJzaW1wbGljaWFsLWNvbXBsZXgiOjI5NX1dLDI5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9WyIiLHtwYXRoOiJNLTIuNCwtM1YzTDAuNiwwWiIsYmFja29mZjouNn0se3BhdGg6Ik0tMy43LC0yLjVWMi41TDEuMywwWiIsYmFja29mZjoxLjN9LHtwYXRoOiJNLTQuNDUsLTNMLTEuNjUsLTAuMlYwLjJMLTQuNDUsM0wxLjU1LDBaIixiYWNrb2ZmOjEuNTV9LHtwYXRoOiJNLTIuMiwtMi4yTC0wLjIsLTAuMlYwLjJMLTIuMiwyLjJMLTEuNCwzTDEuNiwwTC0xLjQsLTNaIixiYWNrb2ZmOjEuNn0se3BhdGg6Ik0tNC40LC0yLjFMLTAuNiwtMC4yVjAuMkwtNC40LDIuMUwtNCwzTDIsMEwtNCwtM1oiLGJhY2tvZmY6Mn0se3BhdGg6Ik0yLDBBMiwyIDAgMSwxIDAsLTJBMiwyIDAgMCwxIDIsMFoiLGJhY2tvZmY6MH0se3BhdGg6Ik0yLDJWLTJILTJWMloiLGJhY2tvZmY6MH1dfSx7fV0sMjk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vYXJyb3dfcGF0aHMiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLG89dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e19pc0xpbmtlZFRvQXJyYXk6ITAsdGV4dDp7dmFsVHlwZToic3RyaW5nIn0sdGV4dGFuZ2xlOnt2YWxUeXBlOiJhbmdsZSIsZGZsdDowfSxmb250OmEoe30sbyx7fSksb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LGFsaWduOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJjZW50ZXIifSxiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSJ9LGJvcmRlcnBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LGJvcmRlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hvd2Fycm93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxhcnJvd2NvbG9yOnt2YWxUeXBlOiJjb2xvciJ9LGFycm93aGVhZDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsbWF4Om4ubGVuZ3RoLGRmbHQ6MX0sYXJyb3dzaXplOnt2YWxUeXBlOiJudW1iZXIiLG1pbjouMyxkZmx0OjF9LGFycm93d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi4xfSxheDp7dmFsVHlwZToibnVtYmVyIixkZmx0Oi0xMH0sYXk6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDotMzB9LHhyZWY6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBhcGVyIixpLmlkUmVnZXgueC50b1N0cmluZygpXX0seDp7dmFsVHlwZToibnVtYmVyIn0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6ImF1dG8ifSx5cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsaS5pZFJlZ2V4LnkudG9TdHJpbmcoKV19LHk6e3ZhbFR5cGU6Im51bWJlciJ9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJhdXRvIn0sX2RlcHJlY2F0ZWQ6e3JlZjp7dmFsVHlwZToic3RyaW5nIn19fX0seyIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Mzk5LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjQwNywiLi9hcnJvd19wYXRocyI6Mjk3fV0sMjk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmdW5jdGlvbiByKGUscil7cmV0dXJuIGEuTGliLmNvZXJjZSh0LG4sYy5sYXlvdXRBdHRyaWJ1dGVzLGUscil9dmFyIG49e307cigib3BhY2l0eSIpLHIoImFsaWduIikscigiYmdjb2xvciIpO3ZhciBpPXIoImJvcmRlcmNvbG9yIiksbz1hLkNvbG9yLm9wYWNpdHkoaSk7cigiYm9yZGVycGFkIik7dmFyIHM9cigiYm9yZGVyd2lkdGgiKSxsPXIoInNob3dhcnJvdyIpO2wmJihyKCJhcnJvd2NvbG9yIixvP24uYm9yZGVyY29sb3I6YS5Db2xvci5kZWZhdWx0TGluZSkscigiYXJyb3doZWFkIikscigiYXJyb3dzaXplIikscigiYXJyb3d3aWR0aCIsMioobyYmc3x8MSkpLHIoImF4IikscigiYXkiKSxhLkxpYi5ub25lT3JBbGwodCxuLFsiYXgiLCJheSJdKSkscigidGV4dCIsbD8iJm5ic3A7IjoibmV3IHRleHQiKSxyKCJ0ZXh0YW5nbGUiKSxhLkxpYi5jb2VyY2VGb250KHIsImZvbnQiLGUuZm9udCk7Zm9yKHZhciB1PVsieCIsInkiXSxoPTA7Mj5oO2grKyl7dmFyIGY9dVtoXSxkPXtfZnVsbExheW91dDplfSxwPWEuQXhlcy5jb2VyY2VSZWYodCxuLGQsZiksZz0uNTtpZigicGFwZXIiIT09cCl7dmFyIHY9YS5BeGVzLmdldEZyb21JZChkLHApO2lmKGc9di5yYW5nZVswXStnKih2LnJhbmdlWzFdLXYucmFuZ2VbMF0pLC0xIT09WyJkYXRlIiwiY2F0ZWdvcnkiXS5pbmRleE9mKHYudHlwZSkmJiJzdHJpbmciPT10eXBlb2YgdFtmXSl7dmFyIG07CiJkYXRlIj09PXYudHlwZT8obT1hLkxpYi5kYXRlVGltZTJtcyh0W2ZdKSxtIT09ITEmJih0W2ZdPW0pKToodi5fY2F0ZWdvcmllc3x8W10pLmxlbmd0aCYmKG09di5fY2F0ZWdvcmllcy5pbmRleE9mKHRbZl0pLC0xIT09bSYmKHRbZl09bSkpfX1yKGYsZyksbHx8cihmKyJhbmNob3IiKX1yZXR1cm4gYS5MaWIubm9uZU9yQWxsKHQsbixbIngiLCJ5Il0pLG59ZnVuY3Rpb24gaSh0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2UuYW5ub3RhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1hLkF4ZXMuZ2V0RnJvbUlkKHQsZS54cmVmKSxuPWEuQXhlcy5nZXRGcm9tSWQodCxlLnlyZWYpO2lmKHJ8fG4pe3ZhciBpPShlLl94c2l6ZXx8MCkvMixvPWUuX3hzaGlmdHx8MCxzPShlLl95c2l6ZXx8MCkvMixsPWUuX3lzaGlmdHx8MCxjPWktbyx1PWkrbyxoPXMtbCxmPXMrbDtpZihlLnNob3dhcnJvdyl7dmFyIGQ9MyplLmFycm93c2l6ZSplLmFycm93d2lkdGg7Yz1NYXRoLm1heChjLGQpLHU9TWF0aC5tYXgodSxkKSxoPU1hdGgubWF4KGgsZCksZj1NYXRoLm1heChmLGQpfXImJnIuYXV0b3JhbmdlJiZhLkF4ZXMuZXhwYW5kKHIsW3IubDJjKGUueCldLHtwcGFkcGx1czp1LHBwYWRtaW51czpjfSksbiYmbi5hdXRvcmFuZ2UmJmEuQXhlcy5leHBhbmQobixbbi5sMmMoZS55KV0se3BwYWRwbHVzOmYscHBhZG1pbnVzOmh9KX19KX1mdW5jdGlvbiBvKHQsZSxyLG4saSxvLGEscyl7dmFyIGw9ci10LGM9aS10LHU9YS1pLGg9bi1lLGY9by1lLGQ9cy1vLHA9bCpkLXUqaDtpZigwPT09cClyZXR1cm4gbnVsbDt2YXIgZz0oYypkLXUqZikvcCx2PShjKmgtbCpmKS9wO3JldHVybiAwPnZ8fHY+MXx8MD5nfHxnPjE/bnVsbDp7eDp0K2wqZyx5OmUraCpnfX12YXIgYT10KCIuLi8uLi9wbG90bHkiKSxzPXQoImQzIiksbD10KCJmYXN0LWlzbnVtZXJpYyIpLGM9ZS5leHBvcnRzPXt9O2MuQVJST1dQQVRIUz10KCIuL2Fycm93X3BhdGhzIiksYy5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLGMuc3VwcGx5TGF5b3V0RGVmYXVsdHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5hbm5vdGF0aW9uc3x8W10saT1lLmFubm90YXRpb25zPVtdLG89MDtvPHIubGVuZ3RoO28rKylpLnB1c2gobihyW29dfHx7fSxlKSl9LGMuZHJhd0FsbD1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2UuX2luZm9sYXllci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uIikucmVtb3ZlKCk7Zm9yKHZhciByPTA7cjxlLmFubm90YXRpb25zLmxlbmd0aDtyKyspYy5kcmF3KHQscik7cmV0dXJuIGEuUGxvdHMucHJldmlvdXNQcm9taXNlcyh0KX0sYy5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5hbm5vdGF0aW9ucy5sZW5ndGg7YS5yZWxheW91dCh0LCJhbm5vdGF0aW9uc1siK2UrIl0iLCJhZGQiKX0sYy5kcmF3PWZ1bmN0aW9uKHQsZSxyLGkpe2Z1bmN0aW9uIHUodCl7cmV0dXJuIHQuY2FsbChhLkRyYXdpbmcuZm9udCxZKS5hdHRyKHsidGV4dC1hbmNob3IiOntsZWZ0OiJzdGFydCIscmlnaHQ6ImVuZCJ9W08uYWxpZ25dfHwibWlkZGxlIn0pLGEudXRpbC5jb252ZXJ0VG9Uc3BhbnModCxoKSx0fWZ1bmN0aW9uIGgoKXtmdW5jdGlvbiByKHQsZSl7cmV0dXJuImF1dG8iPT09ZSYmKGU9MS8zPnQ/ImxlZnQiOnQ+Mi8zPyJyaWdodCI6ImNlbnRlciIpLHtjZW50ZXI6MCxtaWRkbGU6MCxsZWZ0Oi41LGJvdHRvbTotLjUscmlnaHQ6LS41LHRvcDouNX1bZV19WC5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5hdHRyKHt5OjAseDowfSk7dmFyIG49VS5zZWxlY3QoIi5hbm5vdGF0aW9uLW1hdGgtZ3JvdXAiKSxpPSFuLmVtcHR5KCksbD1hLkRyYXdpbmcuYkJveCgoaT9uOlgpLm5vZGUoKSksdT1sLndpZHRoLGg9bC5oZWlnaHQsZj1NYXRoLnJvdW5kKHUrMipIKSxkPU1hdGgucm91bmQoaCsyKkgpO08uX3c9dSxPLl9oPWg7dmFyIGc9ITE7aWYoWyJ4IiwieSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG4saT1hLkF4ZXMuZ2V0RnJvbUlkKHQsT1tlKyJyZWYiXXx8ZSksbz0oRisoIngiPT09ZT8wOjkwKSkqTWF0aC5QSS8xODAscz1mKk1hdGguYWJzKE1hdGguY29zKG8pKStkKk1hdGguYWJzKE1hdGguc2luKG8pKSxsPU9bZSsiYW5jaG9yIl07aWYoaSl7aWYoIWkuYXV0b3JhbmdlJiYoT1tlXS1pLnJhbmdlWzBdKSooT1tlXS1pLnJhbmdlWzFdKT4wKXJldHVybiB2b2lkKGc9ITApO2pbZV09aS5fb2Zmc2V0K2kubDJwKE9bZV0pLG49LjV9ZWxzZSBuPU9bZV0sInkiPT09ZSYmKG49MS1uKSxqW2VdPSJ4Ij09PWU/dy5sK3cudypuOncudCt3Lmgqbjt2YXIgYz0wO2M9Ty5zaG93YXJyb3c/T1siYSIrZV06cypyKG4sbCksaltlXSs9YyxPWyJfIitlKyJ0eXBlIl09aSYmaS50eXBlLE9bIl8iK2UrInNpemUiXT1zLE9bIl8iK2UrInNoaWZ0Il09Y30pLGcpcmV0dXJuIHZvaWQgVS5yZW1vdmUoKTt2YXIgdixtO08uc2hvd2Fycm93JiYodj1hLkxpYi5jb25zdHJhaW4oai54LU8uYXgsMSxwLndpZHRoLTEpLG09YS5MaWIuY29uc3RyYWluKGoueS1PLmF5LDEscC5oZWlnaHQtMSkpLGoueD1hLkxpYi5jb25zdHJhaW4oai54LDEscC53aWR0aC0xKSxqLnk9YS5MaWIuY29uc3RyYWluKGoueSwxLHAuaGVpZ2h0LTEpO3ZhciB5PUgtbC50b3AsYj1ILWwubGVmdDtpP24uc2VsZWN0KCJzdmciKS5hdHRyKHt4OkgtMSx5Okh9KTooWC5hdHRyKHt4OmIseTp5fSksWC5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5hdHRyKHt5OnkseDpifSkpLEcuY2FsbChhLkRyYXdpbmcuc2V0UmVjdCxWLzIsVi8yLGYtVixkLVYpLFUuY2FsbChhLkRyYXdpbmcuc2V0UmVjdCxNYXRoLnJvdW5kKGoueC1mLzIpLE1hdGgucm91bmQoai55LWQvMiksZixkKTt2YXIgeD0iYW5ub3RhdGlvbnNbIitlKyJdIixfPWZ1bmN0aW9uKHIsbil7cy5zZWxlY3QodCkuc2VsZWN0QWxsKCcuYW5ub3RhdGlvbi1hcnJvdy1nW2RhdGEtaW5kZXg9IicrZSsnIl0nKS5yZW1vdmUoKTt2YXIgaT1qLngrcixsPWoueStuLHU9YS5MaWIucm90YXRpb25YWU1hdHJpeChGLGksbCksaD1hLkxpYi5hcHBseTJEVHJhbnNmb3JtKHUpLGY9YS5MaWIuYXBwbHkyRFRyYW5zZm9ybTIodSksZD1HLmF0dHIoIndpZHRoIikvMixwPUcuYXR0cigiaGVpZ2h0IikvMixnPVtbaS1kLGwtcCxpLWQsbCtwXSxbaS1kLGwrcCxpK2QsbCtwXSxbaStkLGwrcCxpK2QsbC1wXSxbaStkLGwtcCxpLWQsbC1wXV0ubWFwKGYpO2lmKCFnLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0XiEhbyh2LG0sdisxZTYsbSsxZTYsZVswXSxlWzFdLGVbMl0sZVszXSl9LCExKSl7Zy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW8oaSxsLHYsbSx0WzBdLHRbMV0sdFsyXSx0WzNdKTtlJiYoaT1lLngsbD1lLnkpfSk7dmFyIHk9Ty5hcnJvd3dpZHRoLGI9Ty5hcnJvd2NvbG9yLF89RC5hcHBlbmQoImciKS5zdHlsZSh7b3BhY2l0eTphLkNvbG9yLm9wYWNpdHkoYil9KS5jbGFzc2VkKCJhbm5vdGF0aW9uLWFycm93LWciLCEwKS5hdHRyKCJkYXRhLWluZGV4IixTdHJpbmcoZSkpLEE9Xy5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSIraSsiLCIrbCsiTCIrdisiLCIrbSkuc3R5bGUoInN0cm9rZS13aWR0aCIseSsicHgiKS5jYWxsKGEuQ29sb3Iuc3Ryb2tlLGEuQ29sb3IucmdiKGIpKTtjLmFycm93aGVhZChBLE8uYXJyb3doZWFkLCJlbmQiLE8uYXJyb3dzaXplKTt2YXIgaz1fLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImFubm90YXRpb24iLCEwKS5jbGFzc2VkKCJhbm5kcmFnIiwhMCkuYXR0cih7ImRhdGEtaW5kZXgiOlN0cmluZyhlKSxkOiJNMywzSC0zVi0zSDNaTTAsMEwiKyhpLXYpKyIsIisobC1tKSx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK3YrIiwiK20rIikifSkuc3R5bGUoInN0cm9rZS13aWR0aCIseSs2KyJweCIpLmNhbGwoYS5Db2xvci5zdHJva2UsInJnYmEoMCwwLDAsMCkiKS5jYWxsKGEuQ29sb3IuZmlsbCwicmdiYSgwLDAsMCwwKSIpO2lmKHQuX2NvbnRleHQuZWRpdGFibGUpe3ZhciBNLFQsRTthLkZ4LmRyYWdFbGVtZW50KHtlbGVtZW50Omsubm9kZSgpLHByZXBGbjpmdW5jdGlvbigpe1Q9TnVtYmVyKFUuYXR0cigieCIpKSxFPU51bWJlcihVLmF0dHIoInkiKSksTT17fSxJJiZJLmF1dG9yYW5nZSYmKE1bSS5fbmFtZSsiLmF1dG9yYW5nZSJdPSEwKSxOJiZOLmF1dG9yYW5nZSYmKE1bTi5fbmFtZSsiLmF1dG9yYW5nZSJdPSEwKX0sbW92ZUZuOmZ1bmN0aW9uKHQsZSl7Xy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsIitlKyIpIik7dmFyIHI9aChULEUpLG49clswXSt0LGk9clsxXStlO1UuY2FsbChhLkRyYXdpbmcuc2V0UG9zaXRpb24sbixpKSxNW3grIi54Il09ST9PLngrdC9JLl9tOih2K3Qtdy5sKS93LncsTVt4KyIueSJdPU4/Ty55K2UvTi5fbToxLShtK2Utdy50KS93LmgsQi5hdHRyKHt0cmFuc2Zvcm06InJvdGF0ZSgiK0YrIiwiK24rIiwiK2krIikifSl9LGRvbmVGbjpmdW5jdGlvbihlKXtpZihlKXthLnJlbGF5b3V0KHQsTSk7dmFyIHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmpzLW5vdGVzLWJveC1wYW5lbCIpO3ImJnIucmVkcmF3KHIuc2VsZWN0ZWRPYmopfX19KX19fTtPLnNob3dhcnJvdyYmXygwLDApO3ZhciBBPWEuTGliLnJvdGF0aW9uWFlNYXRyaXgoRixqLngsai55KSxrPWEuTGliLmFwcGx5MkRUcmFuc2Zvcm0oQSk7aWYodC5fY29udGV4dC5lZGl0YWJsZSl7dmFyIE0sVCxFO2EuRnguZHJhZ0VsZW1lbnQoe2VsZW1lbnQ6VS5ub2RlKCkscHJlcEZuOmZ1bmN0aW9uKCl7TT1OdW1iZXIoVS5hdHRyKCJ4IikpLFQ9TnVtYmVyKFUuYXR0cigieSIpKSxFPXt9fSxtb3ZlRm46ZnVuY3Rpb24odCxlKXtVLmNhbGwoYS5EcmF3aW5nLnNldFBvc2l0aW9uLE0rdCxUK2UpO3ZhciByPSJwb2ludGVyIjtpZihPLnNob3dhcnJvdylFW3grIi5heCJdPU8uYXgrdCxFW3grIi5heSJdPU8uYXkrZSxfKHQsZSk7ZWxzZXtpZihJKUVbeCsiLngiXT1PLngrdC9JLl9tO2Vsc2V7dmFyIG49Ty5feHNpemUvdy53LGk9Ty54K08uX3hzaGlmdC93Lnctbi8yO0VbeCsiLngiXT1hLkZ4LmRyYWdBbGlnbihpK3Qvdy53LG4sMCwxLE8ueGFuY2hvcil9aWYoTilFW3grIi55Il09Ty55K2UvTi5fbTtlbHNle3ZhciBvPU8uX3lzaXplL3cuaCxzPU8ueS1PLl95c2hpZnQvdy5oLW8vMjtFW3grIi55Il09YS5GeC5kcmFnQWxpZ24ocy1lL3cuaCxvLDAsMSxPLnlhbmNob3IpfUkmJk58fChyPWEuRnguZHJhZ0N1cnNvcnMoST8uNTpFW3grIi54Il0sTj8uNTpFW3grIi55Il0sTy54YW5jaG9yLE8ueWFuY2hvcikpfXZhciBsPWsoTSxUKSxjPWxbMF0rdCx1PWxbMV0rZTtVLmNhbGwoYS5EcmF3aW5nLnNldFBvc2l0aW9uLGMsdSksQi5hdHRyKHt0cmFuc2Zvcm06InJvdGF0ZSgiK0YrIiwiK2MrIiwiK3UrIikifSksYS5GeC5zZXRDdXJzb3IoVSxyKX0sZG9uZUZuOmZ1bmN0aW9uKGUpe2lmKGEuRnguc2V0Q3Vyc29yKFUpLGUpe2EucmVsYXlvdXQodCxFKTt2YXIgcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuanMtbm90ZXMtYm94LXBhbmVsIik7ciYmci5yZWRyYXcoci5zZWxlY3RlZE9iail9fX0pfX12YXIgZixkPXQubGF5b3V0LHA9dC5fZnVsbExheW91dDtpZighbChlKXx8LTE9PT1lKXtpZighZSYmQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gZC5hbm5vdGF0aW9ucz1pLGMuc3VwcGx5TGF5b3V0RGVmYXVsdHMoZCxwKSx2b2lkIGMuZHJhd0FsbCh0KTtpZigicmVtb3ZlIj09PWkpcmV0dXJuIGRlbGV0ZSBkLmFubm90YXRpb25zLHAuYW5ub3RhdGlvbnM9W10sdm9pZCBjLmRyYXdBbGwodCk7aWYociYmImFkZCIhPT1pKXtmb3IoZj0wO2Y8cC5hbm5vdGF0aW9ucy5sZW5ndGg7ZisrKWMuZHJhdyh0LGYscixpKTtyZXR1cm59ZT1wLmFubm90YXRpb25zLmxlbmd0aCxwLmFubm90YXRpb25zLnB1c2goe30pfWlmKCFyJiZpKXtpZigicmVtb3ZlIj09PWkpe2ZvcihwLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCcuYW5ub3RhdGlvbltkYXRhLWluZGV4PSInK2UrJyJdJykucmVtb3ZlKCkscC5hbm5vdGF0aW9ucy5zcGxpY2UoZSwxKSxkLmFubm90YXRpb25zLnNwbGljZShlLDEpLGY9ZTtmPHAuYW5ub3RhdGlvbnMubGVuZ3RoO2YrKylwLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCcuYW5ub3RhdGlvbltkYXRhLWluZGV4PSInKyhmKzEpKyciXScpLmF0dHIoImRhdGEtaW5kZXgiLFN0cmluZyhmKSksYy5kcmF3KHQsZik7cmV0dXJufWlmKCJhZGQiPT09aXx8YS5MaWIuaXNQbGFpbk9iamVjdChpKSl7cC5hbm5vdGF0aW9ucy5zcGxpY2UoZSwwLHt9KTt2YXIgZz1hLkxpYi5pc1BsYWluT2JqZWN0KGkpP2EuTGliLmV4dGVuZEZsYXQoe30saSk6e3RleHQ6Ik5ldyB0ZXh0In07Zm9yKGQuYW5ub3RhdGlvbnM/ZC5hbm5vdGF0aW9ucy5zcGxpY2UoZSwwLGcpOmQuYW5ub3RhdGlvbnM9W2ddLGY9cC5hbm5vdGF0aW9ucy5sZW5ndGgtMTtmPmU7Zi0tKXAuX2luZm9sYXllci5zZWxlY3RBbGwoJy5hbm5vdGF0aW9uW2RhdGEtaW5kZXg9IicrKGYtMSkrJyJdJykuYXR0cigiZGF0YS1pbmRleCIsU3RyaW5nKGYpKSxjLmRyYXcodCxmKX19cC5faW5mb2xheWVyLnNlbGVjdEFsbCgnLmFubm90YXRpb25bZGF0YS1pbmRleD0iJytlKyciXScpLnJlbW92ZSgpO3ZhciB2PWQuYW5ub3RhdGlvbnNbZV0sbT1wLmFubm90YXRpb25zW2VdO2lmKHYpe3ZhciB5PXt4cmVmOnYueHJlZix5cmVmOnYueXJlZn0sYj17fTsic3RyaW5nIj09dHlwZW9mIHImJnI/YltyXT1pOmEuTGliLmlzUGxhaW5PYmplY3QocikmJihiPXIpO3ZhciB4PU9iamVjdC5rZXlzKGIpO2ZvcihmPTA7Zjx4Lmxlbmd0aDtmKyspe3ZhciBfPXhbZl07YS5MaWIubmVzdGVkUHJvcGVydHkodixfKS5zZXQoYltfXSl9dmFyIHc9cC5fc2l6ZSxBPVsieCIsInkiXTtmb3IoZj0wOzI+ZjtmKyspe3ZhciBrPUFbZl07aWYodm9pZCAwPT09YltrXSYmdm9pZCAwIT09dltrXSl7dmFyIE09YS5BeGVzLmdldEZyb21JZCh0LGEuQXhlcy5jb2VyY2VSZWYoeSx7fSx0LGspKSxUPWEuQXhlcy5nZXRGcm9tSWQodCxhLkF4ZXMuY29lcmNlUmVmKHYse30sdCxrKSksRT12W2tdLEw9bVsiXyIraysidHlwZSJdO2lmKHZvaWQgMCE9PWJbaysicmVmIl0pe3ZhciBTPSJhdXRvIj09PXZbaysiYW5jaG9yIl0sQz0ieCI9PT1rP3cudzp3LmgsUD0obVsiXyIraysic2l6ZSJdfHwwKS8oMipDKTtpZihNJiZUKUU9KEUtTS5yYW5nZVswXSkvKE0ucmFuZ2VbMV0tTS5yYW5nZVswXSksRT1ULnJhbmdlWzBdK0UqKFQucmFuZ2VbMV0tVC5yYW5nZVswXSk7ZWxzZSBpZihNKXtpZihFPShFLU0ucmFuZ2VbMF0pLyhNLnJhbmdlWzFdLU0ucmFuZ2VbMF0pLEU9TS5kb21haW5bMF0rRSooTS5kb21haW5bMV0tTS5kb21haW5bMF0pLFMpe3ZhciB6PUUrUCxSPUUtUDsyLzM+RStSP0U9UjpFK3o+NC8zJiYoRT16KX19ZWxzZSBUJiYoUyYmKDEvMz5FP0UrPVA6RT4yLzMmJihFLT1QKSksRT0oRS1ULmRvbWFpblswXSkvKFQuZG9tYWluWzFdLVQuZG9tYWluWzBdKSxFPVQucmFuZ2VbMF0rRSooVC5yYW5nZVsxXS1ULnJhbmdlWzBdKSl9VCYmVD09PU0mJkwmJigibG9nIj09PUwmJiJsb2ciIT09VC50eXBlP0U9TWF0aC5wb3coMTAsRSk6ImxvZyIhPT1MJiYibG9nIj09PVQudHlwZSYmKEU9RT4wP01hdGgubG9nKEUpL01hdGguTE4xMDp2b2lkIDApKSx2W2tdPUV9fXZhciBPPW4odixwKTtwLmFubm90YXRpb25zW2VdPU87dmFyIEk9YS5BeGVzLmdldEZyb21JZCh0LE8ueHJlZiksTj1hLkF4ZXMuZ2V0RnJvbUlkKHQsTy55cmVmKSxqPXt4OjAseTowfSxGPStPLnRleHRhbmdsZXx8MCxEPXAuX2luZm9sYXllci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uIiwhMCkuYXR0cigiZGF0YS1pbmRleCIsU3RyaW5nKGUpKS5zdHlsZSgib3BhY2l0eSIsTy5vcGFjaXR5KS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dC5fZHJhZ2dpbmc9ITEsdC5lbWl0KCJwbG90bHlfY2xpY2thbm5vdGF0aW9uIix7aW5kZXg6ZSxhbm5vdGF0aW9uOnYsZnVsbEFubm90YXRpb246T30pfSksQj1ELmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tdGV4dC1nIiwhMCkuYXR0cigiZGF0YS1pbmRleCIsU3RyaW5nKGUpKSxVPUIuYXBwZW5kKCJzdmciKS5jYWxsKGEuRHJhd2luZy5zZXRQb3NpdGlvbiwwLDApLFY9Ty5ib3JkZXJ3aWR0aCxxPU8uYm9yZGVycGFkLEg9VitxLEc9VS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJnIikuc3R5bGUoInN0cm9rZS13aWR0aCIsVisicHgiKS5jYWxsKGEuQ29sb3Iuc3Ryb2tlLE8uYm9yZGVyY29sb3IpLmNhbGwoYS5Db2xvci5maWxsLE8uYmdjb2xvciksWT1PLmZvbnQsWD1VLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImFubm90YXRpb24iLCEwKS5hdHRyKCJkYXRhLXVuZm9ybWF0dGVkIixPLnRleHQpLnRleHQoTy50ZXh0KTt0Ll9jb250ZXh0LmVkaXRhYmxlP1guY2FsbChhLnV0aWwubWFrZUVkaXRhYmxlLFUpLmNhbGwodSkub24oImVkaXQiLGZ1bmN0aW9uKHIpe08udGV4dD1yLHRoaXMuYXR0cih7ImRhdGEtdW5mb3JtYXR0ZWQiOk8udGV4dH0pLHRoaXMuY2FsbCh1KTt2YXIgbj17fTtuWyJhbm5vdGF0aW9uc1siK2UrIl0udGV4dCJdPU8udGV4dCxJJiZJLmF1dG9yYW5nZSYmKG5bSS5fbmFtZSsiLmF1dG9yYW5nZSJdPSEwKSxOJiZOLmF1dG9yYW5nZSYmKG5bTi5fbmFtZSsiLmF1dG9yYW5nZSJdPSEwKSxhLnJlbGF5b3V0KHQsbil9KTpYLmNhbGwodSksQi5hdHRyKHt0cmFuc2Zvcm06InJvdGF0ZSgiK0YrIiwiK2oueCsiLCIrai55KyIpIn0pLmNhbGwoYS5EcmF3aW5nLnNldFBvc2l0aW9uLGoueCxqLnkpfX0sYy5hcnJvd2hlYWQ9ZnVuY3Rpb24odCxlLHIsbil7bChuKXx8KG49MSk7dmFyIGk9dC5ub2RlKCksbz1jLkFSUk9XUEFUSFNbZXx8MF07aWYobyl7InN0cmluZyI9PXR5cGVvZiByJiZyfHwocj0iZW5kIik7dmFyIHUsaCxmLGQscD0oYS5EcmF3aW5nLmdldFB4KHQsInN0cm9rZS13aWR0aCIpfHwxKSpuLGc9dC5zdHlsZSgic3Ryb2tlIil8fGEuQ29sb3IuZGVmYXVsdExpbmUsdj10LnN0eWxlKCJzdHJva2Utb3BhY2l0eSIpfHwxLG09ci5pbmRleE9mKCJzdGFydCIpPj0wLHk9ci5pbmRleE9mKCJlbmQiKT49MCxiPW8uYmFja29mZipwO2lmKCJsaW5lIj09PWkubm9kZU5hbWUpe2lmKHU9e3g6K3QuYXR0cigieDEiKSx5Oit0LmF0dHIoInkxIil9LGg9e3g6K3QuYXR0cigieDIiKSx5Oit0LmF0dHIoInkyIil9LGY9TWF0aC5hdGFuMih1LnktaC55LHUueC1oLngpLGQ9ZitNYXRoLlBJLGIpe3ZhciB4PWIqTWF0aC5jb3MoZiksXz1iKk1hdGguc2luKGYpO20mJih1LngtPXgsdS55LT1fLHQuYXR0cih7eDE6dS54LHkxOnUueX0pKSx5JiYoaC54Kz14LGgueSs9Xyx0LmF0dHIoe3gyOmgueCx5MjpoLnl9KSl9fWVsc2UgaWYoInBhdGgiPT09aS5ub2RlTmFtZSl7dmFyIHc9aS5nZXRUb3RhbExlbmd0aCgpLEE9IiI7aWYobSl7dmFyIGs9aS5nZXRQb2ludEF0TGVuZ3RoKDApLE09aS5nZXRQb2ludEF0TGVuZ3RoKC4xKTtmPU1hdGguYXRhbjIoay55LU0ueSxrLngtTS54KSx1PWkuZ2V0UG9pbnRBdExlbmd0aChNYXRoLm1pbihiLHcpKSxiJiYoQT0iMHB4LCIrYisicHgsIil9aWYoeSl7dmFyIFQ9aS5nZXRQb2ludEF0TGVuZ3RoKHcpLEU9aS5nZXRQb2ludEF0TGVuZ3RoKHctLjEpO2lmKGQ9TWF0aC5hdGFuMihULnktRS55LFQueC1FLngpLGg9aS5nZXRQb2ludEF0TGVuZ3RoKE1hdGgubWF4KDAsdy1iKSksYil7dmFyIEw9QT8yKmI6YjtBKz13LUwrInB4LCIrdysicHgifX1lbHNlIEEmJihBKz13KyJweCIpO0EmJnQuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLEEpfXZhciBTPWZ1bmN0aW9uKHIsbil7ZT41JiYobj0wKSxzLnNlbGVjdChpLnBhcmVudEVsZW1lbnQpLmFwcGVuZCgicGF0aCIpLmF0dHIoeyJjbGFzcyI6dC5hdHRyKCJjbGFzcyIpLGQ6by5wYXRoLHRyYW5zZm9ybToidHJhbnNsYXRlKCIrci54KyIsIityLnkrIilyb3RhdGUoIisxODAqbi9NYXRoLlBJKyIpc2NhbGUoIitwKyIpIn0pLnN0eWxlKHtmaWxsOmcsb3BhY2l0eTp2LCJzdHJva2Utd2lkdGgiOjB9KX07bSYmUyh1LGYpLHkmJlMoaCxkKX19LGMuY2FsY0F1dG9yYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5hbm5vdGF0aW9ucztpZihyLmxlbmd0aCYmdC5fZnVsbERhdGEubGVuZ3RoKXt2YXIgbj17fTtyLmZvckVhY2goZnVuY3Rpb24odCl7blt0LnhyZWZdPSEwLG5bdC55cmVmXT0hMH0pO3ZhciBvPWEuQXhlcy5saXN0KHQpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5hdXRvcmFuZ2UmJm5bdC5faWRdfSk7aWYoby5sZW5ndGgpcmV0dXJuIGEuTGliLnN5bmNPckFzeW5jKFtjLmRyYXdBbGwsaV0sdCl9fX0seyIuLi8uLi9wbG90bHkiOjM5MCwiLi9hcnJvd19wYXRocyI6Mjk3LCIuL2F0dHJpYnV0ZXMiOjI5OCxkMzo3MCwiZmFzdC1pc251bWVyaWMiOjc0fV0sMzAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuZGVmYXVsdHM9WyIjMWY3N2I0IiwiI2ZmN2YwZSIsIiMyY2EwMmMiLCIjZDYyNzI4IiwiIzk0NjdiZCIsIiM4YzU2NGIiLCIjZTM3N2MyIiwiIzdmN2Y3ZiIsIiNiY2JkMjIiLCIjMTdiZWNmIl0sci5kZWZhdWx0TGluZT0iIzQ0NCIsci5saWdodExpbmU9IiNlZWUiLHIuYmFja2dyb3VuZD0iI2ZmZiJ9LHt9XSwzMDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtpZihvKHQpfHwic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIHQ7dmFyIGU9dC50cmltKCk7aWYoInJnYiIhPT1lLnN1YnN0cigwLDMpKXJldHVybiB0O3ZhciByPWUubWF0Y2goL15yZ2JhP1xzKlwoKFteKCldKilcKSQvKTtpZighcilyZXR1cm4gdDt2YXIgbj1yWzFdLnRyaW0oKS5zcGxpdCgvXHMqW1xzLF1ccyovKSxpPSJhIj09PWUuY2hhckF0KDMpJiY0PT09bi5sZW5ndGg7aWYoIWkmJjMhPT1uLmxlbmd0aClyZXR1cm4gdDtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKyl7aWYoIW5bYV0ubGVuZ3RoKXJldHVybiB0O2lmKG5bYV09TnVtYmVyKG5bYV0pLCEoblthXT49MCkpcmV0dXJuIHQ7aWYoMz09PWEpblthXT4xJiYoblthXT0xKTtlbHNlIGlmKG5bYV0+PTEpcmV0dXJuIHR9dmFyIHM9TWF0aC5yb3VuZCgyNTUqblswXSkrIiwgIitNYXRoLnJvdW5kKDI1NSpuWzFdKSsiLCAiK01hdGgucm91bmQoMjU1Km5bMl0pO3JldHVybiBpPyJyZ2JhKCIrcysiLCAiK25bM10rIikiOiJyZ2IoIitzKyIpIn12YXIgaT10KCJ0aW55Y29sb3IyIiksbz10KCJmYXN0LWlzbnVtZXJpYyIpLGE9ZS5leHBvcnRzPXt9LHM9dCgiLi9hdHRyaWJ1dGVzIik7YS5kZWZhdWx0cz1zLmRlZmF1bHRzLGEuZGVmYXVsdExpbmU9cy5kZWZhdWx0TGluZSxhLmxpZ2h0TGluZT1zLmxpZ2h0TGluZSxhLmJhY2tncm91bmQ9cy5iYWNrZ3JvdW5kLGEudGlueVJHQj1mdW5jdGlvbih0KXt2YXIgZT10LnRvUmdiKCk7cmV0dXJuInJnYigiK01hdGgucm91bmQoZS5yKSsiLCAiK01hdGgucm91bmQoZS5nKSsiLCAiK01hdGgucm91bmQoZS5iKSsiKSJ9LGEucmdiPWZ1bmN0aW9uKHQpe3JldHVybiBhLnRpbnlSR0IoaSh0KSl9LGEub3BhY2l0eT1mdW5jdGlvbih0KXtyZXR1cm4gdD9pKHQpLmdldEFscGhhKCk6MH0sYS5hZGRPcGFjaXR5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9aSh0KS50b1JnYigpO3JldHVybiJyZ2JhKCIrTWF0aC5yb3VuZChyLnIpKyIsICIrTWF0aC5yb3VuZChyLmcpKyIsICIrTWF0aC5yb3VuZChyLmIpKyIsICIrZSsiKSJ9LGEuY29tYmluZT1mdW5jdGlvbih0LGUpe3ZhciByPWkodCkudG9SZ2IoKTtpZigxPT09ci5hKXJldHVybiBpKHQpLnRvUmdiU3RyaW5nKCk7dmFyIG49aShlfHxhLmJhY2tncm91bmQpLnRvUmdiKCksbz0xPT09bi5hP246e3I6MjU1KigxLW4uYSkrbi5yKm4uYSxnOjI1NSooMS1uLmEpK24uZypuLmEsYjoyNTUqKDEtbi5hKStuLmIqbi5hfSxzPXtyOm8uciooMS1yLmEpK3IucipyLmEsZzpvLmcqKDEtci5hKStyLmcqci5hLGI6by5iKigxLXIuYSkrci5iKnIuYX07cmV0dXJuIGkocykudG9SZ2JTdHJpbmcoKX0sYS5zdHJva2U9ZnVuY3Rpb24odCxlKXt2YXIgcj1pKGUpO3Quc3R5bGUoe3N0cm9rZTphLnRpbnlSR0IociksInN0cm9rZS1vcGFjaXR5IjpyLmdldEFscGhhKCl9KX0sYS5maWxsPWZ1bmN0aW9uKHQsZSl7dmFyIHI9aShlKTt0LnN0eWxlKHtmaWxsOmEudGlueVJHQihyKSwiZmlsbC1vcGFjaXR5IjpyLmdldEFscGhhKCl9KX0sYS5jbGVhbj1mdW5jdGlvbih0KXtpZih0JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBlLHIsaSxvLHM9T2JqZWN0LmtleXModCk7Zm9yKGU9MDtlPHMubGVuZ3RoO2UrKylpZihpPXNbZV0sbz10W2ldLCJjb2xvciI9PT1pLnN1YnN0cihpLmxlbmd0aC01KSlpZihBcnJheS5pc0FycmF5KG8pKWZvcihyPTA7cjxvLmxlbmd0aDtyKyspb1tyXT1uKG9bcl0pO2Vsc2UgdFtpXT1uKG8pO2Vsc2UgaWYoImNvbG9yc2NhbGUiPT09aS5zdWJzdHIoaS5sZW5ndGgtMTApJiZBcnJheS5pc0FycmF5KG8pKWZvcihyPTA7cjxvLmxlbmd0aDtyKyspQXJyYXkuaXNBcnJheShvW3JdKSYmKG9bcl1bMV09bihvW3JdWzFdKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXt2YXIgbD1vWzBdO2lmKCFBcnJheS5pc0FycmF5KGwpJiZsJiYib2JqZWN0Ij09dHlwZW9mIGwpZm9yKHI9MDtyPG8ubGVuZ3RoO3IrKylhLmNsZWFuKG9bcl0pfWVsc2UgbyYmIm9iamVjdCI9PXR5cGVvZiBvJiZhLmNsZWFuKG8pfX19LHsiLi9hdHRyaWJ1dGVzIjozMDAsImZhc3QtaXNudW1lcmljIjo3NCx0aW55Y29sb3IyOjIzMX1dLDMwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXt0aGlja25lc3Ntb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmcmFjdGlvbiIsInBpeGVscyJdLGRmbHQ6InBpeGVscyJ9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjMwfSxsZW5tb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmcmFjdGlvbiIsInBpeGVscyJdLGRmbHQ6ImZyYWN0aW9uIn0sbGVuOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0seDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEuMDIsbWluOi0yLG1heDozfSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJsZWZ0In0seHBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwfSx5Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6LjUsbWluOi0yLG1heDozfSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJtaWRkbGUifSx5cGFkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTB9LG91dGxpbmVjb2xvcjpuLmxpbmVjb2xvcixvdXRsaW5ld2lkdGg6bi5saW5ld2lkdGgsYm9yZGVyY29sb3I6bi5saW5lY29sb3IsYm9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowfSxiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSJ9LHRpY2ttb2RlOm4udGlja21vZGUsbnRpY2tzOm4ubnRpY2tzLHRpY2swOm4udGljazAsZHRpY2s6bi5kdGljayx0aWNrdmFsczpuLnRpY2t2YWxzLHRpY2t0ZXh0Om4udGlja3RleHQsdGlja3M6byh7fSxuLnRpY2tzLHtkZmx0OiIifSksdGlja2xlbjpuLnRpY2tsZW4sdGlja3dpZHRoOm4udGlja3dpZHRoLHRpY2tjb2xvcjpuLnRpY2tjb2xvcixzaG93dGlja2xhYmVsczpuLnNob3d0aWNrbGFiZWxzLHRpY2tmb250Om4udGlja2ZvbnQsdGlja2FuZ2xlOm4udGlja2FuZ2xlLHRpY2tmb3JtYXQ6bi50aWNrZm9ybWF0LHRpY2twcmVmaXg6bi50aWNrcHJlZml4LHNob3d0aWNrcHJlZml4Om4uc2hvd3RpY2twcmVmaXgsdGlja3N1ZmZpeDpuLnRpY2tzdWZmaXgsc2hvd3RpY2tzdWZmaXg6bi5zaG93dGlja3N1ZmZpeCxleHBvbmVudGZvcm1hdDpuLmV4cG9uZW50Zm9ybWF0LHNob3dleHBvbmVudDpuLnNob3dleHBvbmVudCx0aXRsZTp7dmFsVHlwZToic3RyaW5nIixkZmx0OiJDbGljayB0byBlbnRlciBjb2xvcnNjYWxlIHRpdGxlIn0sdGl0bGVmb250Om8oe30saSx7fSksdGl0bGVzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyaWdodCIsInRvcCIsImJvdHRvbSJdLGRmbHQ6InRvcCJ9fX0seyIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6NDAwLCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjQwN31dLDMwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRzIiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19kZWZhdWx0cyIpLGE9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIG4uY29lcmNlKGMsbCxhLHQsZSl9dmFyIGw9ZS5jb2xvcmJhcj17fSxjPXQuY29sb3JiYXJ8fHt9LHU9cygidGhpY2tuZXNzbW9kZSIpO3MoInRoaWNrbmVzcyIsImZyYWN0aW9uIj09PXU/MzAvKHIud2lkdGgtci5tYXJnaW4ubC1yLm1hcmdpbi5yKTozMCk7dmFyIGg9cygibGVubW9kZSIpO3MoImxlbiIsImZyYWN0aW9uIj09PWg/MTpyLmhlaWdodC1yLm1hcmdpbi50LXIubWFyZ2luLmIpLHMoIngiKSxzKCJ4YW5jaG9yIikscygieHBhZCIpLHMoInkiKSxzKCJ5YW5jaG9yIikscygieXBhZCIpLG4ubm9uZU9yQWxsKGMsbCxbIngiLCJ5Il0pLHMoIm91dGxpbmVjb2xvciIpLHMoIm91dGxpbmV3aWR0aCIpLHMoImJvcmRlcmNvbG9yIikscygiYm9yZGVyd2lkdGgiKSxzKCJiZ2NvbG9yIiksaShjLGwscywibGluZWFyIiksbyhjLGwscywibGluZWFyIix7b3V0ZXJUaWNrczohMSxmb250OnIuZm9udCxub0hvdmVyOiEwfSkscygidGl0bGUiKSxuLmNvZXJjZUZvbnQocywidGl0bGVmb250IixyLmZvbnQpLHMoInRpdGxlc2lkZSIpfX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfZGVmYXVsdHMiOjQwNSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjQwNiwiLi9hdHRyaWJ1dGVzIjozMDJ9XSwzMDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoIi4uLy4uL3Bsb3RseSIpLG89dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiKSxsPXQoIi4uLy4uL2xpYiIpLGM9dCgiLi4vZHJhd2luZyIpLHU9dCgiLi4vY29sb3IiKSxoPXQoIi4uL3RpdGxlcyIpLGY9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZGVmYXVsdHMiKSxkPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9wb3NpdGlvbl9kZWZhdWx0cyIpLHA9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksZz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKCl7ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBsLmNvZXJjZShHLFkscCx0LGUpfWZ1bmN0aW9uIG0oKXtpZigtMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZih2LnRpdGxlc2lkZSkpe3ZhciBlPVEuc2VsZWN0KCIuY2J0aXRsZSIpLHI9ZS5zZWxlY3QoInRleHQiKSxpPVstdi5vdXRsaW5ld2lkdGgvMix2Lm91dGxpbmV3aWR0aC8yXSxvPWUuc2VsZWN0KCIuaCIrWS5faWQrInRpdGxlLW1hdGgtZ3JvdXAiKS5ub2RlKCkscz0xNS42O2lmKHIubm9kZSgpJiYocz0xLjMqcGFyc2VJbnQoci5zdHlsZSgiZm9udC1zaXplIiksMTApKSxvPyh0dD1jLmJCb3gobykuaGVpZ2h0LHR0PnMmJihpWzFdLT0odHQtcykvMikpOnIubm9kZSgpJiYhci5jbGFzc2VkKCJqcy1wbGFjZWhvbGRlciIpJiYodHQ9Yy5iQm94KGUubm9kZSgpKS5oZWlnaHQpLHR0KXtpZih0dCs9NSwidG9wIj09PXYudGl0bGVzaWRlKVkuZG9tYWluWzFdLT10dC9iLl9zaXplLmgsaVsxXSo9LTE7ZWxzZXtZLmRvbWFpblswXSs9dHQvYi5fc2l6ZS5oO3ZhciBsPU1hdGgubWF4KDEsci5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5zaXplKCkpO2lbMV0rPSgxLWwpKnN9ZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIpIiksWS5zZXRTY2FsZSgpfX1RLnNlbGVjdEFsbCgiLmNiZmlsbHMsLmNibGluZXMsLmNiYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTWF0aC5yb3VuZChiLl9zaXplLmgqKDEtWS5kb21haW5bMV0pKSsiKSIpO3ZhciB1PVEuc2VsZWN0KCIuY2JmaWxscyIpLnNlbGVjdEFsbCgicmVjdC5jYmZpbGwiKS5kYXRhKEEpO3UuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJjYmZpbGwiLCEwKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpLHUuZXhpdCgpLnJlbW92ZSgpLHUuZWFjaChmdW5jdGlvbih0LGUpe3ZhciByPVswPT09ZT9fWzBdOihBW2VdK0FbZS0xXSkvMixlPT09QS5sZW5ndGgtMT9fWzFdOihBW2VdK0FbZSsxXSkvMl0ubWFwKFkuYzJwKS5tYXAoTWF0aC5yb3VuZCk7ZSE9PUEubGVuZ3RoLTEmJihyWzFdKz1yWzFdPnJbMF0/MTotMSksbi5zZWxlY3QodGhpcykuYXR0cih7eDpCLHdpZHRoOk1hdGgubWF4KFIsMikseTpuLm1pbihyKSxoZWlnaHQ6TWF0aC5tYXgobi5tYXgociktbi5taW4ociksMil9KS5zdHlsZSgiZmlsbCIsTSh0KSl9KTt2YXIgaD1RLnNlbGVjdCgiLmNibGluZXMiKS5zZWxlY3RBbGwoInBhdGguY2JsaW5lIikuZGF0YSh2LmxpbmUuY29sb3ImJnYubGluZS53aWR0aD93OltdKTtyZXR1cm4gaC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImNibGluZSIsITApLGguZXhpdCgpLnJlbW92ZSgpLGguZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5hdHRyKCJkIiwiTSIrQisiLCIrKE1hdGgucm91bmQoWS5jMnAodCkpK3YubGluZS53aWR0aC8yJTEpKyJoIitSKS5jYWxsKGMubGluZUdyb3VwU3R5bGUsdi5saW5lLndpZHRoLGsodCksdi5saW5lLmRhc2gpfSksWS5fYXhpc2xheWVyLnNlbGVjdEFsbCgiZy4iK1kuX2lkKyJ0aWNrLHBhdGgiKS5yZW1vdmUoKSxZLl9wb3M9QitSKyh2Lm91dGxpbmV3aWR0aHx8MCkvMi0oIm91dHNpZGUiPT09di50aWNrcz8xOjApLFkuc2lkZT0icmlnaHQiLGEuZG9UaWNrcyh0LFkpfWZ1bmN0aW9uIHkoKXt2YXIgcj1SK3Yub3V0bGluZXdpZHRoLzIrYy5iQm94KFkuX2F4aXNsYXllci5ub2RlKCkpLndpZHRoO2lmKEM9Si5zZWxlY3QoInRleHQiKSxDLm5vZGUoKSYmIUMuY2xhc3NlZCgianMtcGxhY2Vob2xkZXIiKSl7dmFyIG4saT1KLnNlbGVjdCgiLmgiK1kuX2lkKyJ0aXRsZS1tYXRoLWdyb3VwIikubm9kZSgpO249aSYmLTEhPT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2Yodi50aXRsZXNpZGUpP2MuYkJveChpKS53aWR0aDpjLmJCb3goSi5ub2RlKCkpLnJpZ2h0LUItYi5fc2l6ZS5sLHI9TWF0aC5tYXgocixuKX12YXIgYT0yKnYueHBhZCtyK3YuYm9yZGVyd2lkdGgrdi5vdXRsaW5ld2lkdGgvMixzPXEtSDtRLnNlbGVjdCgiLmNiYmciKS5hdHRyKHt4OkItdi54cGFkLSh2LmJvcmRlcndpZHRoK3Yub3V0bGluZXdpZHRoKS8yLHk6SC1GLHdpZHRoOk1hdGgubWF4KGEsMiksaGVpZ2h0Ok1hdGgubWF4KHMrMipGLDIpfSkuY2FsbCh1LmZpbGwsdi5iZ2NvbG9yKS5jYWxsKHUuc3Ryb2tlLHYuYm9yZGVyY29sb3IpLnN0eWxlKHsic3Ryb2tlLXdpZHRoIjp2LmJvcmRlcndpZHRofSksUS5zZWxlY3RBbGwoIi5jYm91dGxpbmUiKS5hdHRyKHt4OkIseTpIK3YueXBhZCsoInRvcCI9PT12LnRpdGxlc2lkZT90dDowKSx3aWR0aDpNYXRoLm1heChSLDIpLGhlaWdodDpNYXRoLm1heChzLTIqdi55cGFkLXR0LDIpfSkuY2FsbCh1LnN0cm9rZSx2Lm91dGxpbmVjb2xvcikuc3R5bGUoe2ZpbGw6Ik5vbmUiLCJzdHJva2Utd2lkdGgiOnYub3V0bGluZXdpZHRofSk7dmFyIGw9KHtjZW50ZXI6LjUscmlnaHQ6MX1bdi54YW5jaG9yXXx8MCkqYTtRLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhiLl9zaXplLmwtbCkrIiwiK2IuX3NpemUudCsiKSIpLG8uYXV0b01hcmdpbih0LGUse3g6di54LHk6di55LGw6YSooe3JpZ2h0OjEsY2VudGVyOi41fVt2LnhhbmNob3JdfHwwKSxyOmEqKHtsZWZ0OjEsY2VudGVyOi41fVt2LnhhbmNob3JdfHwwKSx0OnMqKHtib3R0b206MSxtaWRkbGU6LjV9W3YueWFuY2hvcl18fDApLGI6cyooe3RvcDoxLG1pZGRsZTouNX1bdi55YW5jaG9yXXx8MCl9KX12YXIgYj10Ll9mdWxsTGF5b3V0O2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB2LmZpbGxjb2xvciYmImZ1bmN0aW9uIiE9dHlwZW9mIHYubGluZS5jb2xvcilyZXR1cm4gdm9pZCBiLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCJnLiIrZSkucmVtb3ZlKCk7dmFyIHgsXz1uLmV4dGVudCgoImZ1bmN0aW9uIj09dHlwZW9mIHYuZmlsbGNvbG9yP3YuZmlsbGNvbG9yOnYubGluZS5jb2xvcikuZG9tYWluKCkpLHc9W10sQT1bXSxrPSJmdW5jdGlvbiI9PXR5cGVvZiB2LmxpbmUuY29sb3I/di5saW5lLmNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHYubGluZS5jb2xvcn0sTT0iZnVuY3Rpb24iPT10eXBlb2Ygdi5maWxsY29sb3I/di5maWxsY29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdi5maWxsY29sb3J9LFQ9di5sZXZlbHMuZW5kK3YubGV2ZWxzLnNpemUvMTAwLEU9di5sZXZlbHMuc2l6ZSxMPTEuMDAxKl9bMF0tLjAwMSpfWzFdLFM9MS4wMDEqX1sxXS0uMDAxKl9bMF07Zm9yKHg9di5sZXZlbHMuc3RhcnQ7MD4oeC1UKSpFO3grPUUpeD5MJiZTPngmJncucHVzaCh4KTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygdi5maWxsY29sb3IpaWYodi5maWxsbGV2ZWxzKWZvcihUPXYuZmlsbGxldmVscy5lbmQrdi5maWxsbGV2ZWxzLnNpemUvMTAwLEU9di5maWxsbGV2ZWxzLnNpemUseD12LmZpbGxsZXZlbHMuc3RhcnQ7MD4oeC1UKSpFO3grPUUpeD5fWzBdJiZ4PF9bMV0mJkEucHVzaCh4KTtlbHNlIEE9dy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQtdi5sZXZlbHMuc2l6ZS8yfSksQS5wdXNoKEFbQS5sZW5ndGgtMV0rdi5sZXZlbHMuc2l6ZSk7ZWxzZSB2LmZpbGxjb2xvciYmInN0cmluZyI9PXR5cGVvZiB2LmZpbGxjb2xvciYmKEE9WzBdKTt2LmxldmVscy5zaXplPDAmJih3LnJldmVyc2UoKSxBLnJldmVyc2UoKSk7dmFyIEMsUD1iLmhlaWdodC1iLm1hcmdpbi50LWIubWFyZ2luLmIsej1iLndpZHRoLWIubWFyZ2luLmwtYi5tYXJnaW4ucixSPU1hdGgucm91bmQodi50aGlja25lc3MqKCJmcmFjdGlvbiI9PT12LnRoaWNrbmVzc21vZGU/ejoxKSksTz1SL2IuX3NpemUudyxJPU1hdGgucm91bmQodi5sZW4qKCJmcmFjdGlvbiI9PT12Lmxlbm1vZGU/UDoxKSksTj1JL2IuX3NpemUuaCxqPXYueHBhZC9iLl9zaXplLncsRj0odi5ib3JkZXJ3aWR0aCt2Lm91dGxpbmV3aWR0aCkvMixEPXYueXBhZC9iLl9zaXplLmgsQj1NYXRoLnJvdW5kKHYueCpiLl9zaXplLncrdi54cGFkKSxVPXYueC1PKih7bWlkZGxlOi41LHJpZ2h0OjF9W3YueGFuY2hvcl18fDApLFY9di55K04qKCh7dG9wOi0uNSxib3R0b206LjV9W3YueWFuY2hvcl18fDApLS41KSxxPU1hdGgucm91bmQoYi5fc2l6ZS5oKigxLVYpKSxIPXEtSSxHPXt0eXBlOiJsaW5lYXIiLHJhbmdlOl8sdGlja21vZGU6di50aWNrbW9kZSxudGlja3M6di5udGlja3MsdGljazA6di50aWNrMCxkdGljazp2LmR0aWNrLHRpY2t2YWxzOnYudGlja3ZhbHMsdGlja3RleHQ6di50aWNrdGV4dCx0aWNrczp2LnRpY2tzLHRpY2tsZW46di50aWNrbGVuLHRpY2t3aWR0aDp2LnRpY2t3aWR0aCx0aWNrY29sb3I6di50aWNrY29sb3Isc2hvd3RpY2tsYWJlbHM6di5zaG93dGlja2xhYmVscyx0aWNrZm9udDp2LnRpY2tmb250LHRpY2thbmdsZTp2LnRpY2thbmdsZSx0aWNrZm9ybWF0OnYudGlja2Zvcm1hdCxleHBvbmVudGZvcm1hdDp2LmV4cG9uZW50Zm9ybWF0LHNob3dleHBvbmVudDp2LnNob3dleHBvbmVudCxzaG93dGlja3ByZWZpeDp2LnNob3d0aWNrcHJlZml4LHRpY2twcmVmaXg6di50aWNrcHJlZml4LHNob3d0aWNrc3VmZml4OnYuc2hvd3RpY2tzdWZmaXgsdGlja3N1ZmZpeDp2LnRpY2tzdWZmaXgsdGl0bGU6di50aXRsZSx0aXRsZWZvbnQ6di50aXRsZWZvbnQsYW5jaG9yOiJmcmVlIixwb3NpdGlvbjoxfSxZPXt9LFg9e2xldHRlcjoieSIsZm9udDpiLmZvbnQsbm9Ib3ZlcjohMH07aWYoZihHLFksZyxYKSxkKEcsWSxnLFgpLFkuX2lkPSJ5IitlLFkuX3RkPXQsWS5wb3NpdGlvbj12LngraitPLHIuYXhpcz1ZLC0xIT09WyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKHYudGl0bGVzaWRlKSYmKFkudGl0bGVzaWRlPXYudGl0bGVzaWRlLFkudGl0bGV4PXYueCtqLFkudGl0bGV5PVYrKCJ0b3AiPT09di50aXRsZXNpZGU/Ti1EOkQpKSx2LmxpbmUuY29sb3ImJiJhdXRvIj09PXYudGlja21vZGUpe1kudGlja21vZGU9ImxpbmVhciIsWS50aWNrMD12LmxldmVscy5zdGFydDt2YXIgVz12LmxldmVscy5zaXplLFo9bC5jb25zdHJhaW4oKHEtSCkvNTAsNCwxNSkrMSwkPShfWzFdLV9bMF0pLygodi5udGlja3N8fFopKlcpO2lmKCQ+MSl7dmFyIEs9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZygkKS9NYXRoLkxOMTApKTtXKj1LKmwucm91bmRVcCgkL0ssWzIsNSwxMF0pLChNYXRoLmFicyh2LmxldmVscy5zdGFydCkvdi5sZXZlbHMuc2l6ZSsxZS02KSUxPDJlLTYmJihZLnRpY2swPTApfVkuZHRpY2s9V31ZLmRvbWFpbj1bVitELFYrTi1EXSxZLnNldFNjYWxlKCk7dmFyIFE9Yi5faW5mb2xheWVyLnNlbGVjdEFsbCgiZy4iK2UpLmRhdGEoWzBdKTtRLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLCEwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyk7dC5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJjYmJnIiwhMCksdC5hcHBlbmQoImciKS5jbGFzc2VkKCJjYmZpbGxzIiwhMCksdC5hcHBlbmQoImciKS5jbGFzc2VkKCJjYmxpbmVzIiwhMCksdC5hcHBlbmQoImciKS5jbGFzc2VkKCJjYmF4aXMiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApLHQuYXBwZW5kKCJnIikuY2xhc3NlZCgiY2J0aXRsZXVuc2hpZnQiLCEwKS5hcHBlbmQoImciKS5jbGFzc2VkKCJjYnRpdGxlIiwhMCksdC5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJjYm91dGxpbmUiLCEwKX0pLFEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTWF0aC5yb3VuZChiLl9zaXplLmwpKyIsIitNYXRoLnJvdW5kKGIuX3NpemUudCkrIikiKTt2YXIgSj1RLnNlbGVjdCgiLmNidGl0bGV1bnNoaWZ0IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0iK01hdGgucm91bmQoYi5fc2l6ZS5sKSsiLC0iK01hdGgucm91bmQoYi5fc2l6ZS50KSsiKSIpO1kuX2F4aXNsYXllcj1RLnNlbGVjdCgiLmNiYXhpcyIpO3ZhciB0dD0wOy0xIT09WyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKHYudGl0bGVzaWRlKSYmaC5kcmF3KHQsWS5faWQrInRpdGxlIik7dmFyIGV0PWwuc3luY09yQXN5bmMoW28ucHJldmlvdXNQcm9taXNlcyxtLG8ucHJldmlvdXNQcm9taXNlcyx5XSx0KTtpZihldCYmZXQudGhlbiYmKHQuX3Byb21pc2VzfHxbXSkucHVzaChldCksdC5fY29udGV4dC5lZGl0YWJsZSl7dmFyIHJ0LG50LGl0O3MuZHJhZ0VsZW1lbnQoe2VsZW1lbnQ6US5ub2RlKCkscHJlcEZuOmZ1bmN0aW9uKCl7cnQ9US5hdHRyKCJ0cmFuc2Zvcm0iKSxzLnNldEN1cnNvcihRKX0sbW92ZUZuOmZ1bmN0aW9uKGUscil7dmFyIG49dC5fZnVsbExheW91dC5fc2l6ZTtRLmF0dHIoInRyYW5zZm9ybSIscnQrIiB0cmFuc2xhdGUoIitlKyIsIityKyIpIiksbnQ9cy5kcmFnQWxpZ24oVStlL24udyxPLDAsMSx2LnhhbmNob3IpLGl0PXMuZHJhZ0FsaWduKFYtci9uLmgsTiwwLDEsdi55YW5jaG9yKTt2YXIgaT1zLmRyYWdDdXJzb3JzKG50LGl0LHYueGFuY2hvcix2LnlhbmNob3IpO3Muc2V0Q3Vyc29yKFEsaSl9LGRvbmVGbjpmdW5jdGlvbihyKXtpZihzLnNldEN1cnNvcihRKSxyJiZ2b2lkIDAhPT1udCYmdm9pZCAwIT09aXQpe3ZhciBuLG89ZS5zdWJzdHIoMik7dC5fZnVsbERhdGEuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC51aWQ9PT1vPyhuPXQuaW5kZXgsITApOnZvaWQgMH0pLGkucmVzdHlsZSh0LHsiY29sb3JiYXIueCI6bnQsImNvbG9yYmFyLnkiOml0fSxuKX19fSl9cmV0dXJuIGV0fXZhciB2PXt9O3JldHVybiBPYmplY3Qua2V5cyhnKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZbdF09bnVsbH0pLHYuZmlsbGNvbG9yPW51bGwsdi5saW5lPXtjb2xvcjpudWxsLHdpZHRoOm51bGwsZGFzaDpudWxsfSx2LmxldmVscz17c3RhcnQ6bnVsbCxlbmQ6bnVsbCxzaXplOm51bGx9LHYuZmlsbGxldmVscz1udWxsLE9iamVjdC5rZXlzKHYpLmZvckVhY2goZnVuY3Rpb24odCl7clt0XT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odlt0XT1sLmlzUGxhaW5PYmplY3Qodlt0XSk/bC5leHRlbmRGbGF0KHZbdF0sZSk6ZSxyKTp2W3RdfX0pLHIub3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgcltlXSYmcltlXSh0W2VdKX0pLHJ9LHIuX29wdHM9dixyfX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdGx5IjozOTAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2RlZmF1bHRzIjozOTQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCI6Mzk4LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQwMCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Bvc2l0aW9uX2RlZmF1bHRzIjo0MDIsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4uL2NvbG9yIjozMDEsIi4uL2RyYXdpbmciOjMxOSwiLi4vdGl0bGVzIjozNTYsIi4vYXR0cmlidXRlcyI6MzAyLGQzOjcwfV0sMzA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQuY29sb3JiYXImJm51bGwhPT10LmNvbG9yYmFyfX0se31dLDMwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksci5zdXBwbHlEZWZhdWx0cz10KCIuL2RlZmF1bHRzIiksci5kcmF3PXQoIi4vZHJhdyIpLHIuaGFzQ29sb3JiYXI9dCgiLi9oYXNfY29sb3JiYXIiKX0seyIuL2F0dHJpYnV0ZXMiOjMwMiwiLi9kZWZhdWx0cyI6MzAzLCIuL2RyYXciOjMwNCwiLi9oYXNfY29sb3JiYXIiOjMwNX1dLDMwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3phdXRvOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSx6bWluOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbH0sem1heDp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGx9LGNvbG9yc2NhbGU6e3ZhbFR5cGU6ImNvbG9yc2NhbGUifSxhdXRvY29sb3JzY2FsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0scmV2ZXJzZXNjYWxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxzaG93c2NhbGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LF9kZXByZWNhdGVkOntzY2w6e3ZhbFR5cGU6ImNvbG9yc2NhbGUifSxyZXZlcnNlc2NsOnt2YWxUeXBlOiJib29sZWFuIn19fX0se31dLDMwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vc2NhbGVzIiksbz10KCIuL2ZsaXBfc2NhbGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIHMsbDtyPyhzPW4ubmVzdGVkUHJvcGVydHkodCxyKS5nZXQoKSxsPW4ubmVzdGVkUHJvcGVydHkodC5faW5wdXQscikuZ2V0KCkpOihzPXQsbD10Ll9pbnB1dCk7dmFyIGM9c1thKyJhdXRvIl0sdT1zW2ErIm1pbiJdLGg9c1thKyJtYXgiXSxmPXMuY29sb3JzY2FsZTtjPT09ITEmJnZvaWQgMCE9PXV8fCh1PW4uYWdnTnVtcyhNYXRoLm1pbixudWxsLGUpKSxjPT09ITEmJnZvaWQgMCE9PWh8fChoPW4uYWdnTnVtcyhNYXRoLm1heCxudWxsLGUpKSx1PT09aCYmKHUtPS41LGgrPS41KSxzW2ErIm1pbiJdPXUsc1thKyJtYXgiXT1oLGxbYSsibWluIl09dSxsW2ErIm1heCJdPWgscy5hdXRvY29sb3JzY2FsZSYmKGY9MD51Kmg/aS5SZEJ1OnU+PTA/aS5SZWRzOmkuQmx1ZXMsbC5jb2xvcnNjYWxlPWYscy5yZXZlcnNlc2NhbGUmJihmPW8oZikpLHMuY29sb3JzY2FsZT1mKX19LHsiLi4vLi4vbGliIjozNzMsIi4vZmxpcF9zY2FsZSI6MzExLCIuL3NjYWxlcyI6MzE4fV0sMzA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vc2NhbGVzIik7ZS5leHBvcnRzPW4uUmRCdX0seyIuL3NjYWxlcyI6MzE4fV0sMzEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uL2NvbG9yYmFyL2hhc19jb2xvcmJhciIpLGE9dCgiLi4vY29sb3JiYXIvZGVmYXVsdHMiKSxzPXQoIi4vaXNfdmFsaWRfc2NhbGUiKSxsPXQoIi4vZmxpcF9zY2FsZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixjLHUpe3ZhciBoPXUucHJlZml4LGY9dS5jTGV0dGVyLGQ9aC5zbGljZSgwLGgubGVuZ3RoLTEpLHA9aD9pLm5lc3RlZFByb3BlcnR5KHQsZCkuZ2V0KCl8fHt9OnQsZz1oP2kubmVzdGVkUHJvcGVydHkoZSxkKS5nZXQoKXx8e306ZSx2PXBbZisibWluIl0sbT1wW2YrIm1heCJdLHk9cC5jb2xvcnNjYWxlLGI9bih2KSYmbihtKSYmbT52O2MoaCtmKyJhdXRvIiwhYiksYyhoK2YrIm1pbiIpLGMoaCtmKyJtYXgiKTt2YXIgeDt2b2lkIDAhPT15JiYoeD0hcyh5KSksYyhoKyJhdXRvY29sb3JzY2FsZSIseCk7dmFyIF89YyhoKyJjb2xvcnNjYWxlIiksdz1jKGgrInJldmVyc2VzY2FsZSIpO2lmKHcmJihnLmNvbG9yc2NhbGU9bChfKSksIm1hcmtlci5saW5lLiIhPT1oKXt2YXIgQTtoJiYoQT1vKHApKTt2YXIgaz1jKGgrInNob3dzY2FsZSIsQSk7ayYmYShwLGcscil9fX0seyIuLi8uLi9saWIiOjM3MywiLi4vY29sb3JiYXIvZGVmYXVsdHMiOjMwMywiLi4vY29sb3JiYXIvaGFzX2NvbG9yYmFyIjozMDUsIi4vZmxpcF9zY2FsZSI6MzExLCIuL2lzX3ZhbGlkX3NjYWxlIjozMTUsImZhc3QtaXNudW1lcmljIjo3NH1dLDMxMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT1yLTEsbz0wO2k+PTA7aS0tLG8rKyllPXRbaV0sbltvXT1bMS1lWzBdLGVbMV1dO3JldHVybiBufX0se31dLDMxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3NjYWxlcyIpLGk9dCgiLi9kZWZhdWx0X3NjYWxlIiksbz10KCIuL2lzX3ZhbGlkX3NjYWxlX2FycmF5Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcigpe3RyeXt0PW5bdF18fEpTT04ucGFyc2UodCl9Y2F0Y2gocil7dD1lfX1yZXR1cm4gZXx8KGU9aSksdD8oInN0cmluZyI9PXR5cGVvZiB0JiYocigpLCJzdHJpbmciPT10eXBlb2YgdCYmcigpKSxvKHQpP3Q6ZSk6ZX19LHsiLi9kZWZhdWx0X3NjYWxlIjozMDksIi4vaXNfdmFsaWRfc2NhbGVfYXJyYXkiOjMxNiwiLi9zY2FsZXMiOjMxOH1dLDMxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuL2lzX3ZhbGlkX3NjYWxlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZT9pLm5lc3RlZFByb3BlcnR5KHQsZSkuZ2V0KCl8fHt9OnQsYT1yLmNvbG9yLHM9ITE7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylpZihuKGFbbF0pKXtzPSEwO2JyZWFrfXJldHVybiJvYmplY3QiPT10eXBlb2YgciYmbnVsbCE9PXImJihzfHxyLnNob3dzY2FsZT09PSEwfHxuKHIuY21pbikmJm4oci5jbWF4KXx8byhyLmNvbG9yc2NhbGUpfHwib2JqZWN0Ij09dHlwZW9mIHIuY29sb3JiYXImJm51bGwhPT1yLmNvbG9yYmFyKX19LHsiLi4vLi4vbGliIjozNzMsIi4vaXNfdmFsaWRfc2NhbGUiOjMxNSwiZmFzdC1pc251bWVyaWMiOjc0fV0sMzE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Iuc2NhbGVzPXQoIi4vc2NhbGVzIiksci5kZWZhdWx0U2NhbGU9dCgiLi9kZWZhdWx0X3NjYWxlIiksci5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLHIuaGFuZGxlRGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLHIuY2FsYz10KCIuL2NhbGMiKSxyLmhhc0NvbG9yc2NhbGU9dCgiLi9oYXNfY29sb3JzY2FsZSIpLHIuaXNWYWxpZFNjYWxlPXQoIi4vaXNfdmFsaWRfc2NhbGUiKSxyLmdldFNjYWxlPXQoIi4vZ2V0X3NjYWxlIiksci5mbGlwU2NhbGU9dCgiLi9mbGlwX3NjYWxlIiksci5tYWtlU2NhbGVGdW5jdGlvbj10KCIuL21ha2Vfc2NhbGVfZnVuY3Rpb24iKX0seyIuL2F0dHJpYnV0ZXMiOjMwNywiLi9jYWxjIjozMDgsIi4vZGVmYXVsdF9zY2FsZSI6MzA5LCIuL2RlZmF1bHRzIjozMTAsIi4vZmxpcF9zY2FsZSI6MzExLCIuL2dldF9zY2FsZSI6MzEyLCIuL2hhc19jb2xvcnNjYWxlIjozMTMsIi4vaXNfdmFsaWRfc2NhbGUiOjMxNSwiLi9tYWtlX3NjYWxlX2Z1bmN0aW9uIjozMTcsIi4vc2NhbGVzIjozMTh9XSwzMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zY2FsZXMiKSxpPXQoIi4vaXNfdmFsaWRfc2NhbGVfYXJyYXkiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PW5bdF0/ITA6aSh0KX19LHsiLi9pc192YWxpZF9zY2FsZV9hcnJheSI6MzE2LCIuL3NjYWxlcyI6MzE4fV0sMzE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInRpbnljb2xvcjIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscj0hMCxpPTA7aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYoMCE9PSt0WzBdWzBdfHwxIT09K3RbdC5sZW5ndGgtMV1bMF0pcmV0dXJuITE7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe2lmKGU9dFtvXSwyIT09ZS5sZW5ndGh8fCtlWzBdPGl8fCFuKGVbMV0pLmlzVmFsaWQoKSl7cj0hMTticmVha31pPStlWzBdfXJldHVybiByfXJldHVybiExfX0se3Rpbnljb2xvcjI6MjMxfV0sMzE3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksaT10KCJ0aW55Y29sb3IyIiksbz10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vY29sb3IiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgcyxsPXQubGVuZ3RoLGM9bmV3IEFycmF5KGwpLHU9bmV3IEFycmF5KGwpLGg9MDtsPmg7aCsrKXM9dFtoXSxjW2hdPWUrc1swXSooci1lKSx1W2hdPXNbMV07dmFyIGY9bi5zY2FsZS5saW5lYXIoKS5kb21haW4oYykuaW50ZXJwb2xhdGUobi5pbnRlcnBvbGF0ZVJnYikucmFuZ2UodSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBvKHQpP2YodCk6aSh0KS5pc1ZhbGlkKCk/dDphLmRlZmF1bHRMaW5lfX19LHsiLi4vY29sb3IiOjMwMSxkMzo3MCwiZmFzdC1pc251bWVyaWMiOjc0LHRpbnljb2xvcjI6MjMxfV0sMzE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17R3JleXM6W1swLCJyZ2IoMCwwLDApIl0sWzEsInJnYigyNTUsMjU1LDI1NSkiXV0sWWxHbkJ1OltbMCwicmdiKDgsMjksODgpIl0sWy4xMjUsInJnYigzNyw1MiwxNDgpIl0sWy4yNSwicmdiKDM0LDk0LDE2OCkiXSxbLjM3NSwicmdiKDI5LDE0NSwxOTIpIl0sWy41LCJyZ2IoNjUsMTgyLDE5NikiXSxbLjYyNSwicmdiKDEyNywyMDUsMTg3KSJdLFsuNzUsInJnYigxOTksMjMzLDE4MCkiXSxbLjg3NSwicmdiKDIzNywyNDgsMjE3KSJdLFsxLCJyZ2IoMjU1LDI1NSwyMTcpIl1dLEdyZWVuczpbWzAsInJnYigwLDY4LDI3KSJdLFsuMTI1LCJyZ2IoMCwxMDksNDQpIl0sWy4yNSwicmdiKDM1LDEzOSw2OSkiXSxbLjM3NSwicmdiKDY1LDE3MSw5MykiXSxbLjUsInJnYigxMTYsMTk2LDExOCkiXSxbLjYyNSwicmdiKDE2MSwyMTcsMTU1KSJdLFsuNzUsInJnYigxOTksMjMzLDE5MikiXSxbLjg3NSwicmdiKDIyOSwyNDUsMjI0KSJdLFsxLCJyZ2IoMjQ3LDI1MiwyNDUpIl1dLFlsT3JSZDpbWzAsInJnYigxMjgsMCwzOCkiXSxbLjEyNSwicmdiKDE4OSwwLDM4KSJdLFsuMjUsInJnYigyMjcsMjYsMjgpIl0sWy4zNzUsInJnYigyNTIsNzgsNDIpIl0sWy41LCJyZ2IoMjUzLDE0MSw2MCkiXSxbLjYyNSwicmdiKDI1NCwxNzgsNzYpIl0sWy43NSwicmdiKDI1NCwyMTcsMTE4KSJdLFsuODc1LCJyZ2IoMjU1LDIzNywxNjApIl0sWzEsInJnYigyNTUsMjU1LDIwNCkiXV0sQmx1ZXJlZDpbWzAsInJnYigwLDAsMjU1KSJdLFsxLCJyZ2IoMjU1LDAsMCkiXV0sUmRCdTpbWzAsInJnYig1LDEwLDE3MikiXSxbLjM1LCJyZ2IoMTA2LDEzNywyNDcpIl0sWy41LCJyZ2IoMTkwLDE5MCwxOTApIl0sWy42LCJyZ2IoMjIwLDE3MCwxMzIpIl0sWy43LCJyZ2IoMjMwLDE0NSw5MCkiXSxbMSwicmdiKDE3OCwxMCwyOCkiXV0sUmVkczpbWzAsInJnYigyMjAsMjIwLDIyMCkiXSxbLjIsInJnYigyNDUsMTk1LDE1NykiXSxbLjQsInJnYigyNDUsMTYwLDEwNSkiXSxbMSwicmdiKDE3OCwxMCwyOCkiXV0sQmx1ZXM6W1swLCJyZ2IoNSwxMCwxNzIpIl0sWy4zNSwicmdiKDQwLDYwLDE5MCkiXSxbLjUsInJnYig3MCwxMDAsMjQ1KSJdLFsuNiwicmdiKDkwLDEyMCwyNDUpIl0sWy43LCJyZ2IoMTA2LDEzNywyNDcpIl0sWzEsInJnYigyMjAsMjIwLDIyMCkiXV0sUGljbmljOltbMCwicmdiKDAsMCwyNTUpIl0sWy4xLCJyZ2IoNTEsMTUzLDI1NSkiXSxbLjIsInJnYigxMDIsMjA0LDI1NSkiXSxbLjMsInJnYigxNTMsMjA0LDI1NSkiXSxbLjQsInJnYigyMDQsMjA0LDI1NSkiXSxbLjUsInJnYigyNTUsMjU1LDI1NSkiXSxbLjYsInJnYigyNTUsMjA0LDI1NSkiXSxbLjcsInJnYigyNTUsMTUzLDI1NSkiXSxbLjgsInJnYigyNTUsMTAyLDIwNCkiXSxbLjksInJnYigyNTUsMTAyLDEwMikiXSxbMSwicmdiKDI1NSwwLDApIl1dLFJhaW5ib3c6W1swLCJyZ2IoMTUwLDAsOTApIl0sWy4xMjUsInJnYigwLDAsMjAwKSJdLFsuMjUsInJnYigwLDI1LDI1NSkiXSxbLjM3NSwicmdiKDAsMTUyLDI1NSkiXSxbLjUsInJnYig0NCwyNTUsMTUwKSJdLFsuNjI1LCJyZ2IoMTUxLDI1NSwwKSJdLFsuNzUsInJnYigyNTUsMjM0LDApIl0sWy44NzUsInJnYigyNTUsMTExLDApIl0sWzEsInJnYigyNTUsMCwwKSJdXSxQb3J0bGFuZDpbWzAsInJnYigxMiw1MSwxMzEpIl0sWy4yNSwicmdiKDEwLDEzNiwxODYpIl0sWy41LCJyZ2IoMjQyLDIxMSw1NikiXSxbLjc1LCJyZ2IoMjQyLDE0Myw1NikiXSxbMSwicmdiKDIxNywzMCwzMCkiXV0sSmV0OltbMCwicmdiKDAsMCwxMzEpIl0sWy4xMjUsInJnYigwLDYwLDE3MCkiXSxbLjM3NSwicmdiKDUsMjU1LDI1NSkiXSxbLjYyNSwicmdiKDI1NSwyNTUsMCkiXSxbLjg3NSwicmdiKDI1MCwwLDApIl0sWzEsInJnYigxMjgsMCwwKSJdXSxIb3Q6W1swLCJyZ2IoMCwwLDApIl0sWy4zLCJyZ2IoMjMwLDAsMCkiXSxbLjYsInJnYigyNTUsMjEwLDApIl0sWzEsInJnYigyNTUsMjU1LDI1NSkiXV0sQmxhY2tib2R5OltbMCwicmdiKDAsMCwwKSJdLFsuMiwicmdiKDIzMCwwLDApIl0sWy40LCJyZ2IoMjMwLDIxMCwwKSJdLFsuNywicmdiKDI1NSwyNTUsMjU1KSJdLFsxLCJyZ2IoMTYwLDIwMCwyNTUpIl1dLEVhcnRoOltbMCwicmdiKDAsMCwxMzApIl0sWy4xLCJyZ2IoMCwxODAsMTgwKSJdLFsuMiwicmdiKDQwLDIxMCw0MCkiXSxbLjQsInJnYigyMzAsMjMwLDUwKSJdLFsuNiwicmdiKDEyMCw3MCwyMCkiXSxbMSwicmdiKDI1NSwyNTUsMjU1KSJdXSxFbGVjdHJpYzpbWzAsInJnYigwLDAsMCkiXSxbLjE1LCJyZ2IoMzAsMCwxMDApIl0sWy40LCJyZ2IoMTIwLDAsMTAwKSJdLFsuNiwicmdiKDE2MCw5MCwwKSJdLFsuOCwicmdiKDIzMCwyMDAsMCkiXSxbMSwicmdiKDI1NSwyNTAsMjIwKSJdXSxWaXJpZGlzOltbMCwiIzQ0MDE1NCJdLFsuMDYyNzQ1MDk4MDM5MjE1NjksIiM0ODE4NmEiXSxbLjEyNTQ5MDE5NjA3ODQzMTM3LCIjNDcyZDdiIl0sWy4xODgyMzUyOTQxMTc2NDcwNiwiIzQyNDA4NiJdLFsuMjUwOTgwMzkyMTU2ODYyNzQsIiMzYjUyOGIiXSxbLjMxMzcyNTQ5MDE5NjA3ODQsIiMzMzYzOGQiXSxbLjM3NjQ3MDU4ODIzNTI5NDEsIiMyYzcyOGUiXSxbLjQzOTIxNTY4NjI3NDUwOTgsIiMyNjgyOGUiXSxbLjUwMTk2MDc4NDMxMzcyNTUsIiMyMTkxOGMiXSxbLjU2NDcwNTg4MjM1Mjk0MTIsIiMxZmEwODgiXSxbLjYyNzQ1MDk4MDM5MjE1NjksIiMyOGFlODAiXSxbLjY5MDE5NjA3ODQzMTM3MjUsIiMzZmJjNzMiXSxbLjc1Mjk0MTE3NjQ3MDU4ODIsIiM1ZWM5NjIiXSxbLjgxNTY4NjI3NDUwOTgwMzksIiM4NGQ0NGIiXSxbLjg3ODQzMTM3MjU0OTAxOTYsIiNhZGRjMzAiXSxbLjk0MTE3NjQ3MDU4ODIzNTMsIiNkOGUyMTkiXSxbMSwiI2ZkZTcyNSJdXX19LHt9XSwzMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuKXt2YXIgbz10WzBdLWVbMF0sYT10WzFdLWVbMV0scz1yWzBdLWVbMF0sbD1yWzFdLWVbMV0sYz1NYXRoLnBvdyhvKm8rYSphLHgvMiksdT1NYXRoLnBvdyhzKnMrbCpsLHgvMiksaD0odSp1Km8tYypjKnMpKm4sZj0odSp1KmEtYypjKmwpKm4sZD0zKnUqKGMrdSkscD0zKmMqKGMrdSk7cmV0dXJuW1tpLnJvdW5kKGVbMF0rKGQmJmgvZCksMiksaS5yb3VuZChlWzFdKyhkJiZmL2QpLDIpXSxbaS5yb3VuZChlWzBdLShwJiZoL3ApLDIpLGkucm91bmQoZVsxXS0ocCYmZi9wKSwyKV1dfXZhciBpPXQoImQzIiksbz10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxzPXQoIi4uL2NvbG9yIiksbD10KCIuLi9jb2xvcnNjYWxlIiksYz10KCIuLi8uLi9saWIiKSx1PXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGg9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxmPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIiksZD10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiKSxwPWUuZXhwb3J0cz17fTtwLmZvbnQ9ZnVuY3Rpb24odCxlLHIsbil7ZSYmZS5mYW1pbHkmJihuPWUuY29sb3Iscj1lLnNpemUsZT1lLmZhbWlseSksZSYmdC5zdHlsZSgiZm9udC1mYW1pbHkiLGUpLHIrMSYmdC5zdHlsZSgiZm9udC1zaXplIixyKyJweCIpLG4mJnQuY2FsbChzLmZpbGwsbil9LHAuc2V0UG9zaXRpb249ZnVuY3Rpb24odCxlLHIpe3QuYXR0cigieCIsZSkuYXR0cigieSIscil9LHAuc2V0U2l6ZT1mdW5jdGlvbih0LGUscil7dC5hdHRyKCJ3aWR0aCIsZSkuYXR0cigiaGVpZ2h0IixyKX0scC5zZXRSZWN0PWZ1bmN0aW9uKHQsZSxyLG4saSl7dC5jYWxsKHAuc2V0UG9zaXRpb24sZSxyKS5jYWxsKHAuc2V0U2l6ZSxuLGkpfSxwLnRyYW5zbGF0ZVBvaW50cz1mdW5jdGlvbih0LGUscil7dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQueHB8fGUuYzJwKHQueCksYT10LnlwfHxyLmMycCh0LnkpLHM9aS5zZWxlY3QodGhpcyk7byhuKSYmbyhhKT8idGV4dCI9PT10aGlzLm5vZGVOYW1lP3MuYXR0cigieCIsbikuYXR0cigieSIsYSk6cy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIituKyIsIithKyIpIik6cy5yZW1vdmUoKX0pfSxwLmdldFB4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE51bWJlcih0LnN0eWxlKGUpLnJlcGxhY2UoL3B4JC8sIiIpKX0scC5jcmlzcFJvdW5kPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZSYmbyhlKT90Ll9jb250ZXh0LnN0YXRpY1Bsb3Q/ZToxPmU/MTpNYXRoLnJvdW5kKGUpOnJ8fDB9LHAubGluZUdyb3VwU3R5bGU9ZnVuY3Rpb24odCxlLHIsbil7dC5zdHlsZSgiZmlsbCIsIm5vbmUiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBvPSgoKHR8fFtdKVswXXx8e30pLnRyYWNlfHx7fSkubGluZXx8e30sYT1lfHxvLndpZHRofHwwLGw9bnx8by5kYXNofHwiIjsKaS5zZWxlY3QodGhpcykuY2FsbChzLnN0cm9rZSxyfHxvLmNvbG9yKS5jYWxsKHAuZGFzaExpbmUsbCxhKX0pfSxwLmRhc2hMaW5lPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLm1heChyLDMpOyJzb2xpZCI9PT1lP2U9IiI6ImRvdCI9PT1lP2U9bisicHgsIituKyJweCI6ImRhc2giPT09ZT9lPTMqbisicHgsIiszKm4rInB4IjoibG9uZ2Rhc2giPT09ZT9lPTUqbisicHgsIis1Km4rInB4IjoiZGFzaGRvdCI9PT1lP2U9MypuKyJweCwiK24rInB4LCIrbisicHgsIituKyJweCI6ImxvbmdkYXNoZG90Ij09PWUmJihlPTUqbisicHgsIisyKm4rInB4LCIrbisicHgsIisyKm4rInB4IiksdC5zdHlsZSh7InN0cm9rZS1kYXNoYXJyYXkiOmUsInN0cm9rZS13aWR0aCI6cisicHgifSl9LHAuZmlsbEdyb3VwU3R5bGU9ZnVuY3Rpb24odCl7dC5zdHlsZSgic3Ryb2tlLXdpZHRoIiwwKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPWkuc2VsZWN0KHRoaXMpO3RyeXtyLmNhbGwocy5maWxsLGVbMF0udHJhY2UuZmlsbGNvbG9yKX1jYXRjaChuKXtjb25zb2xlLmxvZyhuLHQpLHIucmVtb3ZlKCl9fSl9O3ZhciBnPXQoIi4vc3ltYm9sX2RlZnMiKTtwLnN5bWJvbE5hbWVzPVtdLHAuc3ltYm9sRnVuY3M9W10scC5zeW1ib2xOZWVkTGluZXM9e30scC5zeW1ib2xOb0RvdD17fSxwLnN5bWJvbExpc3Q9W10sT2JqZWN0LmtleXMoZykuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1nW3RdO3Auc3ltYm9sTGlzdD1wLnN5bWJvbExpc3QuY29uY2F0KFtlLm4sdCxlLm4rMTAwLHQrIi1vcGVuIl0pLHAuc3ltYm9sTmFtZXNbZS5uXT10LHAuc3ltYm9sRnVuY3NbZS5uXT1lLmYsZS5uZWVkTGluZSYmKHAuc3ltYm9sTmVlZExpbmVzW2Uubl09ITApLGUubm9Eb3Q/cC5zeW1ib2xOb0RvdFtlLm5dPSEwOnAuc3ltYm9sTGlzdD1wLnN5bWJvbExpc3QuY29uY2F0KFtlLm4rMjAwLHQrIi1kb3QiLGUubiszMDAsdCsiLW9wZW4tZG90Il0pfSk7dmFyIHY9cC5zeW1ib2xOYW1lcy5sZW5ndGgsbT0iTTAsMC41TDAuNSwwTDAsLTAuNUwtMC41LDBaIjtwLnN5bWJvbE51bWJlcj1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPTA7dC5pbmRleE9mKCItb3BlbiIpPjAmJihlPTEwMCx0PXQucmVwbGFjZSgiLW9wZW4iLCIiKSksdC5pbmRleE9mKCItZG90Iik+MCYmKGUrPTIwMCx0PXQucmVwbGFjZSgiLWRvdCIsIiIpKSx0PXAuc3ltYm9sTmFtZXMuaW5kZXhPZih0KSx0Pj0wJiYodCs9ZSl9cmV0dXJuIHQlMTAwPj12fHx0Pj00MDA/MDpNYXRoLmZsb29yKE1hdGgubWF4KHQsMCkpfSxwLnBvaW50U3R5bGU9ZnVuY3Rpb24odCxlKXtpZih0LnNpemUoKSl7dmFyIHI9ZS5tYXJrZXIsbj1yLmxpbmU7aWYoYS50cmFjZUlzKGUsInN5bWJvbHMiKSl7dmFyIG89ZChlKTt0LmF0dHIoImQiLGZ1bmN0aW9uKHQpe3ZhciBuO249InZhcmlvdXMiPT09dC5tc3x8InZhcmlvdXMiPT09ci5zaXplPzM6Zi5pc0J1YmJsZShlKT9vKHQubXMpOihyLnNpemV8fDYpLzIsdC5tcmM9bjt2YXIgaT1wLnN5bWJvbE51bWJlcih0Lm14fHxyLnN5bWJvbCl8fDAsYT1pJTEwMDtyZXR1cm4gdC5vbT1pJTIwMD49MTAwLHAuc3ltYm9sRnVuY3NbYV0obikrKGk+PTIwMD9tOiIiKX0pLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4odC5tbysxfHxyLm9wYWNpdHkrMSktMX0pfXZhciBsPShlLl9pbnB1dHx8e30pLm1hcmtlcnx8e30sYz1wLnRyeUNvbG9yc2NhbGUocixsLCIiKSx1PXAudHJ5Q29sb3JzY2FsZShyLGwsImxpbmUuIik7dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLG8sYTt0LnNvPyhhPW4ub3V0bGllcndpZHRoLG89bi5vdXRsaWVyY29sb3IsZT1yLm91dGxpZXJjb2xvcik6KGE9KHQubWx3KzF8fG4ud2lkdGgrMXx8KHQudHJhY2U/dC50cmFjZS5tYXJrZXIubGluZS53aWR0aDowKSsxKS0xLG89Im1sYyJpbiB0P3QubWxjYz11KHQubWxjKTpBcnJheS5pc0FycmF5KG4uY29sb3IpP3MuZGVmYXVsdExpbmU6bi5jb2xvcixlPSJtYyJpbiB0P3QubWNjPWModC5tYyk6QXJyYXkuaXNBcnJheShyLmNvbG9yKT9zLmRlZmF1bHRMaW5lOnIuY29sb3J8fCJyZ2JhKDAsMCwwLDApIik7dmFyIGw9aS5zZWxlY3QodGhpcyk7dC5vbT9sLmNhbGwocy5zdHJva2UsZSkuc3R5bGUoeyJzdHJva2Utd2lkdGgiOihhfHwxKSsicHgiLGZpbGw6Im5vbmUifSk6KGwuc3R5bGUoInN0cm9rZS13aWR0aCIsYSsicHgiKS5jYWxsKHMuZmlsbCxlKSxhJiZsLmNhbGwocy5zdHJva2UsbykpfSl9fSxwLnRyeUNvbG9yc2NhbGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWMubmVzdGVkUHJvcGVydHkodCxyKyJjb2xvciIpLmdldCgpLGk9Yy5uZXN0ZWRQcm9wZXJ0eSh0LHIrImNvbG9yc2NhbGUiKS5nZXQoKSxhPWMubmVzdGVkUHJvcGVydHkodCxyKyJjYXV0byIpLmdldCgpLHM9Yy5uZXN0ZWRQcm9wZXJ0eSh0LHIrImNtaW4iKSx1PWMubmVzdGVkUHJvcGVydHkodCxyKyJjbWF4IiksaD1zLmdldCgpLGY9dS5nZXQoKTtyZXR1cm4gaSYmQXJyYXkuaXNBcnJheShuKT8oIWEmJm8oaCkmJm8oZil8fChoPTEvMCxmPS0oMS8wKSxuLmZvckVhY2goZnVuY3Rpb24odCl7byh0KSYmKGg+dCYmKGg9K3QpLHQ+ZiYmKGY9K3QpKX0pLGg+ZiYmKGg9MCxmPTEpLHMuc2V0KGgpLHUuc2V0KGYpLGMubmVzdGVkUHJvcGVydHkoZSxyKyJjbWluIikuc2V0KGgpLGMubmVzdGVkUHJvcGVydHkoZSxyKyJjbWF4Iikuc2V0KGYpKSxsLm1ha2VTY2FsZUZ1bmN0aW9uKGksaCxmKSk6Yy5pZGVudGl0eX07dmFyIHk9e3N0YXJ0OjEsZW5kOi0xLG1pZGRsZTowLGJvdHRvbToxLHRvcDotMX0sYj0xLjM7cC50ZXh0UG9pbnRTdHlsZT1mdW5jdGlvbih0LGUpe3QuZWFjaChmdW5jdGlvbih0KXt2YXIgcj1pLnNlbGVjdCh0aGlzKSxuPXQudHh8fGUudGV4dDtpZighbnx8QXJyYXkuaXNBcnJheShuKSlyZXR1cm4gdm9pZCByLnJlbW92ZSgpO3ZhciBhPXQudHB8fGUudGV4dHBvc2l0aW9uLHM9LTEhPT1hLmluZGV4T2YoInRvcCIpPyJ0b3AiOi0xIT09YS5pbmRleE9mKCJib3R0b20iKT8iYm90dG9tIjoibWlkZGxlIixsPS0xIT09YS5pbmRleE9mKCJsZWZ0Iik/ImVuZCI6LTEhPT1hLmluZGV4T2YoInJpZ2h0Iik/InN0YXJ0IjoibWlkZGxlIixjPXQudHN8fGUudGV4dGZvbnQuc2l6ZSxoPXQubXJjP3QubXJjLy44KzE6MDtjPW8oYykmJmM+MD9jOjAsci5jYWxsKHAuZm9udCx0LnRmfHxlLnRleHRmb250LmZhbWlseSxjLHQudGN8fGUudGV4dGZvbnQuY29sb3IpLmF0dHIoInRleHQtYW5jaG9yIixsKS50ZXh0KG4pLmNhbGwodS5jb252ZXJ0VG9Uc3BhbnMpO3ZhciBmPWkuc2VsZWN0KHRoaXMucGFyZW50Tm9kZSksZD1yLnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLGc9KChkWzBdLmxlbmd0aHx8MSktMSkqYisxLHY9eVtsXSpoLG09Ljc1KmMreVtzXSpoKyh5W3NdLTEpKmcqYy8yO2YuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdisiLCIrbSsiKSIpLGc+MSYmZC5hdHRyKHt4OnIuYXR0cigieCIpLHk6ci5hdHRyKCJ5Iil9KX0pfTt2YXIgeD0uNTtwLnNtb290aG9wZW49ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aDwzKXJldHVybiJNIit0LmpvaW4oIkwiKTt2YXIgcixpPSJNIit0WzBdLG89W107Zm9yKHI9MTtyPHQubGVuZ3RoLTE7cisrKW8ucHVzaChuKHRbci0xXSx0W3JdLHRbcisxXSxlKSk7Zm9yKGkrPSJRIitvWzBdWzBdKyIgIit0WzFdLHI9MjtyPHQubGVuZ3RoLTE7cisrKWkrPSJDIitvW3ItMl1bMV0rIiAiK29bci0xXVswXSsiICIrdFtyXTtyZXR1cm4gaSs9IlEiK29bdC5sZW5ndGgtM11bMV0rIiAiK3RbdC5sZW5ndGgtMV19LHAuc21vb3RoY2xvc2VkPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MylyZXR1cm4iTSIrdC5qb2luKCJMIikrIloiO3ZhciByLGk9Ik0iK3RbMF0sbz10Lmxlbmd0aC0xLGE9W24odFtvXSx0WzBdLHRbMV0sZSldO2ZvcihyPTE7bz5yO3IrKylhLnB1c2gobih0W3ItMV0sdFtyXSx0W3IrMV0sZSkpO2ZvcihhLnB1c2gobih0W28tMV0sdFtvXSx0WzBdLGUpKSxyPTE7bz49cjtyKyspaSs9IkMiK2Fbci0xXVsxXSsiICIrYVtyXVswXSsiICIrdFtyXTtyZXR1cm4gaSs9IkMiK2Fbb11bMV0rIiAiK2FbMF1bMF0rIiAiK3RbMF0rIloifTt2YXIgXz17aHY6ZnVuY3Rpb24odCxlKXtyZXR1cm4iSCIraS5yb3VuZChlWzBdLDIpKyJWIitpLnJvdW5kKGVbMV0sMil9LHZoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIlYiK2kucm91bmQoZVsxXSwyKSsiSCIraS5yb3VuZChlWzBdLDIpfSxodmg6ZnVuY3Rpb24odCxlKXtyZXR1cm4iSCIraS5yb3VuZCgodFswXStlWzBdKS8yLDIpKyJWIitpLnJvdW5kKGVbMV0sMikrIkgiK2kucm91bmQoZVswXSwyKX0sdmh2OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIlYiK2kucm91bmQoKHRbMV0rZVsxXSkvMiwyKSsiSCIraS5yb3VuZChlWzBdLDIpKyJWIitpLnJvdW5kKGVbMV0sMil9fSx3PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIkwiK2kucm91bmQoZVswXSwyKSsiLCIraS5yb3VuZChlWzFdLDIpfTtwLnN0ZXBzPWZ1bmN0aW9uKHQpe3ZhciBlPV9bdF18fHc7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0iTSIraS5yb3VuZCh0WzBdWzBdLDIpKyIsIitpLnJvdW5kKHRbMF1bMV0sMiksbj0xO248dC5sZW5ndGg7bisrKXIrPWUodFtuLTFdLHRbbl0pO3JldHVybiByfX0scC5tYWtlVGVzdGVyPWZ1bmN0aW9uKHQpe3ZhciBlPWkuc2VsZWN0KCJib2R5Iikuc2VsZWN0QWxsKCIjanMtcGxvdGx5LXRlc3RlciIpLmRhdGEoWzBdKTtlLmVudGVyKCkuYXBwZW5kKCJzdmciKS5hdHRyKCJpZCIsImpzLXBsb3RseS10ZXN0ZXIiKS5hdHRyKGguc3ZnQXR0cnMpLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6Ii0xMDAwMHB4Iix0b3A6Ii0xMDAwMHB4Iix3aWR0aDoiOTAwMHB4IixoZWlnaHQ6IjkwMDBweCJ9KTt2YXIgcj1lLnNlbGVjdEFsbCgiLmpzLXJlZmVyZW5jZS1wb2ludCIpLmRhdGEoWzBdKTtyLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgianMtcmVmZXJlbmNlLXBvaW50IiwhMCkuYXR0cigiZCIsIk0wLDBIMVYxSDBaIikuc3R5bGUoeyJzdHJva2Utd2lkdGgiOjAsZmlsbDoiYmxhY2sifSksZS5ub2RlKCkuX2NhY2hlfHwoZS5ub2RlKCkuX2NhY2hlPXt9KSx0Ll90ZXN0ZXI9ZSx0Ll90ZXN0cmVmPXJ9O3ZhciBBPVtdLGs9MWU0O3AuYkJveD1mdW5jdGlvbih0KXt2YXIgZT10LmF0dHJpYnV0ZXNbImRhdGEtYmIiXTtpZihlJiZlLnZhbHVlKXJldHVybiBjLmV4dGVuZEZsYXQoe30sQVtlLnZhbHVlXSk7dmFyIHI9aS5zZWxlY3QoIiNqcy1wbG90bHktdGVzdGVyIiksbj1yLm5vZGUoKSxvPXQuY2xvbmVOb2RlKCEwKTtuLmFwcGVuZENoaWxkKG8pLGkuc2VsZWN0KG8pLmF0dHIoe3g6MCx5OjAsdHJhbnNmb3JtOiIifSk7dmFyIGE9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXIuc2VsZWN0KCIuanMtcmVmZXJlbmNlLXBvaW50Iikubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO24ucmVtb3ZlQ2hpbGQobyk7dmFyIGw9e2hlaWdodDphLmhlaWdodCx3aWR0aDphLndpZHRoLGxlZnQ6YS5sZWZ0LXMubGVmdCx0b3A6YS50b3Atcy50b3AscmlnaHQ6YS5yaWdodC1zLmxlZnQsYm90dG9tOmEuYm90dG9tLXMudG9wfTtyZXR1cm4gQS5sZW5ndGg+PWsmJihpLnNlbGVjdEFsbCgiW2RhdGEtYmJdIikuYXR0cigiZGF0YS1iYiIsbnVsbCksQT1bXSksdC5zZXRBdHRyaWJ1dGUoImRhdGEtYmIiLEEubGVuZ3RoKSxBLnB1c2gobCksYy5leHRlbmRGbGF0KHt9LGwpfSxwLnNldENsaXBVcmw9ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4gdm9pZCB0LmF0dHIoImNsaXAtcGF0aCIsbnVsbCk7dmFyIHI9IiMiK2Usbj1pLnNlbGVjdCgiYmFzZSIpO24uc2l6ZSgpJiZuLmF0dHIoImhyZWYiKSYmKHI9d2luZG93LmxvY2F0aW9uLmhyZWYrciksdC5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoIityKyIpIil9fSx7Ii4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjozNjIsIi4uLy4uL2xpYiI6MzczLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjM4NCwiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNywiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvbWFrZV9idWJibGVfc2l6ZV9mdW5jIjo1NDAsIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIjo1NDYsIi4uL2NvbG9yIjozMDEsIi4uL2NvbG9yc2NhbGUiOjMxNCwiLi9zeW1ib2xfZGVmcyI6MzIwLGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzMjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKTtlLmV4cG9ydHM9e2NpcmNsZTp7bjowLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsMEEiK2UrIiwiK2UrIiAwIDEsMSAwLC0iK2UrIkEiK2UrIiwiK2UrIiAwIDAsMSAiK2UrIiwwWiJ9fSxzcXVhcmU6e246MSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiSC0iK2UrIlYtIitlKyJIIitlKyJaIn19LGRpYW1vbmQ6e246MixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4zKnQsMik7cmV0dXJuIk0iK2UrIiwwTDAsIitlKyJMLSIrZSsiLDBMMCwtIitlKyJaIn19LGNyb3NzOntuOjMsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC40KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3JldHVybiJNIityKyIsIitlKyJIIitlKyJWIityKyJILSIrZSsiViIrZSsiSC0iK3IrIlYtIitlKyJILSIrZSsiVi0iK3IrIkgiK2UrIlYtIitlKyJIIityKyJaIn19LHg6e246NCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjgqdC9NYXRoLnNxcnQoMiksMikscj0ibCIrZSsiLCIrZSxpPSJsIitlKyIsLSIrZSxvPSJsLSIrZSsiLC0iK2UsYT0ibC0iK2UrIiwiK2U7cmV0dXJuIk0wLCIrZStyK2krbytpK28rYStvK2ErcithK3IrIloifX0sInRyaWFuZ2xlLXVwIjp7bjo1LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5zcXJ0KDMpLDIpLHI9bi5yb3VuZCh0LzIsMiksaT1uLnJvdW5kKHQsMik7cmV0dXJuIk0tIitlKyIsIityKyJIIitlKyJMMCwtIitpKyJaIn19LCJ0cmlhbmdsZS1kb3duIjp7bjo2LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5zcXJ0KDMpLDIpLHI9bi5yb3VuZCh0LzIsMiksaT1uLnJvdW5kKHQsMik7cmV0dXJuIk0tIitlKyIsLSIrcisiSCIrZSsiTDAsIitpKyJaIn19LCJ0cmlhbmdsZS1sZWZ0Ijp7bjo3LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5zcXJ0KDMpLDIpLHI9bi5yb3VuZCh0LzIsMiksaT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK3IrIiwtIitlKyJWIitlKyJMLSIraSsiLDBaIn19LCJ0cmlhbmdsZS1yaWdodCI6e246OCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMip0L01hdGguc3FydCgzKSwyKSxyPW4ucm91bmQodC8yLDIpLGk9bi5yb3VuZCh0LDIpO3JldHVybiJNLSIrcisiLC0iK2UrIlYiK2UrIkwiK2krIiwwWiJ9fSwidHJpYW5nbGUtbmUiOntuOjksZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC42KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3JldHVybiJNLSIrcisiLC0iK2UrIkgiK2UrIlYiK3IrIloifX0sInRyaWFuZ2xlLXNlIjp7bjoxMCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjYqdCwyKSxyPW4ucm91bmQoMS4yKnQsMik7cmV0dXJuIk0iK2UrIiwtIityKyJWIitlKyJILSIrcisiWiJ9fSwidHJpYW5nbGUtc3ciOntuOjExLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguNip0LDIpLHI9bi5yb3VuZCgxLjIqdCwyKTtyZXR1cm4iTSIrcisiLCIrZSsiSC0iK2UrIlYtIityKyJaIn19LCJ0cmlhbmdsZS1udyI6e246MTIsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC42KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3JldHVybiJNLSIrZSsiLCIrcisiVi0iK2UrIkgiK3IrIloifX0scGVudGFnb246e246MTMsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC45NTEqdCwyKSxyPW4ucm91bmQoLjU4OCp0LDIpLGk9bi5yb3VuZCgtdCwyKSxvPW4ucm91bmQodCotLjMwOSwyKSxhPW4ucm91bmQoLjgwOSp0LDIpO3JldHVybiJNIitlKyIsIitvKyJMIityKyIsIithKyJILSIrcisiTC0iK2UrIiwiK28rIkwwLCIraSsiWiJ9fSxoZXhhZ29uOntuOjE0LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpLHI9bi5yb3VuZCh0LzIsMiksaT1uLnJvdW5kKHQqTWF0aC5zcXJ0KDMpLzIsMik7cmV0dXJuIk0iK2krIiwtIityKyJWIityKyJMMCwiK2UrIkwtIitpKyIsIityKyJWLSIrcisiTDAsLSIrZSsiWiJ9fSxoZXhhZ29uMjp7bjoxNSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKSxyPW4ucm91bmQodC8yLDIpLGk9bi5yb3VuZCh0Kk1hdGguc3FydCgzKS8yLDIpO3JldHVybiJNLSIrcisiLCIraSsiSCIrcisiTCIrZSsiLDBMIityKyIsLSIraSsiSC0iK3IrIkwtIitlKyIsMFoifX0sb2N0YWdvbjp7bjoxNixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjkyNCp0LDIpLHI9bi5yb3VuZCguMzgzKnQsMik7cmV0dXJuIk0tIityKyIsLSIrZSsiSCIrcisiTCIrZSsiLC0iK3IrIlYiK3IrIkwiK3IrIiwiK2UrIkgtIityKyJMLSIrZSsiLCIrcisiVi0iK3IrIloifX0sc3Rhcjp7bjoxNyxmOmZ1bmN0aW9uKHQpe3ZhciBlPTEuNCp0LHI9bi5yb3VuZCguMjI1KmUsMiksaT1uLnJvdW5kKC45NTEqZSwyKSxvPW4ucm91bmQoLjM2MyplLDIpLGE9bi5yb3VuZCguNTg4KmUsMikscz1uLnJvdW5kKC1lLDIpLGw9bi5yb3VuZChlKi0uMzA5LDIpLGM9bi5yb3VuZCguMTE4KmUsMiksdT1uLnJvdW5kKC44MDkqZSwyKSxoPW4ucm91bmQoLjM4MiplLDIpO3JldHVybiJNIityKyIsIitsKyJIIitpKyJMIitvKyIsIitjKyJMIithKyIsIit1KyJMMCwiK2grIkwtIithKyIsIit1KyJMLSIrbysiLCIrYysiTC0iK2krIiwiK2wrIkgtIityKyJMMCwiK3MrIloifX0saGV4YWdyYW06e246MTgsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC42Nip0LDIpLHI9bi5yb3VuZCguMzgqdCwyKSxpPW4ucm91bmQoLjc2KnQsMik7cmV0dXJuIk0tIitpKyIsMGwtIityKyIsLSIrZSsiaCIraSsibCIrcisiLC0iK2UrImwiK3IrIiwiK2UrImgiK2krImwtIityKyIsIitlKyJsIityKyIsIitlKyJoLSIraSsibC0iK3IrIiwiK2UrImwtIityKyIsLSIrZSsiaC0iK2krIloifX0sInN0YXItdHJpYW5nbGUtdXAiOntuOjE5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0Kk1hdGguc3FydCgzKSouOCwyKSxyPW4ucm91bmQoLjgqdCwyKSxpPW4ucm91bmQoMS42KnQsMiksbz1uLnJvdW5kKDQqdCwyKSxhPSJBICIrbysiLCIrbysiIDAgMCAxICI7cmV0dXJuIk0tIitlKyIsIityK2ErZSsiLCIrcithKyIwLC0iK2krYSsiLSIrZSsiLCIrcisiWiJ9fSwic3Rhci10cmlhbmdsZS1kb3duIjp7bjoyMCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCpNYXRoLnNxcnQoMykqLjgsMikscj1uLnJvdW5kKC44KnQsMiksaT1uLnJvdW5kKDEuNip0LDIpLG89bi5yb3VuZCg0KnQsMiksYT0iQSAiK28rIiwiK28rIiAwIDAgMSAiO3JldHVybiJNIitlKyIsLSIrcithKyItIitlKyIsLSIrcithKyIwLCIraSthK2UrIiwtIityKyJaIn19LCJzdGFyLXNxdWFyZSI6e246MjEsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuMSp0LDIpLHI9bi5yb3VuZCgyKnQsMiksaT0iQSAiK3IrIiwiK3IrIiAwIDAgMSAiO3JldHVybiJNLSIrZSsiLC0iK2UraSsiLSIrZSsiLCIrZStpK2UrIiwiK2UraStlKyIsLSIrZStpKyItIitlKyIsLSIrZSsiWiJ9fSwic3Rhci1kaWFtb25kIjp7bjoyMixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS40KnQsMikscj1uLnJvdW5kKDEuOSp0LDIpLGk9IkEgIityKyIsIityKyIgMCAwIDEgIjtyZXR1cm4iTS0iK2UrIiwwIitpKyIwLCIrZStpK2UrIiwwIitpKyIwLC0iK2UraSsiLSIrZSsiLDBaIn19LCJkaWFtb25kLXRhbGwiOntuOjIzLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguNyp0LDIpLHI9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTTAsIityKyJMIitlKyIsMEwwLC0iK3IrIkwtIitlKyIsMFoifX0sImRpYW1vbmQtd2lkZSI6e246MjQsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuNCp0LDIpLHI9bi5yb3VuZCguNyp0LDIpO3JldHVybiJNMCwiK3IrIkwiK2UrIiwwTDAsLSIrcisiTC0iK2UrIiwwWiJ9fSxob3VyZ2xhc3M6e246MjUsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK2UrIkgtIitlKyJMIitlKyIsLSIrZSsiSC0iK2UrIloifSxub0RvdDohMH0sYm93dGllOntuOjI2LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitlKyJWLSIrZSsiTC0iK2UrIiwiK2UrIlYtIitlKyJaIn0sbm9Eb3Q6ITB9LCJjaXJjbGUtY3Jvc3MiOntuOjI3LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNMCwiK2UrIlYtIitlKyJNIitlKyIsMEgtIitlKyJNIitlKyIsMEEiK2UrIiwiK2UrIiAwIDEsMSAwLC0iK2UrIkEiK2UrIiwiK2UrIiAwIDAsMSAiK2UrIiwwWiJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwiY2lyY2xlLXgiOntuOjI4LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpLHI9bi5yb3VuZCh0L01hdGguc3FydCgyKSwyKTtyZXR1cm4iTSIrcisiLCIrcisiTC0iK3IrIiwtIityKyJNIityKyIsLSIrcisiTC0iK3IrIiwiK3IrIk0iK2UrIiwwQSIrZSsiLCIrZSsiIDAgMSwxIDAsLSIrZSsiQSIrZSsiLCIrZSsiIDAgMCwxICIrZSsiLDBaIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJzcXVhcmUtY3Jvc3MiOntuOjI5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNMCwiK2UrIlYtIitlKyJNIitlKyIsMEgtIitlKyJNIitlKyIsIitlKyJILSIrZSsiVi0iK2UrIkgiK2UrIloifSxuZWVkTGluZTohMCxub0RvdDohMH0sInNxdWFyZS14Ijp7bjozMCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiTC0iK2UrIiwtIitlKyJNIitlKyIsLSIrZSsiTC0iK2UrIiwiK2UrIk0iK2UrIiwiK2UrIkgtIitlKyJWLSIrZSsiSCIrZSsiWiJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwiZGlhbW9uZC1jcm9zcyI6e246MzEsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuMyp0LDIpO3JldHVybiJNIitlKyIsMEwwLCIrZSsiTC0iK2UrIiwwTDAsLSIrZSsiWk0wLC0iK2UrIlYiK2UrIk0tIitlKyIsMEgiK2V9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwiZGlhbW9uZC14Ijp7bjozMixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4zKnQsMikscj1uLnJvdW5kKC42NSp0LDIpO3JldHVybiJNIitlKyIsMEwwLCIrZSsiTC0iK2UrIiwwTDAsLSIrZSsiWk0tIityKyIsLSIrcisiTCIrcisiLCIrcisiTS0iK3IrIiwiK3IrIkwiK3IrIiwtIityfSxuZWVkTGluZTohMCxub0RvdDohMH0sImNyb3NzLXRoaW4iOntuOjMzLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTTAsIitlKyJWLSIrZSsiTSIrZSsiLDBILSIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJ4LXRoaW4iOntuOjM0LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitlKyJMLSIrZSsiLC0iK2UrIk0iK2UrIiwtIitlKyJMLSIrZSsiLCIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LGFzdGVyaXNrOntuOjM1LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjIqdCwyKSxyPW4ucm91bmQoLjg1KnQsMik7cmV0dXJuIk0wLCIrZSsiVi0iK2UrIk0iK2UrIiwwSC0iK2UrIk0iK3IrIiwiK3IrIkwtIityKyIsLSIrcisiTSIrcisiLC0iK3IrIkwtIityKyIsIityfSxuZWVkTGluZTohMCxub0RvdDohMH0saGFzaDp7bjozNixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodC8yLDIpLHI9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIityKyJWLSIrcisibS0iK3IrIiwwViIrcisiTSIrcisiLCIrZSsiSC0iK3IrIm0wLC0iK3IrIkgiK3J9LG5lZWRMaW5lOiEwfSwieS11cCI6e246MzcsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuMip0LDIpLHI9bi5yb3VuZCgxLjYqdCwyKSxpPW4ucm91bmQoLjgqdCwyKTtyZXR1cm4iTS0iK2UrIiwiK2krIkwwLDBNIitlKyIsIitpKyJMMCwwTTAsLSIrcisiTDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwieS1kb3duIjp7bjozOCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4yKnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGk9bi5yb3VuZCguOCp0LDIpO3JldHVybiJNLSIrZSsiLC0iK2krIkwwLDBNIitlKyIsLSIraSsiTDAsME0wLCIrcisiTDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwieS1sZWZ0Ijp7bjozOSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4yKnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGk9bi5yb3VuZCguOCp0LDIpO3JldHVybiJNIitpKyIsIitlKyJMMCwwTSIraSsiLC0iK2UrIkwwLDBNLSIrcisiLDBMMCwwIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJ5LXJpZ2h0Ijp7bjo0MCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4yKnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGk9bi5yb3VuZCguOCp0LDIpO3JldHVybiJNLSIraSsiLCIrZSsiTDAsME0tIitpKyIsLSIrZSsiTDAsME0iK3IrIiwwTDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwibGluZS1ldyI6e246NDEsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuNCp0LDIpO3JldHVybiJNIitlKyIsMEgtIitlfSxuZWVkTGluZTohMCxub0RvdDohMH0sImxpbmUtbnMiOntuOjQyLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTTAsIitlKyJWLSIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJsaW5lLW5lIjp7bjo0MyxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLC0iK2UrIkwtIitlKyIsIitlfSxuZWVkTGluZTohMCxub0RvdDohMH0sImxpbmUtbnciOntuOjQ0LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitlKyJMLSIrZSsiLC0iK2V9LG5lZWRMaW5lOiEwLG5vRG90OiEwfX19LHtkMzo3MH1dLDMyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4ifSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwZXJjZW50IiwiY29uc3RhbnQiLCJzcXJ0IiwiZGF0YSJdfSxzeW1tZXRyaWM6e3ZhbFR5cGU6ImJvb2xlYW4ifSxhcnJheTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGFycmF5bWludXM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx2YWx1ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwfSx2YWx1ZW1pbnVzOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTB9LHRyYWNlcmVmOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjB9LHRyYWNlcmVmbWludXM6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MH0sY29weV95c3R5bGU6e3ZhbFR5cGU6ImJvb2xlYW4ifSxjb3B5X3pzdHlsZTp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciJ9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowfSxfZGVwcmVjYXRlZDp7b3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIn19fX0se31dLDMyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4pe3ZhciBvPWVbImVycm9yXyIrbl18fHt9LGw9by52aXNpYmxlJiYtMSE9PVsibGluZWFyIiwibG9nIl0uaW5kZXhPZihyLnR5cGUpLGM9W107aWYobCl7Zm9yKHZhciB1PXMobyksaD0wO2g8dC5sZW5ndGg7aCsrKXt2YXIgZj10W2hdLGQ9ZltuXTtpZihpKHIuYzJsKGQpKSl7dmFyIHA9dShkLGgpO2lmKGkocFswXSkmJmkocFsxXSkpe3ZhciBnPWZbbisicyJdPWQtcFswXSx2PWZbbisiaCJdPWQrcFsxXTtjLnB1c2goZyx2KX19fWEuZXhwYW5kKHIsYyx7cGFkZGVkOiEwfSl9fXZhciBpPXQoImZhc3QtaXNudW1lcmljIiksbz10KCIuLi8uLi9wbG90cy9wbG90cyIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxzPXQoIi4vY29tcHV0ZV9lcnJvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jYWxjZGF0YSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl0scz1pWzBdLnRyYWNlO2lmKG8udHJhY2VJcyhzLCJlcnJvckJhcnNPSyIpKXt2YXIgbD1hLmdldEZyb21JZCh0LHMueGF4aXMpLGM9YS5nZXRGcm9tSWQodCxzLnlheGlzKTtuKGkscyxsLCJ4IiksbihpLHMsYywieSIpfX19fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTMsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vY29tcHV0ZV9lcnJvciI6MzIzLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzMjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiJwZXJjZW50Ij09PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHQqZS8xMDApfToiY29uc3RhbnQiPT09dD9mdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyhlKX06InNxcnQiPT09dD9mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGguYWJzKHQpKX06dm9pZCAwfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LnR5cGUscj10LnN5bW1ldHJpYztpZigiZGF0YSI9PT1lKXt2YXIgaT10LmFycmF5LG89dC5hcnJheW1pbnVzO3JldHVybiByfHx2b2lkIDA9PT1vP2Z1bmN0aW9uKHQsZSl7dmFyIHI9K2lbZV07cmV0dXJuW3Iscl19OmZ1bmN0aW9uKHQsZSl7cmV0dXJuWytvW2VdLCtpW2VdXX19dmFyIGE9bihlLHQudmFsdWUpLHM9bihlLHQudmFsdWVtaW51cyk7cmV0dXJuIHJ8fHZvaWQgMD09PXQudmFsdWVtaW51cz9mdW5jdGlvbih0KXt2YXIgZT1hKHQpO3JldHVybltlLGVdfTpmdW5jdGlvbih0KXtyZXR1cm5bcyh0KSxhKHQpXX19fSx7fV0sMzI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89dCgiLi4vLi4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyl7ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBvLmNvZXJjZShoLHUsYSx0LGUpfXZhciBjPSJlcnJvcl8iK3MuYXhpcyx1PWVbY109e30saD10W2NdfHx7fSxmPXZvaWQgMCE9PWguYXJyYXl8fHZvaWQgMCE9PWgudmFsdWV8fCJzcXJ0Ij09PWgudHlwZSxkPWwoInZpc2libGUiLGYpO2lmKGQhPT0hMSl7dmFyIHA9bCgidHlwZSIsImFycmF5ImluIGg/ImRhdGEiOiJwZXJjZW50IiksZz0hMDtpZigic3FydCIhPT1wJiYoZz1sKCJzeW1tZXRyaWMiLCEoKCJkYXRhIj09PXA/ImFycmF5bWludXMiOiJ2YWx1ZW1pbnVzIilpbiBoKSkpLCJkYXRhIj09PXApe3ZhciB2PWwoImFycmF5Iik7aWYodnx8KHUuYXJyYXk9W10pLGwoInRyYWNlcmVmIiksIWcpe3ZhciBtPWwoImFycmF5bWludXMiKTttfHwodS5hcnJheW1pbnVzPVtdKSxsKCJ0cmFjZXJlZm1pbnVzIil9fWVsc2UicGVyY2VudCIhPT1wJiYiY29uc3RhbnQiIT09cHx8KGwoInZhbHVlIiksZ3x8bCgidmFsdWVtaW51cyIpKTt2YXIgeT0iY29weV8iK3MuaW5oZXJpdCsic3R5bGUiO2lmKHMuaW5oZXJpdCl7dmFyIGI9ZVsiZXJyb3JfIitzLmluaGVyaXRdOyhifHx7fSkudmlzaWJsZSYmbCh5LCEoaC5jb2xvcnx8bihoLnRoaWNrbmVzcyl8fG4oaC53aWR0aCkpKX1zLmluaGVyaXQmJnVbeV18fChsKCJjb2xvciIsciksbCgidGhpY2tuZXNzIiksbCgid2lkdGgiLGkudHJhY2VJcyhlLCJnbDNkIik/MDo0KSl9fX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNywiLi9hdHRyaWJ1dGVzIjozMjEsImZhc3QtaXNudW1lcmljIjo3NH1dLDMyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lLmV4cG9ydHM9e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uY2FsYz10KCIuL2NhbGMiKSxuLmNhbGNGcm9tVHJhY2U9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC54fHxbXSxpPXQueSxvPXIubGVuZ3RofHxpLmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPTA7bz5zO3MrKylhW3NdPXt4OnJbc10seTppW3NdfTtyZXR1cm4gYVswXS50cmFjZT10LG4uY2FsYyh7Y2FsY2RhdGE6W2FdLF9mdWxsTGF5b3V0OmV9KSxhfSxuLnBsb3Q9dCgiLi9wbG90Iiksbi5zdHlsZT10KCIuL3N0eWxlIiksbi5ob3ZlckluZm89ZnVuY3Rpb24odCxlLHIpe2UuZXJyb3JfeS52aXNpYmxlJiYoci55ZXJyPXQueWgtdC55LGUuZXJyb3JfeS5zeW1tZXRyaWN8fChyLnllcnJuZWc9dC55LXQueXMpKSxlLmVycm9yX3gudmlzaWJsZSYmKHIueGVycj10LnhoLXQueCxlLmVycm9yX3guc3ltbWV0cmljfHwoci54ZXJybmVnPXQueC10LnhzKSl9fSx7Ii4vYXR0cmlidXRlcyI6MzIxLCIuL2NhbGMiOjMyMiwiLi9kZWZhdWx0cyI6MzI0LCIuL3Bsb3QiOjMyNiwiLi9zdHlsZSI6MzI3fV0sMzI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuPXt4OmUuYzJwKHQueCkseTpyLmMycCh0LnkpfTtyZXR1cm4gdm9pZCAwIT09dC55aCYmKG4ueWg9ci5jMnAodC55aCksbi55cz1yLmMycCh0LnlzKSxvKG4ueXMpfHwobi5ub1lTPSEwLG4ueXM9ci5jMnAodC55cywhMCkpKSx2b2lkIDAhPT10LnhoJiYobi54aD1lLmMycCh0LnhoKSxuLnhzPWUuYzJwKHQueHMpLG8obi54cyl8fChuLm5vWFM9ITAsbi54cz1lLmMycCh0LnhzLCEwKSkpLG59dmFyIGk9dCgiZDMiKSxvPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9saWIiKSxzPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS54KCksbD1lLnkoKTt0LmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxjPWUuZXJyb3JfeCx1PWUuZXJyb3JfeSxoPXMuaGFzTWFya2VycyhlKSYmZS5tYXJrZXIubWF4ZGlzcGxheWVkPjA7aWYodS52aXNpYmxlfHxjLnZpc2libGUpe3ZhciBmPWkuc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5lcnJvcmJhciIpLmRhdGEoYS5pZGVudGl0eSk7Zi5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImVycm9yYmFyIiwhMCksZi5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWkuc2VsZWN0KHRoaXMpLGE9bih0LHIsbCk7aWYoIWh8fHQudmlzKXt2YXIgcztpZih1LnZpc2libGUmJm8oYS54KSYmbyhhLnloKSYmbyhhLnlzKSl7dmFyIGY9dS53aWR0aDtzPSJNIisoYS54LWYpKyIsIithLnloKyJoIisyKmYrIm0tIitmKyIsMFYiK2EueXMsYS5ub1lTfHwocys9Im0tIitmKyIsMGgiKzIqZiksZS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJ5ZXJyb3IiLCEwKS5hdHRyKCJkIixzKX1pZihjLnZpc2libGUmJm8oYS55KSYmbyhhLnhoKSYmbyhhLnhzKSl7dmFyIGQ9KGMuY29weV95c3R5bGU/dTpjKS53aWR0aDtzPSJNIithLnhoKyIsIisoYS55LWQpKyJ2IisyKmQrIm0wLC0iK2QrIkgiK2EueHMsYS5ub1hTfHwocys9Im0wLC0iK2QrInYiKzIqZCksZS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJ4ZXJyb3IiLCEwKS5hdHRyKCJkIixzKX19fSl9fSl9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyI6NTQ2LGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzMjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoIi4uL2NvbG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3QuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9ZS5lcnJvcl95fHx7fSxvPWUuZXJyb3JfeHx8e30sYT1uLnNlbGVjdCh0aGlzKTthLnNlbGVjdEFsbCgicGF0aC55ZXJyb3IiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixyLnRoaWNrbmVzcysicHgiKS5jYWxsKGkuc3Ryb2tlLHIuY29sb3IpLG8uY29weV95c3R5bGUmJihvPXIpLGEuc2VsZWN0QWxsKCJwYXRoLnhlcnJvciIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLG8udGhpY2tuZXNzKyJweCIpLmNhbGwoaS5zdHJva2Usby5jb2xvcil9KX19LHsiLi4vY29sb3IiOjMwMSxkMzo3MH1dLDMyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmlzUmlnaHRBbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuInJpZ2h0Ij09PXQueGFuY2hvcnx8ImF1dG8iPT09dC54YW5jaG9yJiZ0Lng+PTIvM30sci5pc0NlbnRlckFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4iY2VudGVyIj09PXQueGFuY2hvcnx8ImF1dG8iPT09dC54YW5jaG9yJiZ0Lng+MS8zJiZ0Lng8Mi8zfSxyLmlzQm90dG9tQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJib3R0b20iPT09dC55YW5jaG9yfHwiYXV0byI9PT10LnlhbmNob3ImJnQueTw9MS8zfSxyLmlzTWlkZGxlQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJtaWRkbGUiPT09dC55YW5jaG9yfHwiYXV0byI9PT10LnlhbmNob3ImJnQueT4xLzMmJnQueTwyLzN9fSx7fV0sMzI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGk9dCgiLi4vY29sb3IvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDppLmRlZmF1bHRMaW5lfSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjB9LGZvbnQ6byh7fSxuLHt9KSx0cmFjZW9yZGVyOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJyZXZlcnNlZCIsImdyb3VwZWQiXSxleHRyYXM6WyJub3JtYWwiXX0sdHJhY2Vncm91cGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwfSx4Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMixtYXg6MyxkZmx0OjEuMDJ9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJsZWZ0In0seTp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZGZsdDoxfSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIl0sZGZsdDoiYXV0byJ9fX0seyIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NDA3LCIuLi9jb2xvci9hdHRyaWJ1dGVzIjozMDB9XSwzMzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzY3JvbGxCYXJXaWR0aDo0LHNjcm9sbEJhckhlaWdodDoyMCxzY3JvbGxCYXJDb2xvcjoiIzgwOEJBNCIsc2Nyb2xsQmFyTWFyZ2luOjR9fSx7fV0sMzMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpLGE9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIG4uY29lcmNlKGwsYyxvLHQsZSl9Zm9yKHZhciBsPXQubGVnZW5kfHx7fSxjPWUubGVnZW5kPXt9LHU9MCxoPSJub3JtYWwiLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIGQ9cltmXTthLmxlZ2VuZEdldHNUcmFjZShkKSYmKHUrKyxpLnRyYWNlSXMoZCwicGllIikmJnUrKyksKGkudHJhY2VJcyhkLCJiYXIiKSYmInN0YWNrIj09PWUuYmFybW9kZXx8LTEhPT1bInRvbmV4dHgiLCJ0b25leHR5Il0uaW5kZXhPZihkLmZpbGwpKSYmKGg9YS5pc0dyb3VwZWQoe3RyYWNlb3JkZXI6aH0pPyJncm91cGVkK3JldmVyc2VkIjoicmV2ZXJzZWQiKSx2b2lkIDAhPT1kLmxlZ2VuZGdyb3VwJiYiIiE9PWQubGVnZW5kZ3JvdXAmJihoPWEuaXNSZXZlcnNlZCh7dHJhY2VvcmRlcjpofSk/InJldmVyc2VkK2dyb3VwZWQiOiJncm91cGVkIil9dmFyIHA9bi5jb2VyY2UodCxlLGkubGF5b3V0QXR0cmlidXRlcywic2hvd2xlZ2VuZCIsdT4xKTtwIT09ITEmJihzKCJiZ2NvbG9yIixlLnBhcGVyX2JnY29sb3IpLHMoImJvcmRlcmNvbG9yIikscygiYm9yZGVyd2lkdGgiKSxuLmNvZXJjZUZvbnQocywiZm9udCIsZS5mb250KSxzKCJ0cmFjZW9yZGVyIixoKSxhLmlzR3JvdXBlZChlLmxlZ2VuZCkmJnMoInRyYWNlZ3JvdXBnYXAiKSxzKCJ4IikscygieGFuY2hvciIpLHMoInkiKSxzKCJ5YW5jaG9yIiksbi5ub25lT3JBbGwobCxjLFsieCIsInkiXSkpfX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNywiLi9hdHRyaWJ1dGVzIjozMjksIi4vaGVscGVycyI6MzM0fV0sMzMyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixzKXtmdW5jdGlvbiBjKHQpe2EudXRpbC5jb252ZXJ0VG9Uc3BhbnModCxmdW5jdGlvbigpe2UuZmlyc3RSZW5kZXImJmkoZSxzKX0pLHQuc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuYXR0cih7eDp0LmF0dHIoIngiKX0pfXZhciBoPWUuX2Z1bGxMYXlvdXQsZj1yWzBdLnRyYWNlLGQ9bC50cmFjZUlzKGYsInBpZSIpLHA9Zi5pbmRleCxnPWQ/clswXS5sYWJlbDpmLm5hbWUsdj1vLnNlbGVjdCh0KS5zZWxlY3RBbGwoInRleHQubGVnZW5kdGV4dCIpLmRhdGEoWzBdKTt2LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZCgibGVnZW5kdGV4dCIsITApLHYuYXR0cih7eDo0MCx5OjAsImRhdGEtdW5mb3JtYXR0ZWQiOmd9KS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLmNsYXNzZWQoInVzZXItc2VsZWN0LW5vbmUiLCEwKS5jYWxsKHUuZm9udCxoLmxlZ2VuZC5mb250KS50ZXh0KGcpLGUuX2NvbnRleHQuZWRpdGFibGUmJiFkP3YuY2FsbChhLnV0aWwubWFrZUVkaXRhYmxlKS5jYWxsKGMpLm9uKCJlZGl0IixmdW5jdGlvbih0KXt0aGlzLmF0dHIoeyJkYXRhLXVuZm9ybWF0dGVkIjp0fSksdGhpcy50ZXh0KHQpLmNhbGwoYyksdGhpcy50ZXh0KCl8fCh0PSIgICAgIiksYS5yZXN0eWxlKGUsIm5hbWUiLHQscCl9KTp2LmNhbGwoYyl9ZnVuY3Rpb24gaSh0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQsbj1yLl9zaXplLGk9ci5sZWdlbmQsYT1pLmJvcmRlcndpZHRoO2kud2lkdGg9MCxpLmhlaWdodD0wLGUuZWFjaChmdW5jdGlvbih0KXt2YXIgZSxyLG49dFswXS50cmFjZSxzPW8uc2VsZWN0KHRoaXMpLGw9cy5zZWxlY3RBbGwoIi5sZWdlbmR0b2dnbGUiKSxjPXMuc2VsZWN0QWxsKCIubGVnZW5kdGV4dCIpLGg9cy5zZWxlY3RBbGwoIi5sZWdlbmR0ZXh0PnRzcGFuIiksZj0xLjMqaS5mb250LnNpemUsZD1oWzBdLmxlbmd0aHx8MSxwPWMubm9kZSgpJiZ1LmJCb3goYy5ub2RlKCkpLndpZHRoLGc9cy5zZWxlY3QoImdbY2xhc3MqPW1hdGgtZ3JvdXBdIik7aWYoIW4uc2hvd2xlZ2VuZClyZXR1cm4gdm9pZCBzLnJlbW92ZSgpO2lmKGcubm9kZSgpKXt2YXIgdj11LmJCb3goZy5ub2RlKCkpO2Y9di5oZWlnaHQscD12LndpZHRoLGcuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitmLzQrIikiKX1lbHNlIGU9ZiooLjMrKDEtZCkvMiksYy5hdHRyKCJ5IixlKSxoLmF0dHIoInkiLGUpO3I9TWF0aC5tYXgoZipkLDE2KSszLHMuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYSsiLCIrKDUrYStpLmhlaWdodCtyLzIpKyIpIiksbC5hdHRyKHt4OjAseTotci8yLGhlaWdodDpyfSksaS5oZWlnaHQrPXIsaS53aWR0aD1NYXRoLm1heChpLndpZHRoLHB8fDApfSksaS53aWR0aCs9NDUrMiphLGkuaGVpZ2h0Kz0xMCsyKmEsZy5pc0dyb3VwZWQoaSkmJihpLmhlaWdodCs9KGkuX2xncm91cHNMZW5ndGgtMSkqaS50cmFjZWdyb3VwZ2FwKSxlLnNlbGVjdEFsbCgiLmxlZ2VuZHRvZ2dsZSIpLmF0dHIoIndpZHRoIiwodC5fY29udGV4dC5lZGl0YWJsZT8wOmkud2lkdGgpKzQwKTt2YXIgcz1uLmwrbi53KmkueCxjPW4udCtuLmgqKDEtaS55KSxoPSJsZWZ0Ijt2LmlzUmlnaHRBbmNob3IoaSkmJihzLT1pLndpZHRoLGg9InJpZ2h0Iiksdi5pc0NlbnRlckFuY2hvcihpKSYmKHMtPWkud2lkdGgvMixoPSJjZW50ZXIiKTt2YXIgZj0idG9wIjt2LmlzQm90dG9tQW5jaG9yKGkpJiYoYy09aS5oZWlnaHQsZj0iYm90dG9tIiksdi5pc01pZGRsZUFuY2hvcihpKSYmKGMtPWkuaGVpZ2h0LzIsZj0ibWlkZGxlIiksaS53aWR0aD1NYXRoLmNlaWwoaS53aWR0aCksaS5oZWlnaHQ9TWF0aC5jZWlsKGkuaGVpZ2h0KSxzPU1hdGgucm91bmQocyksYz1NYXRoLnJvdW5kKGMpLGwuYXV0b01hcmdpbih0LCJsZWdlbmQiLHt4OmkueCx5OmkueSxsOmkud2lkdGgqKHtyaWdodDoxLGNlbnRlcjouNX1baF18fDApLHI6aS53aWR0aCooe2xlZnQ6MSxjZW50ZXI6LjV9W2hdfHwwKSxiOmkuaGVpZ2h0Kih7dG9wOjEsbWlkZGxlOi41fVtmXXx8MCksdDppLmhlaWdodCooe2JvdHRvbToxLG1pZGRsZTouNX1bZl18fDApfSl9dmFyIG89dCgiZDMiKSxhPXQoIi4uLy4uL3Bsb3RseSIpLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi8uLi9wbG90cy9wbG90cyIpLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IiksdT10KCIuLi9kcmF3aW5nIiksaD10KCIuLi9jb2xvciIpLGY9dCgiLi9jb25zdGFudHMiKSxkPXQoIi4vZ2V0X2xlZ2VuZF9kYXRhIikscD10KCIuL3N0eWxlIiksZz10KCIuL2hlbHBlcnMiKSx2PXQoIi4vYW5jaG9yX3V0aWxzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlKXt2YXIgcj1lLWYuc2Nyb2xsQmFySGVpZ2h0LTIqZi5zY3JvbGxCYXJNYXJnaW4sbj1rLmF0dHIoImRhdGEtc2Nyb2xsIiksaT1zLmNvbnN0cmFpbihuLXQsZS15LmhlaWdodCwwKSxvPS1pLyh5LmhlaWdodC1lKSpyK2Yuc2Nyb2xsQmFyTWFyZ2luO2suYXR0cigiZGF0YS1zY3JvbGwiLGkpLGsuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsICIraSsiKSIpLE0uY2FsbCh1LnNldFJlY3QseS53aWR0aC0oZi5zY3JvbGxCYXJXaWR0aCtmLnNjcm9sbEJhck1hcmdpbiksbyxmLnNjcm9sbEJhcldpZHRoLGYuc2Nyb2xsQmFySGVpZ2h0KX12YXIgcj10Ll9mdWxsTGF5b3V0LG09ImxlZ2VuZCIrci5fdWlkO2lmKHIuX2luZm9sYXllciYmdC5jYWxjZGF0YSl7dmFyIHk9ci5sZWdlbmQsYj1yLnNob3dsZWdlbmQmJmQodC5jYWxjZGF0YSx5KSx4PXIuaGlkZGVubGFiZWxzfHxbXTtpZighci5zaG93bGVnZW5kfHwhYi5sZW5ndGgpcmV0dXJuIHIuX2luZm9sYXllci5zZWxlY3RBbGwoIi5sZWdlbmQiKS5yZW1vdmUoKSxyLl90b3BkZWZzLnNlbGVjdCgiIyIrbSkucmVtb3ZlKCksdm9pZCBsLmF1dG9NYXJnaW4odCwibGVnZW5kIik7InVuZGVmaW5lZCI9PXR5cGVvZiB0LmZpcnN0UmVuZGVyP3QuZmlyc3RSZW5kZXI9ITA6dC5maXJzdFJlbmRlciYmKHQuZmlyc3RSZW5kZXI9ITEpO3ZhciBfPXIuX2luZm9sYXllci5zZWxlY3RBbGwoImcubGVnZW5kIikuZGF0YShbMF0pO18uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKHsiY2xhc3MiOiJsZWdlbmQiLCJwb2ludGVyLWV2ZW50cyI6ImFsbCJ9KTt2YXIgdz1yLl90b3BkZWZzLnNlbGVjdEFsbCgiIyIrbSkuZGF0YShbMF0pO3cuZW50ZXIoKS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLG0pLmFwcGVuZCgicmVjdCIpO3ZhciBBPV8uc2VsZWN0QWxsKCJyZWN0LmJnIikuZGF0YShbMF0pO0EuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKHsiY2xhc3MiOiJiZyIsInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSkuY2FsbChoLnN0cm9rZSx5LmJvcmRlcmNvbG9yKS5jYWxsKGguZmlsbCx5LmJnY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLHkuYm9yZGVyd2lkdGgrInB4Iik7dmFyIGs9Xy5zZWxlY3RBbGwoImcuc2Nyb2xsYm94IikuZGF0YShbMF0pO2suZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInNjcm9sbGJveCIpO3ZhciBNPV8uc2VsZWN0QWxsKCJyZWN0LnNjcm9sbGJhciIpLmRhdGEoWzBdKTtNLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cih7ImNsYXNzIjoic2Nyb2xsYmFyIixyeDoyMCxyeToyLHdpZHRoOjAsaGVpZ2h0OjB9KS5jYWxsKGguZmlsbCwiIzgwOEJBNCIpO3ZhciBUPWsuc2VsZWN0QWxsKCJnLmdyb3VwcyIpLmRhdGEoYik7VC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZ3JvdXBzIiksVC5leGl0KCkucmVtb3ZlKCksZy5pc0dyb3VwZWQoeSkmJlQuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0LGUpe3JldHVybiJ0cmFuc2xhdGUoMCwiK2UqeS50cmFjZWdyb3VwZ2FwKyIpIn0pO3ZhciBFPVQuc2VsZWN0QWxsKCJnLnRyYWNlcyIpLmRhdGEocy5pZGVudGl0eSk7RS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidHJhY2VzIiksRS5leGl0KCkucmVtb3ZlKCksRS5jYWxsKHApLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlO3JldHVybiBsLnRyYWNlSXMoZSwicGllIik/LTEhPT14LmluZGV4T2YodFswXS5sYWJlbCk/LjU6MToibGVnZW5kb25seSI9PT1lLnZpc2libGU/LjU6MX0pLmVhY2goZnVuY3Rpb24oZSxyKXtuKHRoaXMsdCxlLHIsRSk7dmFyIGk9by5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJyZWN0IikuZGF0YShbMF0pO2kuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJsZWdlbmR0b2dnbGUiLCEwKS5zdHlsZSgiY3Vyc29yIiwicG9pbnRlciIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuY2FsbChoLmZpbGwsInJnYmEoMCwwLDAsMCkiKSxpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZighdC5fZHJhZ2dlZCl7dmFyIHIsbixpPXQuX2Z1bGxEYXRhLG89ZVswXS50cmFjZSxzPW8ubGVnZW5kZ3JvdXAsYz1bXTtpZihsLnRyYWNlSXMobywicGllIikpe3ZhciB1PWVbMF0ubGFiZWwsaD14LnNsaWNlKCksZj1oLmluZGV4T2YodSk7LTE9PT1mP2gucHVzaCh1KTpoLnNwbGljZShmLDEpLGEucmVsYXlvdXQodCwiaGlkZGVubGFiZWxzIixoKX1lbHNle2lmKCIiPT09cyljPVtvLmluZGV4XTtlbHNlIGZvcih2YXIgZD0wO2Q8aS5sZW5ndGg7ZCsrKXI9aVtkXSxyLmxlZ2VuZGdyb3VwPT09cyYmYy5wdXNoKHIuaW5kZXgpO249by52aXNpYmxlPT09ITA/ImxlZ2VuZG9ubHkiOiEwLGEucmVzdHlsZSh0LCJ2aXNpYmxlIixuLGMpfX19KX0pLGkodCxFKTt2YXIgTD1yLl9zaXplLFM9TC5sK0wudyp5LngsQz1MLnQrTC5oKigxLXkueSk7di5pc1JpZ2h0QW5jaG9yKHkpJiYoUy09eS53aWR0aCksdi5pc0NlbnRlckFuY2hvcih5KSYmKFMtPXkud2lkdGgvMiksdi5pc0JvdHRvbUFuY2hvcih5KSYmKEMtPXkuaGVpZ2h0KSx2LmlzTWlkZGxlQW5jaG9yKHkpJiYoQy09eS5oZWlnaHQvMik7dmFyIFA9ci5oZWlnaHQtci5tYXJnaW4uYix6PU1hdGgubWluKFAtQyx5LmhlaWdodCksUj1rLmF0dHIoImRhdGEtc2Nyb2xsIik/ay5hdHRyKCJkYXRhLXNjcm9sbCIpOjA7aWYoay5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIitSKyIpIiksQS5hdHRyKHt3aWR0aDp5LndpZHRoLTIqeS5ib3JkZXJ3aWR0aCxoZWlnaHQ6ei0yKnkuYm9yZGVyd2lkdGgseDp5LmJvcmRlcndpZHRoLHk6eS5ib3JkZXJ3aWR0aH0pLF8uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrUysiLCIrQysiKSIpLHcuc2VsZWN0KCJyZWN0IikuYXR0cih7d2lkdGg6eS53aWR0aCxoZWlnaHQ6eix4OjAseTowfSksXy5jYWxsKHUuc2V0Q2xpcFVybCxtKSx5LmhlaWdodC16PjAmJiF0Ll9jb250ZXh0LnN0YXRpY1Bsb3Qpe0EuYXR0cih7d2lkdGg6eS53aWR0aC0yKnkuYm9yZGVyd2lkdGgrZi5zY3JvbGxCYXJXaWR0aH0pLHcuYXR0cih7d2lkdGg6eS53aWR0aCtmLnNjcm9sbEJhcldpZHRofSksdC5maXJzdFJlbmRlciYmKE0uY2FsbCh1LnNldFJlY3QseS53aWR0aC0oZi5zY3JvbGxCYXJXaWR0aCtmLnNjcm9sbEJhck1hcmdpbiksZi5zY3JvbGxCYXJNYXJnaW4sZi5zY3JvbGxCYXJXaWR0aCxmLnNjcm9sbEJhckhlaWdodCksay5hdHRyKCJkYXRhLXNjcm9sbCIsMCkpLGUoMCx6KSxfLm9uKCJ3aGVlbCIsbnVsbCksXy5vbigid2hlZWwiLGZ1bmN0aW9uKCl7dmFyIHQ9by5ldmVudDt0LnByZXZlbnREZWZhdWx0KCksZSh0LmRlbHRhWS8yMCx6KX0pLE0ub24oIi5kcmFnIixudWxsKSxrLm9uKCIuZHJhZyIsbnVsbCk7dmFyIE89by5iZWhhdmlvci5kcmFnKCkub24oImRyYWciLGZ1bmN0aW9uKCl7ZShvLmV2ZW50LmR5LHopfSk7TS5jYWxsKE8pLGsuY2FsbChPKX1pZih0Ll9jb250ZXh0LmVkaXRhYmxlKXt2YXIgSSxOLGosRixELEI7Yy5kcmFnRWxlbWVudCh7ZWxlbWVudDpfLm5vZGUoKSxwcmVwRm46ZnVuY3Rpb24oKXtqPU51bWJlcihfLmF0dHIoIngiKSksRj1OdW1iZXIoXy5hdHRyKCJ5IikpLEQ9TnVtYmVyKF8uYXR0cigid2lkdGgiKSksQj1OdW1iZXIoXy5hdHRyKCJoZWlnaHQiKSksYy5zZXRDdXJzb3IoXyl9LG1vdmVGbjpmdW5jdGlvbihlLHIpe3ZhciBuPXQuX2Z1bGxMYXlvdXQuX3NpemU7Xy5jYWxsKHUuc2V0UG9zaXRpb24saitlLEYrciksST1jLmRyYWdBbGlnbihqK2UsRCxuLmwsbi5sK24udyx5LnhhbmNob3IpLE49Yy5kcmFnQWxpZ24oRityK0IsLUIsbi50K24uaCxuLnQseS55YW5jaG9yKTt2YXIgaT1jLmRyYWdDdXJzb3JzKEksTix5LnhhbmNob3IseS55YW5jaG9yKTtjLnNldEN1cnNvcihfLGkpfSxkb25lRm46ZnVuY3Rpb24oZSl7Yy5zZXRDdXJzb3IoXyksZSYmdm9pZCAwIT09SSYmdm9pZCAwIT09TiYmYS5yZWxheW91dCh0LHsibGVnZW5kLngiOkksImxlZ2VuZC55IjpOfSl9fSl9fX19LHsiLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RseSI6MzkwLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiOjM5OCwiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNywiLi4vY29sb3IiOjMwMSwiLi4vZHJhd2luZyI6MzE5LCIuL2FuY2hvcl91dGlscyI6MzI4LCIuL2NvbnN0YW50cyI6MzMwLCIuL2dldF9sZWdlbmRfZGF0YSI6MzMzLCIuL2hlbHBlcnMiOjMzNCwiLi9zdHlsZSI6MzM2LGQzOjcwfV0sMzMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksaT10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQscil7aWYoIiIhPT10JiZpLmlzR3JvdXBlZChlKSktMT09PWwuaW5kZXhPZih0KT8obC5wdXNoKHQpLGM9ITAsc1t0XT1bW3JdXSk6c1t0XS5wdXNoKFtyXSk7ZWxzZXt2YXIgbj0ifn5pIitoO2wucHVzaChuKSxzW25dPVtbcl1dLGgrK319dmFyIG8sYSxzPXt9LGw9W10sYz0hMSx1PXt9LGg9MDtmb3Iobz0wO288dC5sZW5ndGg7bysrKXt2YXIgZj10W29dLGQ9ZlswXSxwPWQudHJhY2UsZz1wLmxlZ2VuZGdyb3VwO2lmKGkubGVnZW5kR2V0c1RyYWNlKHApJiZwLnNob3dsZWdlbmQpaWYobi50cmFjZUlzKHAsInBpZSIpKWZvcih1W2ddfHwodVtnXT17fSksYT0wO2E8Zi5sZW5ndGg7YSsrKXt2YXIgdj1mW2FdLmxhYmVsO3VbZ11bdl18fChyKGcse2xhYmVsOnYsY29sb3I6ZlthXS5jb2xvcixpOmZbYV0uaSx0cmFjZTpwfSksdVtnXVt2XT0hMCl9ZWxzZSByKGcsZCl9aWYoIWwubGVuZ3RoKXJldHVybltdO3ZhciBtLHksYj1sLmxlbmd0aDtpZihjJiZpLmlzR3JvdXBlZChlKSlmb3IoeT1uZXcgQXJyYXkoYiksbz0wO2I+bztvKyspbT1zW2xbb11dLHlbb109aS5pc1JldmVyc2VkKGUpP20ucmV2ZXJzZSgpOm07ZWxzZXtmb3IoeT1bbmV3IEFycmF5KGIpXSxvPTA7Yj5vO28rKyltPXNbbFtvXV1bMF0seVswXVtpLmlzUmV2ZXJzZWQoZSk/Yi1vLTE6b109bTtiPTF9cmV0dXJuIGUuX2xncm91cHNMZW5ndGg9Yix5fX0seyIuLi8uLi9wbG90cy9wbG90cyI6NDM3LCIuL2hlbHBlcnMiOjMzNH1dLDMzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9wbG90cyIpO3IubGVnZW5kR2V0c1RyYWNlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnZpc2libGUmJm4udHJhY2VJcyh0LCJzaG93TGVnZW5kIil9LHIuaXNHcm91cGVkPWZ1bmN0aW9uKHQpe3JldHVybi0xIT09KHQudHJhY2VvcmRlcnx8IiIpLmluZGV4T2YoImdyb3VwZWQiKX0sci5pc1JldmVyc2VkPWZ1bmN0aW9uKHQpe3JldHVybi0xIT09KHQudHJhY2VvcmRlcnx8IiIpLmluZGV4T2YoInJldmVyc2VkIil9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo0Mzd9XSwzMzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49ZS5leHBvcnRzPXt9O24ubGF5b3V0QXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxuLnN1cHBseUxheW91dERlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLmRyYXc9dCgiLi9kcmF3Iiksbi5zdHlsZT10KCIuL3N0eWxlIil9LHsiLi9hdHRyaWJ1dGVzIjozMjksIi4vZGVmYXVsdHMiOjMzMSwiLi9kcmF3IjozMzIsIi4vc3R5bGUiOjMzNn1dLDMzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1lLnZpc2libGUmJmUuZmlsbCYmIm5vbmUiIT09ZS5maWxsLG49ZC5oYXNMaW5lcyhlKSxpPWwuc2VsZWN0KHRoaXMpLnNlbGVjdCgiLmxlZ2VuZGZpbGwiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKHI/W3RdOltdKTtpLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgianMtZmlsbCIsITApLGkuZXhpdCgpLnJlbW92ZSgpLGkuYXR0cigiZCIsIk01LDBoMzB2NmgtMzB6IikuY2FsbChoLmZpbGxHcm91cFN0eWxlKTt2YXIgbz1sLnNlbGVjdCh0aGlzKS5zZWxlY3QoIi5sZWdlbmRsaW5lcyIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEobj9bdF06W10pO28uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJqcy1saW5lIiwhMCkuYXR0cigiZCIsIk01LDBoMzAiKSxvLmV4aXQoKS5yZW1vdmUoKSxvLmNhbGwoaC5saW5lR3JvdXBTdHlsZSl9ZnVuY3Rpb24gaSh0KXtmdW5jdGlvbiBlKHQsZSxyKXt2YXIgbj1jLm5lc3RlZFByb3BlcnR5KGEsdCkuZ2V0KCksaT1BcnJheS5pc0FycmF5KG4pJiZlP2Uobik6bjtpZihyKXtpZihpPHJbMF0pcmV0dXJuIHJbMF07aWYoaT5yWzFdKXJldHVybiByWzFdfXJldHVybiBpfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHRbMF19dmFyIG4saSxvPXRbMF0sYT1vLnRyYWNlLHM9ZC5oYXNNYXJrZXJzKGEpLHU9ZC5oYXNUZXh0KGEpLGY9ZC5oYXNMaW5lcyhhKTtpZihzfHx1fHxmKXt2YXIgcD17fSxnPXt9O3MmJihwLm1jPWUoIm1hcmtlci5jb2xvciIscikscC5tbz1lKCJtYXJrZXIub3BhY2l0eSIsYy5tZWFuLFsuMiwxXSkscC5tcz1lKCJtYXJrZXIuc2l6ZSIsYy5tZWFuLFsyLDE2XSkscC5tbGM9ZSgibWFya2VyLmxpbmUuY29sb3IiLHIpLHAubWx3PWUoIm1hcmtlci5saW5lLndpZHRoIixjLm1lYW4sWzAsNV0pLGcubWFya2VyPXtzaXplcmVmOjEsc2l6ZW1pbjoxLHNpemVtb2RlOiJkaWFtZXRlciJ9KSxmJiYoZy5saW5lPXt3aWR0aDplKCJsaW5lLndpZHRoIixyLFswLDEwXSl9KSx1JiYocC50eD0iQWEiLHAudHA9ZSgidGV4dHBvc2l0aW9uIixyKSxwLnRzPTEwLHAudGM9ZSgidGV4dGZvbnQuY29sb3IiLHIpLHAudGY9ZSgidGV4dGZvbnQuZmFtaWx5IixyKSksbj1bYy5taW5FeHRlbmQobyxwKV0saT1jLm1pbkV4dGVuZChhLGcpfXZhciB2PWwuc2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKSxtPXYuc2VsZWN0QWxsKCJwYXRoLnNjYXR0ZXJwdHMiKS5kYXRhKHM/bjpbXSk7bS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoInNjYXR0ZXJwdHMiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCkiKSxtLmV4aXQoKS5yZW1vdmUoKSxtLmNhbGwoaC5wb2ludFN0eWxlLGkpLHMmJihuWzBdLm1yYz0zKTt2YXIgeT12LnNlbGVjdEFsbCgiZy5wb2ludHRleHQiKS5kYXRhKHU/bjpbXSk7eS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInBvaW50dGV4dCIsITApLmFwcGVuZCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyMCwwKSIpLHkuZXhpdCgpLnJlbW92ZSgpLHkuc2VsZWN0QWxsKCJ0ZXh0IikuY2FsbChoLnRleHRQb2ludFN0eWxlLGkpfWZ1bmN0aW9uIG8odCl7dmFyIGU9dFswXS50cmFjZSxyPWUubWFya2VyfHx7fSxuPXIubGluZXx8e30saT1sLnNlbGVjdCh0aGlzKS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2VsZWN0QWxsKCJwYXRoLmxlZ2VuZGJhciIpLmRhdGEodS50cmFjZUlzKGUsImJhciIpP1t0XTpbXSk7aS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImxlZ2VuZGJhciIsITApLmF0dHIoImQiLCJNNiw2SC02Vi02SDZaIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDApIiksaS5leGl0KCkucmVtb3ZlKCksaS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPSh0Lm1sdysxfHxuLndpZHRoKzEpLTEsaT1sLnNlbGVjdCh0aGlzKTtpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGUrInB4IikuY2FsbChmLmZpbGwsdC5tY3x8ci5jb2xvciksZSYmaS5jYWxsKGYuc3Ryb2tlLHQubWxjfHxuLmNvbG9yKX0pfWZ1bmN0aW9uIGEodCl7dmFyIGU9dFswXS50cmFjZSxyPWwuc2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RBbGwoInBhdGgubGVnZW5kYm94IikuZGF0YSh1LnRyYWNlSXMoZSwiYm94IikmJmUudmlzaWJsZT9bdF06W10pO3IuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmRib3giLCEwKS5hdHRyKCJkIiwiTTYsNkgtNlYtNkg2WiIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyMCwwKSIpLHIuZXhpdCgpLnJlbW92ZSgpLHIuZWFjaChmdW5jdGlvbih0KXt2YXIgcj0odC5sdysxfHxlLmxpbmUud2lkdGgrMSktMSxuPWwuc2VsZWN0KHRoaXMpO24uc3R5bGUoInN0cm9rZS13aWR0aCIscisicHgiKS5jYWxsKGYuZmlsbCx0LmZjfHxlLmZpbGxjb2xvciksciYmbi5jYWxsKGYuc3Ryb2tlLHQubGN8fGUubGluZS5jb2xvcil9KX1mdW5jdGlvbiBzKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1sLnNlbGVjdCh0aGlzKS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2VsZWN0QWxsKCJwYXRoLmxlZ2VuZHBpZSIpLmRhdGEodS50cmFjZUlzKGUsInBpZSIpJiZlLnZpc2libGU/W3RdOltdKTtyLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgibGVnZW5kcGllIiwhMCkuYXR0cigiZCIsIk02LDZILTZWLTZINloiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCkiKSxyLmV4aXQoKS5yZW1vdmUoKSxyLnNpemUoKSYmci5jYWxsKHAsdFswXSxlKX12YXIgbD10KCJkMyIpLGM9dCgiLi4vLi4vbGliIiksdT10KCIuLi8uLi9wbG90cy9wbG90cyIpLGg9dCgiLi4vZHJhd2luZyIpLGY9dCgiLi4vY29sb3IiKSxkPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIikscD10KCIuLi8uLi90cmFjZXMvcGllL3N0eWxlX29uZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt0LmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bC5zZWxlY3QodGhpcykscj1lLnNlbGVjdEFsbCgiZy5sZWdlbmRmaWxsIikuZGF0YShbdF0pO3IuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmRmaWxsIiwhMCk7dmFyIG49ZS5zZWxlY3RBbGwoImcubGVnZW5kbGluZXMiKS5kYXRhKFt0XSk7bi5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxlZ2VuZGxpbmVzIiwhMCk7dmFyIGk9ZS5zZWxlY3RBbGwoImcubGVnZW5kc3ltYm9scyIpLmRhdGEoW3RdKTtpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kc3ltYm9scyIsITApLGkuc3R5bGUoIm9wYWNpdHkiLHRbMF0udHJhY2Uub3BhY2l0eSksaS5zZWxlY3RBbGwoImcubGVnZW5kcG9pbnRzIikuZGF0YShbdF0pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kcG9pbnRzIiwhMCl9KS5lYWNoKG8pLmVhY2goYSkuZWFjaChzKS5lYWNoKG4pLmVhY2goaSl9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9wbG90cyI6NDM3LCIuLi8uLi90cmFjZXMvcGllL3N0eWxlX29uZSI6NTI2LCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyI6NTQ2LAoiLi4vY29sb3IiOjMwMSwiLi4vZHJhd2luZyI6MzE5LGQzOjcwfV0sMzM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1lLmN1cnJlbnRUYXJnZXQsbj1yLmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIiksaT1yLmdldEF0dHJpYnV0ZSgiZGF0YS12YWwiKXx8ITAsbz10Ll9mdWxsTGF5b3V0LGE9e307aWYoInpvb20iPT09bilmb3IodmFyIHMsbCx1LGg9ImluIj09PWk/LjU6MixmPSgxK2gpLzIsZD0oMS1oKS8yLGc9Yy5BeGVzLmxpc3QodCxudWxsLCEwKSx2PTA7djxnLmxlbmd0aDt2Kyspcz1nW3ZdLHMuZml4ZWRyYW5nZXx8KGw9cy5fbmFtZSwiYXV0byI9PT1pP2FbbCsiLmF1dG9yYW5nZSJdPSEwOiJyZXNldCI9PT1pP3ZvaWQgMD09PXMuX3JhbmdlSW5pdGlhbD9hW2wrIi5hdXRvcmFuZ2UiXT0hMDphW2wrIi5yYW5nZSJdPXMuX3JhbmdlSW5pdGlhbC5zbGljZSgpOih1PXMucmFuZ2UsYVtsKyIucmFuZ2UiXT1bZip1WzBdK2QqdVsxXSxmKnVbMV0rZCp1WzBdXSkpO2Vsc2UiaG92ZXJtb2RlIiE9PW58fCJ4IiE9PWkmJiJ5IiE9PWl8fChpPW8uX2lzSG9yaXo/InkiOiJ4IixyLnNldEF0dHJpYnV0ZSgiZGF0YS12YWwiLGkpKSxhW25dPWk7Yy5yZWxheW91dCh0LGEpLnRoZW4oZnVuY3Rpb24oKXsiZHJhZ21vZGUiPT09biYmKG8uX2hhc0NhcnRlc2lhbiYmYy5GeC5zZXRDdXJzb3Ioby5fcGFwZXIuc2VsZWN0KCIubnNld2RyYWciKSxwW2ldKSxjLkZ4LnN1cHBseUxheW91dERlZmF1bHRzKHQubGF5b3V0LG8sdC5fZnVsbERhdGEpLGMuRnguaW5pdCh0KSl9KX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciByPWUuY3VycmVudFRhcmdldCxuPXIuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKSxpPXIuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpfHwhMCxvPXQuX2Z1bGxMYXlvdXQsYT1jLlBsb3RzLmdldFN1YnBsb3RJZHMobywiZ2wzZCIpLHM9e30sbD1uLnNwbGl0KCIuIiksdT0wO3U8YS5sZW5ndGg7dSsrKXNbYVt1XSsiLiIrbFsxXV09aTtjLnJlbGF5b3V0KHQscyl9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj1lLmN1cnJlbnRUYXJnZXQsbj1yLmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIiksaT10Ll9mdWxsTGF5b3V0LG89Yy5QbG90cy5nZXRTdWJwbG90SWRzKGksImdsM2QiKSxhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBzPW9bYV0sbD1pW3NdLHU9bC5fc2NlbmU7InJlc2V0RGVmYXVsdCI9PT1uP3Uuc2V0Q2FtZXJhVG9EZWZhdWx0KCk6InJlc2V0TGFzdFNhdmUiPT09biYmdS5zZXRDYW1lcmEobC5jYW1lcmEpfX1mdW5jdGlvbiBhKHQsZSl7dmFyIHI9ZS5jdXJyZW50VGFyZ2V0LG49ci5fcHJldmlvdXNWYWx8fCExLGk9dC5sYXlvdXQsbz10Ll9mdWxsTGF5b3V0LGE9Yy5QbG90cy5nZXRTdWJwbG90SWRzKG8sImdsM2QiKSxzPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl0sbD1bInNob3dzcGlrZXMiLCJzcGlrZXNpZGVzIiwic3Bpa2V0aGlja25lc3MiLCJzcGlrZWNvbG9yIl0saD17fSxmPXt9LGQ9e307aWYobilkPXUuZXh0ZW5kRGVlcChpLG4pLHIuX3ByZXZpb3VzVmFsPW51bGw7ZWxzZXtkPXsiYWxsYXhlcy5zaG93c3Bpa2VzIjohMX07Zm9yKHZhciBwPTA7cDxhLmxlbmd0aDtwKyspe3ZhciBnPWFbcF0sdj1vW2ddLG09aFtnXT17fTttLmhvdmVybW9kZT12LmhvdmVybW9kZSxkW2crIi5ob3Zlcm1vZGUiXT0hMTtmb3IodmFyIHk9MDszPnk7eSsrKXt2YXIgYj1zW3ldO2Y9bVtiXT17fTtmb3IodmFyIHg9MDt4PGwubGVuZ3RoO3grKyl7dmFyIF89bFt4XTtmW19dPXZbYl1bX119fX1yLl9wcmV2aW91c1ZhbD11LmV4dGVuZERlZXAoe30saCl9Yy5yZWxheW91dCh0LGQpfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIHI9ZS5jdXJyZW50VGFyZ2V0LG49ci5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIpLGk9ci5nZXRBdHRyaWJ1dGUoImRhdGEtdmFsIil8fCEwLG89dC5fZnVsbExheW91dCxhPWMuUGxvdHMuZ2V0U3VicGxvdElkcyhvLCJnZW8iKSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPW9bYVtzXV0uX2dlbztpZigiem9vbSI9PT1uKXt2YXIgdT1sLnByb2plY3Rpb24uc2NhbGUoKSxoPSJpbiI9PT1pPzIqdTouNSp1O2wucHJvamVjdGlvbi5zY2FsZShoKSxsLnpvb20uc2NhbGUoaCksbC5yZW5kZXIoKX1lbHNlInJlc2V0Ij09PW4mJmwuem9vbVJlc2V0KCl9fWZ1bmN0aW9uIGwodCl7dmFyIGUscj10Ll9mdWxsTGF5b3V0O2U9ci5faGFzQ2FydGVzaWFuP3IuX2lzSG9yaXo/InkiOiJ4IjoiY2xvc2VzdCI7dmFyIG49dC5fZnVsbExheW91dC5ob3Zlcm1vZGU/ITE6ZTtjLnJlbGF5b3V0KHQsImhvdmVybW9kZSIsbil9dmFyIGM9dCgiLi4vLi4vcGxvdGx5IiksdT10KCIuLi8uLi9saWIiKSxoPXQoIi4uLy4uL3NuYXBzaG90IiksZj10KCIuLi8uLi8uLi9idWlsZC9wbG90aWNvbiIpLGQ9ZS5leHBvcnRzPXt9O2QudG9JbWFnZT17bmFtZToidG9JbWFnZSIsdGl0bGU6IkRvd25sb2FkIHBsb3QgYXMgYSBwbmciLGljb246Zi5jYW1lcmEsY2xpY2s6ZnVuY3Rpb24odCl7dmFyIGU9InBuZyI7aWYodS5pc0lFKCkpcmV0dXJuIHZvaWQgdS5ub3RpZmllcigiU25hcHNob3R0aW5nIGlzIHVuYXZhaWxhYmxlIGluIEludGVybmV0IEV4cGxvcmVyLiBDb25zaWRlciBleHBvcnRpbmcgeW91ciBpbWFnZXMgdXNpbmcgdGhlIFBsb3RseSBDbG91ZCIsImxvbmciKTtpZih0Ll9zbmFwc2hvdEluUHJvZ3Jlc3MpcmV0dXJuIHZvaWQgdS5ub3RpZmllcigiU25hcHNob3R0aW5nIGlzIHN0aWxsIGluIHByb2dyZXNzIC0gcGxlYXNlIGhvbGQiLCJsb25nIik7dC5fc25hcHNob3RJblByb2dyZXNzPSEwLHUubm90aWZpZXIoIlRha2luZyBzbmFwc2hvdCAtIHRoaXMgbWF5IHRha2UgYSBmZXcgc2Vjb25kcyIsImxvbmciKTt2YXIgcj1oLnRvSW1hZ2UodCx7Zm9ybWF0OmV9KSxuPXQuZm58fCJuZXdwbG90IjtuKz0iLiIrZSxyLm9uY2UoInN1Y2Nlc3MiLGZ1bmN0aW9uKGUpe3QuX3NuYXBzaG90SW5Qcm9ncmVzcz0hMTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aS5ocmVmPWUsaS5kb3dubG9hZD1uLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSksaS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaSksci5jbGVhbigpfSksci5vbmNlKCJlcnJvciIsZnVuY3Rpb24obil7dC5fc25hcHNob3RJblByb2dyZXNzPSExLHUubm90aWZpZXIoIlNvcnJ5IHRoZXJlIHdhcyBhIHByb2JsZW0gZG93bmxvYWRpbmcgeW91ciAiK2UsImxvbmciKSxjb25zb2xlLmVycm9yKG4pLHIuY2xlYW4oKX0pfX0sZC5zZW5kRGF0YVRvQ2xvdWQ9e25hbWU6InNlbmREYXRhVG9DbG91ZCIsdGl0bGU6IlNhdmUgYW5kIGVkaXQgcGxvdCBpbiBjbG91ZCIsaWNvbjpmLmRpc2ssY2xpY2s6ZnVuY3Rpb24odCl7Yy5QbG90cy5zZW5kRGF0YVRvQ2xvdWQodCl9fSxkLnpvb20yZD17bmFtZToiem9vbTJkIix0aXRsZToiWm9vbSIsYXR0cjoiZHJhZ21vZGUiLHZhbDoiem9vbSIsaWNvbjpmLnpvb21ib3gsY2xpY2s6bn0sZC5wYW4yZD17bmFtZToicGFuMmQiLHRpdGxlOiJQYW4iLGF0dHI6ImRyYWdtb2RlIix2YWw6InBhbiIsaWNvbjpmLnBhbixjbGljazpufSxkLnNlbGVjdDJkPXtuYW1lOiJzZWxlY3QyZCIsdGl0bGU6IkJveCBTZWxlY3QiLGF0dHI6ImRyYWdtb2RlIix2YWw6InNlbGVjdCIsaWNvbjpmLnNlbGVjdGJveCxjbGljazpufSxkLmxhc3NvMmQ9e25hbWU6Imxhc3NvMmQiLHRpdGxlOiJMYXNzbyBTZWxlY3QiLGF0dHI6ImRyYWdtb2RlIix2YWw6Imxhc3NvIixpY29uOmYubGFzc28sY2xpY2s6bn0sZC56b29tSW4yZD17bmFtZToiem9vbUluMmQiLHRpdGxlOiJab29tIGluIixhdHRyOiJ6b29tIix2YWw6ImluIixpY29uOmYuem9vbV9wbHVzLGNsaWNrOm59LGQuem9vbU91dDJkPXtuYW1lOiJ6b29tT3V0MmQiLHRpdGxlOiJab29tIG91dCIsYXR0cjoiem9vbSIsdmFsOiJvdXQiLGljb246Zi56b29tX21pbnVzLGNsaWNrOm59LGQuYXV0b1NjYWxlMmQ9e25hbWU6ImF1dG9TY2FsZTJkIix0aXRsZToiQXV0b3NjYWxlIixhdHRyOiJ6b29tIix2YWw6ImF1dG8iLGljb246Zi5hdXRvc2NhbGUsY2xpY2s6bn0sZC5yZXNldFNjYWxlMmQ9e25hbWU6InJlc2V0U2NhbGUyZCIsdGl0bGU6IlJlc2V0IGF4ZXMiLGF0dHI6Inpvb20iLHZhbDoicmVzZXQiLGljb246Zi5ob21lLGNsaWNrOm59LGQuaG92ZXJDbG9zZXN0Q2FydGVzaWFuPXtuYW1lOiJob3ZlckNsb3Nlc3RDYXJ0ZXNpYW4iLHRpdGxlOiJTaG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIsYXR0cjoiaG92ZXJtb2RlIix2YWw6ImNsb3Nlc3QiLGljb246Zi50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGljazpufSxkLmhvdmVyQ29tcGFyZUNhcnRlc2lhbj17bmFtZToiaG92ZXJDb21wYXJlQ2FydGVzaWFuIix0aXRsZToiQ29tcGFyZSBkYXRhIG9uIGhvdmVyIixhdHRyOiJob3Zlcm1vZGUiLHZhbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5fZnVsbExheW91dC5faXNIb3Jpej8ieSI6IngifSxpY29uOmYudG9vbHRpcF9jb21wYXJlLGdyYXZpdHk6Im5lIixjbGljazpufTt2YXIgcD17cGFuOiJtb3ZlIix6b29tOiJjcm9zc2hhaXIiLHNlbGVjdDoiY3Jvc3NoYWlyIixsYXNzbzoiY3Jvc3NoYWlyIn07ZC56b29tM2Q9e25hbWU6Inpvb20zZCIsdGl0bGU6Ilpvb20iLGF0dHI6InNjZW5lLmRyYWdtb2RlIix2YWw6Inpvb20iLGljb246Zi56b29tYm94LGNsaWNrOml9LGQucGFuM2Q9e25hbWU6InBhbjNkIix0aXRsZToiUGFuIixhdHRyOiJzY2VuZS5kcmFnbW9kZSIsdmFsOiJwYW4iLGljb246Zi5wYW4sY2xpY2s6aX0sZC5vcmJpdFJvdGF0aW9uPXtuYW1lOiJvcmJpdFJvdGF0aW9uIix0aXRsZToib3JiaXRhbCByb3RhdGlvbiIsYXR0cjoic2NlbmUuZHJhZ21vZGUiLHZhbDoib3JiaXQiLGljb246ZlsiM2Rfcm90YXRlIl0sY2xpY2s6aX0sZC50YWJsZVJvdGF0aW9uPXtuYW1lOiJ0YWJsZVJvdGF0aW9uIix0aXRsZToidHVybnRhYmxlIHJvdGF0aW9uIixhdHRyOiJzY2VuZS5kcmFnbW9kZSIsdmFsOiJ0dXJudGFibGUiLGljb246Zlsiei1heGlzIl0sY2xpY2s6aX0sZC5yZXNldENhbWVyYURlZmF1bHQzZD17bmFtZToicmVzZXRDYW1lcmFEZWZhdWx0M2QiLHRpdGxlOiJSZXNldCBjYW1lcmEgdG8gZGVmYXVsdCIsYXR0cjoicmVzZXREZWZhdWx0IixpY29uOmYuaG9tZSxjbGljazpvfSxkLnJlc2V0Q2FtZXJhTGFzdFNhdmUzZD17bmFtZToicmVzZXRDYW1lcmFMYXN0U2F2ZTNkIix0aXRsZToiUmVzZXQgY2FtZXJhIHRvIGxhc3Qgc2F2ZSIsYXR0cjoicmVzZXRMYXN0U2F2ZSIsaWNvbjpmLm1vdmllLGNsaWNrOm99LGQuaG92ZXJDbG9zZXN0M2Q9e25hbWU6ImhvdmVyQ2xvc2VzdDNkIix0aXRsZToiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIixhdHRyOiJob3Zlcm1vZGUiLHZhbDpudWxsLHRvZ2dsZTohMCxpY29uOmYudG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6YX0sZC56b29tSW5HZW89e25hbWU6Inpvb21JbkdlbyIsdGl0bGU6Ilpvb20gaW4iLGF0dHI6Inpvb20iLHZhbDoiaW4iLGljb246Zi56b29tX3BsdXMsY2xpY2s6c30sZC56b29tT3V0R2VvPXtuYW1lOiJ6b29tT3V0R2VvIix0aXRsZToiWm9vbSBvdXQiLGF0dHI6Inpvb20iLHZhbDoib3V0IixpY29uOmYuem9vbV9taW51cyxjbGljazpzfSxkLnJlc2V0R2VvPXtuYW1lOiJyZXNldEdlbyIsdGl0bGU6IlJlc2V0IixhdHRyOiJyZXNldCIsdmFsOm51bGwsaWNvbjpmLmF1dG9zY2FsZSxjbGljazpzfSxkLmhvdmVyQ2xvc2VzdEdlbz17bmFtZToiaG92ZXJDbG9zZXN0R2VvIix0aXRsZToiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIixhdHRyOiJob3Zlcm1vZGUiLHZhbDpudWxsLHRvZ2dsZTohMCxpY29uOmYudG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6bH0sZC5ob3ZlckNsb3Nlc3RHbDJkPXtuYW1lOiJob3ZlckNsb3Nlc3RHbDJkIix0aXRsZToiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIixhdHRyOiJob3Zlcm1vZGUiLHZhbDpudWxsLHRvZ2dsZTohMCxpY29uOmYudG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6bH0sZC5ob3ZlckNsb3Nlc3RQaWU9e25hbWU6ImhvdmVyQ2xvc2VzdFBpZSIsdGl0bGU6IlRvZ2dsZSBzaG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIsYXR0cjoiaG92ZXJtb2RlIix2YWw6ImNsb3Nlc3QiLGljb246Zi50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGljazpsfSxkLnRvZ2dsZUhvdmVyPXtuYW1lOiJ0b2dnbGVIb3ZlciIsdGl0bGU6IlRvZ2dsZSBzaG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIsYXR0cjoiaG92ZXJtb2RlIix2YWw6bnVsbCx0b2dnbGU6ITAsaWNvbjpmLnRvb2x0aXBfYmFzaWMsZ3Jhdml0eToibmUiLGNsaWNrOmZ1bmN0aW9uKHQsZSl7bCh0KSxhKHQsZSl9fSxkLnJlc2V0Vmlld3M9e25hbWU6InJlc2V0Vmlld3MiLHRpdGxlOiJSZXNldCB2aWV3cyIsaWNvbjpmLmhvbWUsY2xpY2s6ZnVuY3Rpb24odCxlKXt2YXIgcj1lLmN1cnJlbnRUYXJnZXQ7ci5zZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIsInpvb20iKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS12YWwiLCJyZXNldCIpLG4odCxlKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIiwicmVzZXRMYXN0U2F2ZSIpLG8odCxlKX19fSx7Ii4uLy4uLy4uL2J1aWxkL3Bsb3RpY29uIjoyLCIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdGx5IjozOTAsIi4uLy4uL3NuYXBzaG90Ijo0NDR9XSwzMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt0aGlzLmNvbnRhaW5lcj10LmNvbnRhaW5lcix0aGlzLmVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy51cGRhdGUodC5ncmFwaEluZm8sdC5idXR0b25zKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpfWZ1bmN0aW9uIGkodCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LGk9bmV3IG4oe2dyYXBoSW5mbzp0LGNvbnRhaW5lcjpyLl9wYXBlcmRpdi5ub2RlKCksYnV0dG9uczplfSk7cmV0dXJuIHIuX3ByaXZhdGVwbG90JiZvLnNlbGVjdChpLmVsZW1lbnQpLmFwcGVuZCgic3BhbiIpLmNsYXNzZWQoImJhZGdlLXByaXZhdGUgZmxvYXQtLWxlZnQiLCEwKS50ZXh0KCJQUklWQVRFIiksaX12YXIgbz10KCJkMyIpLGE9dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi8uLi9idWlsZC9wbG90aWNvbiIpLGw9bi5wcm90b3R5cGU7bC51cGRhdGU9ZnVuY3Rpb24odCxlKXt0aGlzLmdyYXBoSW5mbz10O3ZhciByPXRoaXMuZ3JhcGhJbmZvLl9jb250ZXh0OyJob3ZlciI9PT1yLmRpc3BsYXlNb2RlQmFyP3RoaXMuZWxlbWVudC5jbGFzc05hbWU9Im1vZGViYXIgbW9kZWJhci0taG92ZXIiOnRoaXMuZWxlbWVudC5jbGFzc05hbWU9Im1vZGViYXIiO3ZhciBuPSF0aGlzLmhhc0J1dHRvbnMoZSksaT10aGlzLmhhc0xvZ28hPT1yLmRpc3BsYXlsb2dvOyhufHxpKSYmKHRoaXMucmVtb3ZlQWxsQnV0dG9ucygpLHRoaXMudXBkYXRlQnV0dG9ucyhlKSxyLmRpc3BsYXlsb2dvJiYodGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZ2V0TG9nbygpKSx0aGlzLmhhc0xvZ289ITApKSx0aGlzLnVwZGF0ZUFjdGl2ZUJ1dHRvbigpfSxsLnVwZGF0ZUJ1dHRvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmJ1dHRvbnM9dCx0aGlzLmJ1dHRvbkVsZW1lbnRzPVtdLHRoaXMuYnV0dG9uc05hbWVzPVtdLHRoaXMuYnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPWUuY3JlYXRlR3JvdXAoKTt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49dC5uYW1lO2lmKCFuKXRocm93IG5ldyBFcnJvcigibXVzdCBwcm92aWRlIGJ1dHRvbiAnbmFtZScgaW4gYnV0dG9uIGNvbmZpZyIpO2lmKC0xIT09ZS5idXR0b25zTmFtZXMuaW5kZXhPZihuKSl0aHJvdyBuZXcgRXJyb3IoImJ1dHRvbiBuYW1lICciK24rIicgaXMgdGFrZW4iKTtlLmJ1dHRvbnNOYW1lcy5wdXNoKG4pO3ZhciBpPWUuY3JlYXRlQnV0dG9uKHQpO2UuYnV0dG9uRWxlbWVudHMucHVzaChpKSxyLmFwcGVuZENoaWxkKGkpfSksZS5lbGVtZW50LmFwcGVuZENoaWxkKHIpfSl9LGwuY3JlYXRlR3JvdXA9ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9Im1vZGViYXItZ3JvdXAiLHR9LGwuY3JlYXRlQnV0dG9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ci5zZXRBdHRyaWJ1dGUoInJlbCIsInRvb2x0aXAiKSxyLmNsYXNzTmFtZT0ibW9kZWJhci1idG4iO3ZhciBuPXQudGl0bGU7dm9pZCAwPT09biYmKG49dC5uYW1lKSwobnx8MD09PW4pJiZyLnNldEF0dHJpYnV0ZSgiZGF0YS10aXRsZSIsbiksdm9pZCAwIT09dC5hdHRyJiZyLnNldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIix0LmF0dHIpO3ZhciBpPXQudmFsO3ZvaWQgMCE9PWkmJigiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9aSh0aGlzLmdyYXBoSW5mbykpLHIuc2V0QXR0cmlidXRlKCJkYXRhLXZhbCIsaSkpO3ZhciBvPXQuY2xpY2s7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEVycm9yKCJtdXN0IHByb3ZpZGUgYnV0dG9uICdjbGljaycgZnVuY3Rpb24gaW4gYnV0dG9uIGNvbmZpZyIpO3JldHVybiByLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihyKXt0LmNsaWNrKGUuZ3JhcGhJbmZvLHIpLGUudXBkYXRlQWN0aXZlQnV0dG9uKHIuY3VycmVudFRhcmdldCl9KSxyLnNldEF0dHJpYnV0ZSgiZGF0YS10b2dnbGUiLHQudG9nZ2xlfHwhMSksdC50b2dnbGUmJnIuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIiksci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUljb24odC5pY29ufHxzLnF1ZXN0aW9uKSksci5zZXRBdHRyaWJ1dGUoImRhdGEtZ3Jhdml0eSIsdC5ncmF2aXR5fHwibiIpLHJ9LGwuY3JlYXRlSWNvbj1mdW5jdGlvbih0KXt2YXIgZT10LmFzY2VudC10LmRlc2NlbnQscj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHIsInN2ZyIpLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHIsInBhdGgiKTtyZXR1cm4gbi5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIjFlbSIpLG4uc2V0QXR0cmlidXRlKCJ3aWR0aCIsdC53aWR0aC9lKyJlbSIpLG4uc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbMCwwLHQud2lkdGgsZV0uam9pbigiICIpKSxpLnNldEF0dHJpYnV0ZSgiZCIsdC5wYXRoKSxpLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwibWF0cml4KDEgMCAwIC0xIDAgIit0LmFzY2VudCsiKSIpLG4uYXBwZW5kQ2hpbGQoaSksbn0sbC51cGRhdGVBY3RpdmVCdXR0b249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ncmFwaEluZm8uX2Z1bGxMYXlvdXQscj12b2lkIDAhPT10P3QuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKTpudWxsO3RoaXMuYnV0dG9uRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10LmdldEF0dHJpYnV0ZSgiZGF0YS12YWwiKXx8ITAsaT10LmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIikscz0idHJ1ZSI9PT10LmdldEF0dHJpYnV0ZSgiZGF0YS10b2dnbGUiKSxsPW8uc2VsZWN0KHQpO2lmKHMpaT09PXImJmwuY2xhc3NlZCgiYWN0aXZlIiwhbC5jbGFzc2VkKCJhY3RpdmUiKSk7ZWxzZXt2YXIgYz1udWxsPT09aT9pOmEubmVzdGVkUHJvcGVydHkoZSxpKS5nZXQoKTtsLmNsYXNzZWQoImFjdGl2ZSIsYz09PW4pfX0pfSxsLmhhc0J1dHRvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5idXR0b25zO2lmKCFlKXJldHVybiExO2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3Ipe2lmKHRbcl0ubGVuZ3RoIT09ZVtyXS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0W3JdLmxlbmd0aDtuKyspaWYodFtyXVtuXS5uYW1lIT09ZVtyXVtuXS5uYW1lKXJldHVybiExfXJldHVybiEwfSxsLmdldExvZ289ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNyZWF0ZUdyb3VwKCksZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIGUuaHJlZj0iaHR0cHM6Ly9wbG90Lmx5LyIsZS50YXJnZXQ9Il9ibGFuayIsZS5zZXRBdHRyaWJ1dGUoImRhdGEtdGl0bGUiLCJQcm9kdWNlZCB3aXRoIFBsb3RseSIpLGUuY2xhc3NOYW1lPSJtb2RlYmFyLWJ0biBwbG90bHlqc2ljb24gbW9kZWJhci1idG4tLWxvZ28iLGUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVJY29uKHMucGxvdGx5bG9nbykpLHQuYXBwZW5kQ2hpbGQoZSksdH0sbC5yZW1vdmVBbGxCdXR0b25zPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZDspdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTt0aGlzLmhhc0xvZ289ITF9LGwuZGVzdHJveT1mdW5jdGlvbigpe2EucmVtb3ZlRWxlbWVudCh0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIubW9kZWJhciIpKX0sZS5leHBvcnRzPWl9LHsiLi4vLi4vLi4vYnVpbGQvcGxvdGljb24iOjIsIi4uLy4uL2xpYiI6MzczLGQzOjcwfV0sMzM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciByPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTstMT09PWUuaW5kZXhPZihpKSYmci5wdXNoKGhbaV0pfWcucHVzaChyKX12YXIgcz10Ll9mdWxsTGF5b3V0LGw9dC5fZnVsbERhdGEsYz1zLl9oYXNDYXJ0ZXNpYW4sdT1zLl9oYXNHTDNELGY9cy5faGFzR2VvLGQ9cy5faGFzUGllLHA9cy5faGFzR0wyRCxnPVtdO2lmKG4oWyJ0b0ltYWdlIiwic2VuZERhdGFUb0Nsb3VkIl0pLChjfHxwfHxkKStmK3U+MSlyZXR1cm4gbihbInJlc2V0Vmlld3MiLCJ0b2dnbGVIb3ZlciJdKSxhKGcscik7dSYmKG4oWyJ6b29tM2QiLCJwYW4zZCIsIm9yYml0Um90YXRpb24iLCJ0YWJsZVJvdGF0aW9uIl0pLG4oWyJyZXNldENhbWVyYURlZmF1bHQzZCIsInJlc2V0Q2FtZXJhTGFzdFNhdmUzZCJdKSxuKFsiaG92ZXJDbG9zZXN0M2QiXSkpLGYmJihuKFsiem9vbUluR2VvIiwiem9vbU91dEdlbyIsInJlc2V0R2VvIl0pLG4oWyJob3ZlckNsb3Nlc3RHZW8iXSkpO3ZhciB2PWkocyksbT1bXTtyZXR1cm4hYyYmIXB8fHZ8fChtPVsiem9vbTJkIiwicGFuMmQiXSksYyYmbyhsKSYmKG0ucHVzaCgic2VsZWN0MmQiKSxtLnB1c2goImxhc3NvMmQiKSksbS5sZW5ndGgmJm4obSksIWMmJiFwfHx2fHxuKFsiem9vbUluMmQiLCJ6b29tT3V0MmQiLCJhdXRvU2NhbGUyZCIsInJlc2V0U2NhbGUyZCJdKSxjJiZkP24oWyJ0b2dnbGVIb3ZlciJdKTpwP24oWyJob3ZlckNsb3Nlc3RHbDJkIl0pOmM/bihbImhvdmVyQ2xvc2VzdENhcnRlc2lhbiIsImhvdmVyQ29tcGFyZUNhcnRlc2lhbiJdKTpkJiZuKFsiaG92ZXJDbG9zZXN0UGllIl0pLGEoZyxyKX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1sLkF4ZXMubGlzdCh7X2Z1bGxMYXlvdXQ6dH0sbnVsbCwhMCkscj0hMCxuPTA7bjxlLmxlbmd0aDtuKyspaWYoIWVbbl0uZml4ZWRyYW5nZSl7cj0hMTticmVha31yZXR1cm4gcn1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT0hMSxyPTA7cjx0Lmxlbmd0aCYmIWU7cisrKXt2YXIgbj10W3JdO24uX21vZHVsZSYmbi5fbW9kdWxlLnNlbGVjdFBvaW50cyYmKCJzY2F0dGVyIj09PW4udHlwZT8oYy5oYXNNYXJrZXJzKG4pfHxjLmhhc1RleHQobikpJiYoZT0hMCk6ZT0hMCl9cmV0dXJuIGV9ZnVuY3Rpb24gYSh0LGUpe2lmKGUubGVuZ3RoKWlmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdC5wdXNoKGVbcl0pO2Vsc2UgdC5wdXNoKGUpO3JldHVybiB0fWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspZm9yKHZhciByPXRbZV0sbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aWYodm9pZCAwPT09aFtpXSl0aHJvdyBuZXcgRXJyb3IoWyIqbW9kZUJhckJ1dHRvbnMqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsImludmFsaWQgYnV0dG9uIG5hbWUiXS5qb2luKCIgIikpO3RbZV1bbl09aFtpXX19cmV0dXJuIHR9dmFyIGw9dCgiLi4vLi4vcGxvdGx5IiksYz10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyIpLHU9dCgiLi8iKSxoPXQoIi4vYnV0dG9ucyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5fY29udGV4dCxpPWUuX21vZGVCYXI7aWYoIXIuZGlzcGxheU1vZGVCYXIpcmV0dXJuIHZvaWQoaSYmKGkuZGVzdHJveSgpLGRlbGV0ZSBlLl9tb2RlQmFyKSk7aWYoIUFycmF5LmlzQXJyYXkoci5tb2RlQmFyQnV0dG9uc1RvUmVtb3ZlKSl0aHJvdyBuZXcgRXJyb3IoWyIqbW9kZUJhckJ1dHRvbnNUb1JlbW92ZSogY29uZmlndXJhdGlvbiBvcHRpb25zIiwibXVzdCBiZSBhbiBhcnJheS4iXS5qb2luKCIgIikpO2lmKCFBcnJheS5pc0FycmF5KHIubW9kZUJhckJ1dHRvbnNUb0FkZCkpdGhyb3cgbmV3IEVycm9yKFsiKm1vZGVCYXJCdXR0b25zVG9BZGQqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsIm11c3QgYmUgYW4gYXJyYXkuIl0uam9pbigiICIpKTt2YXIgbyxhPXIubW9kZUJhckJ1dHRvbnM7bz1BcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aD9zKGEpOm4odCxyLm1vZGVCYXJCdXR0b25zVG9SZW1vdmUsci5tb2RlQmFyQnV0dG9uc1RvQWRkKSxpP2kudXBkYXRlKHQsbyk6ZS5fbW9kZUJhcj11KHQsbyl9fSx7Ii4uLy4uL3Bsb3RseSI6MzkwLCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyI6NTQ2LCIuLyI6MzM4LCIuL2J1dHRvbnMiOjMzN31dLDM0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxpPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGE9dCgiLi9idXR0b25fYXR0cmlidXRlcyIpO2E9byhhLHtfaXNMaW5rZWRUb0FycmF5OiEwfSksZS5leHBvcnRzPXt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIn0sYnV0dG9uczphLHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozfSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoibGVmdCJ9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozfSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIl0sZGZsdDoiYm90dG9tIn0sZm9udDpvKHt9LG4se30pLGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkubGlnaHRMaW5lfSxib3JkZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS5kZWZhdWx0TGluZX0sYm9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowfX19LHsiLi4vLi4vbGliL2V4dGVuZCI6MzY5LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjQwNywiLi4vY29sb3IvYXR0cmlidXRlcyI6MzAwLCIuL2J1dHRvbl9hdHRyaWJ1dGVzIjozNDF9XSwzNDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzdGVwOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJtb250aCIsInllYXIiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiYWxsIl0sZGZsdDoibW9udGgifSxzdGVwbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYmFja3dhcmQiLCJ0b2RhdGUiXSxkZmx0OiJiYWNrd2FyZCJ9LGNvdW50Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sbGFiZWw6e3ZhbFR5cGU6InN0cmluZyJ9fX0se31dLDM0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3lQYWQ6LjAyLG1pbkJ1dHRvbldpZHRoOjMwLHJ4OjMscnk6MyxhY3RpdmVDb2xvcjoiI2QzZDNkMyJ9fSx7fV0sMzQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIG8uY29lcmNlKG4saSxzLHQsZSl9Zm9yKHZhciBuLGksYT10LmJ1dHRvbnN8fFtdLGw9ZS5idXR0b25zPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7bj1hW2NdLGk9e307dmFyIHU9cigic3RlcCIpOyJhbGwiIT09dSYmKHIoInN0ZXBtb2RlIikscigiY291bnQiKSkscigibGFiZWwiKSxsLnB1c2goaSl9cmV0dXJuIGx9ZnVuY3Rpb24gaSh0LGUscil7Zm9yKHZhciBuPXIuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdLmFuY2hvcj09PXQuX2lkfSksaT0wLG89MDtvPG4ubGVuZ3RoO28rKylpPU1hdGgubWF4KGVbbltvXV0uZG9tYWluWzFdLGkpO3JldHVyblt0LmRvbWFpblswXSxpK2wueVBhZF19dmFyIG89dCgiLi4vLi4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKSxzPXQoIi4vYnV0dG9uX2F0dHJpYnV0ZXMiKSxsPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIGwodCxlKXtyZXR1cm4gby5jb2VyY2UoYyx1LGEsdCxlKX12YXIgYz10LnJhbmdlc2VsZWN0b3J8fHt9LHU9ZS5yYW5nZXNlbGVjdG9yPXt9LGg9bihjLHUpLGY9bCgidmlzaWJsZSIsaC5sZW5ndGg+MCk7aWYoZil7dmFyIGQ9aShlLHIscyk7bCgieCIsZFswXSksbCgieSIsZFsxXSksby5ub25lT3JBbGwodCxlLFsieCIsInkiXSksbCgieGFuY2hvciIpLGwoInlhbmNob3IiKSxvLmNvZXJjZUZvbnQobCwiZm9udCIsci5mb250KSxsKCJiZ2NvbG9yIiksbCgiYm9yZGVyY29sb3IiKSxsKCJib3JkZXJ3aWR0aCIpfX19LHsiLi4vLi4vbGliIjozNzMsIi4vYXR0cmlidXRlcyI6MzQwLCIuL2J1dHRvbl9hdHRyaWJ1dGVzIjozNDEsIi4vY29uc3RhbnRzIjozNDJ9XSwzNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9bS5saXN0KHQsIngiLCEwKSxyPVtdLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTtpLnJhbmdlc2VsZWN0b3ImJmkucmFuZ2VzZWxlY3Rvci52aXNpYmxlJiZyLnB1c2goaSl9cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5faWR9ZnVuY3Rpb24gbyh0LGUscil7aWYoImFsbCI9PT1lLnN0ZXApcmV0dXJuIHQuYXV0b3JhbmdlPT09ITA7dmFyIG49T2JqZWN0LmtleXMocik7cmV0dXJuIHQucmFuZ2VbMF09PT1yW25bMF1dJiZ0LnJhbmdlWzFdPT09cltuWzFdXX1mdW5jdGlvbiBhKHQsZSxyKXt2YXIgbj10LnNlbGVjdEFsbCgicmVjdCIpLmRhdGEoWzBdKTtuLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic2VsZWN0b3ItcmVjdCIsITApLG4uYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpLG4uYXR0cih7cng6Yi5yeCxyeTpiLnJ5fSksbi5jYWxsKHAuc3Ryb2tlLGUuYm9yZGVyY29sb3IpLmNhbGwocC5maWxsLHMoZSxyKSkuc3R5bGUoInN0cm9rZS13aWR0aCIsZS5ib3JkZXJ3aWR0aCsicHgiKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGUuaXNBY3RpdmV8fGUuaXNIb3ZlcmVkP2IuYWN0aXZlQ29sb3I6dC5iZ2NvbG9yfWZ1bmN0aW9uIGwodCxlLHIpe2Z1bmN0aW9uIG4odCl7di5jb252ZXJ0VG9Uc3BhbnModCl9dmFyIGk9dC5zZWxlY3RBbGwoInRleHQiKS5kYXRhKFswXSk7aS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoInNlbGVjdG9yLXRleHQiLCEwKS5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1ub25lIiwhMCksaS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLGkuY2FsbChnLmZvbnQsZS5mb250KS50ZXh0KGMocikpLmNhbGwobil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdC5sYWJlbD90LmxhYmVsOiJhbGwiPT09dC5zdGVwPyJhbGwiOnQuY291bnQrdC5zdGVwLmNoYXJBdCgwKX1mdW5jdGlvbiB1KHQsZSxyLG4pe3Iud2lkdGg9MCxyLmhlaWdodD0wO3ZhciBpPXIuYm9yZGVyd2lkdGg7ZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9aC5zZWxlY3QodGhpcyksZT10LnNlbGVjdCgiLnNlbGVjdG9yLXRleHQiKSxuPWUuc2VsZWN0QWxsKCJ0c3BhbiIpLGk9MS4zKnIuZm9udC5zaXplLG89blswXS5sZW5ndGh8fDEsYT1NYXRoLm1heChpKm8sMTYpKzM7ci5oZWlnaHQ9TWF0aC5tYXgoci5oZWlnaHQsYSl9KSxlLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1oLnNlbGVjdCh0aGlzKSxlPXQuc2VsZWN0KCIuc2VsZWN0b3ItcmVjdCIpLG49dC5zZWxlY3QoIi5zZWxlY3Rvci10ZXh0Iiksbz1uLnNlbGVjdEFsbCgidHNwYW4iKSxhPW4ubm9kZSgpJiZnLmJCb3gobi5ub2RlKCkpLndpZHRoLHM9MS4zKnIuZm9udC5zaXplLGw9b1swXS5sZW5ndGh8fDEsYz1NYXRoLm1heChhKzEwLGIubWluQnV0dG9uV2lkdGgpO3QuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGkrci53aWR0aCkrIiwiK2krIikiKSxlLmF0dHIoe3g6MCx5OjAsd2lkdGg6YyxoZWlnaHQ6ci5oZWlnaHR9KTt2YXIgdT17eDpjLzIseTpyLmhlaWdodC8yLShsLTEpKnMvMiszfTtuLmF0dHIodSksby5hdHRyKHUpLHIud2lkdGgrPWMrNX0pLGUuc2VsZWN0QWxsKCJyZWN0IikuYXR0cigiaGVpZ2h0IixyLmhlaWdodCk7dmFyIG89dC5fZnVsbExheW91dC5fc2l6ZTtyLmx4PW8ubCtvLncqci54LHIubHk9by50K28uaCooMS1yLnkpO3ZhciBhPSJsZWZ0Ijt5LmlzUmlnaHRBbmNob3IocikmJihyLmx4LT1yLndpZHRoLGE9InJpZ2h0IikseS5pc0NlbnRlckFuY2hvcihyKSYmKHIubHgtPXIud2lkdGgvMixhPSJjZW50ZXIiKTt2YXIgcz0idG9wIjt5LmlzQm90dG9tQW5jaG9yKHIpJiYoci5seS09ci5oZWlnaHQscz0iYm90dG9tIikseS5pc01pZGRsZUFuY2hvcihyKSYmKHIubHktPXIuaGVpZ2h0LzIscz0ibWlkZGxlIiksci53aWR0aD1NYXRoLmNlaWwoci53aWR0aCksci5oZWlnaHQ9TWF0aC5jZWlsKHIuaGVpZ2h0KSxyLmx4PU1hdGgucm91bmQoci5seCksci5seT1NYXRoLnJvdW5kKHIubHkpLGQuYXV0b01hcmdpbih0LG4rIi1yYW5nZS1zZWxlY3RvciIse3g6ci54LHk6ci55LGw6ci53aWR0aCooe3JpZ2h0OjEsY2VudGVyOi41fVthXXx8MCkscjpyLndpZHRoKih7bGVmdDoxLGNlbnRlcjouNX1bYV18fDApLGI6ci5oZWlnaHQqKHt0b3A6MSxtaWRkbGU6LjV9W3NdfHwwKSx0OnIuaGVpZ2h0Kih7Ym90dG9tOjEsbWlkZGxlOi41fVtzXXx8MCl9KX12YXIgaD10KCJkMyIpLGY9dCgiLi4vLi4vcGxvdGx5IiksZD10KCIuLi8uLi9wbG90cy9wbG90cyIpLHA9dCgiLi4vY29sb3IiKSxnPXQoIi4uL2RyYXdpbmciKSx2PXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLG09dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIikseT10KCIuLi9sZWdlbmQvYW5jaG9yX3V0aWxzIiksYj10KCIuL2NvbnN0YW50cyIpLHg9dCgiLi9nZXRfdXBkYXRlX29iamVjdCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5faW5mb2xheWVyLnNlbGVjdEFsbCgiLnJhbmdlc2VsZWN0b3IiKS5kYXRhKG4odCksaSk7ci5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInJhbmdlc2VsZWN0b3IiLCEwKSxyLmV4aXQoKS5yZW1vdmUoKSxyLnN0eWxlKHtjdXJzb3I6InBvaW50ZXIiLCJwb2ludGVyLWV2ZW50cyI6ImFsbCJ9KSxyLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9aC5zZWxlY3QodGhpcyksbj1lLGk9bi5yYW5nZXNlbGVjdG9yLHM9ci5zZWxlY3RBbGwoImcuYnV0dG9uIikuZGF0YShpLmJ1dHRvbnMpO3MuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJidXR0b24iLCEwKSxzLmV4aXQoKS5yZW1vdmUoKSxzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9aC5zZWxlY3QodGhpcykscz14KG4sZSk7ZS5pc0FjdGl2ZT1vKG4sZSxzKSxyLmNhbGwoYSxpLGUpLHIuY2FsbChsLGksZSksci5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dC5fZHJhZ2dlZHx8Zi5yZWxheW91dCh0LHMpfSksci5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe2UuaXNIb3ZlcmVkPSEwLHIuY2FsbChhLGksZSl9KSxyLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtlLmlzSG92ZXJlZD0hMSxyLmNhbGwoYSxpLGUpfSl9KSx1KHQscyxpLG4uX25hbWUpLHIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraS5seCsiLCIraS5seSsiKSIpfSl9fSx7Ii4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6Mzg0LCIuLi8uLi9wbG90bHkiOjM5MCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjozOTUsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4uL2NvbG9yIjozMDEsIi4uL2RyYXdpbmciOjMxOSwiLi4vbGVnZW5kL2FuY2hvcl91dGlscyI6MzI4LCIuL2NvbnN0YW50cyI6MzQyLCIuL2dldF91cGRhdGVfb2JqZWN0IjozNDUsZDM6NzB9XSwzNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByLG49dC5yYW5nZSxvPW5ldyBEYXRlKG5bMV0pLGE9ZS5zdGVwLHM9ZS5jb3VudDtzd2l0Y2goZS5zdGVwbW9kZSl7Y2FzZSJiYWNrd2FyZCI6cj1pLnRpbWVbYV0ub2Zmc2V0KG8sLXMpLmdldFRpbWUoKTticmVhaztjYXNlInRvZGF0ZSI6dmFyIGw9aS50aW1lW2FdLm9mZnNldChvLC0ocy0xKSk7cj1pLnRpbWVbYV0uZmxvb3IobCkuZ2V0VGltZSgpfXZhciBjPW5bMV07cmV0dXJuW3IsY119dmFyIGk9dCgiZDMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9uYW1lLGk9e307aWYoImFsbCI9PT1lLnN0ZXApaVtyKyIuYXV0b3JhbmdlIl09ITA7ZWxzZXt2YXIgbz1uKHQsZSk7aVtyKyIucmFuZ2VbMF0iXT1vWzBdLGlbcisiLnJhbmdlWzFdIl09b1sxXX1yZXR1cm4gaX19LHtkMzo3MH1dLDM0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksci5zdXBwbHlMYXlvdXREZWZhdWx0cz10KCIuL2RlZmF1bHRzIiksci5kcmF3PXQoIi4vZHJhdyIpfSx7Ii4vYXR0cmlidXRlcyI6MzQwLCIuL2RlZmF1bHRzIjozNDMsIi4vZHJhdyI6MzQ0fV0sMzQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om4uYmFja2dyb3VuZH0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om4uZGVmYXVsdExpbmV9LGJvcmRlcndpZHRoOnt2YWxUeXBlOiJpbnRlZ2VyIixkZmx0OjAsbWluOjB9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixkZmx0Oi4xNSxtaW46MCxtYXg6MX0sdmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH19fSx7Ii4uL2NvbG9yL2F0dHJpYnV0ZXMiOjMwMH1dLDM0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90bHkiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKS5zdmcsYT10KCIuL2hlbHBlcnMiKSxzPXQoIi4vcmFuZ2VfcGxvdCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbCh0LGUpe3Q9dHx8LSgxLzApLGU9ZXx8MS8wO3ZhciByPXUueGF4aXMucmFuZ2VbMF0sbj11LnhheGlzLnJhbmdlWzFdLGk9bi1yLG89KHQtcikvaSpkLGE9KGUtcikvaSpkO2MobyxhKX1mdW5jdGlvbiBjKGUscil7aWYoZT1pLmNvbnN0cmFpbihlLDAsZCkscj1pLmNvbnN0cmFpbihyLDAsZCksZT5yKXt2YXIgbz1yO3I9ZSxlPW99YS5zZXRBdHRyaWJ1dGVzKGIseyJkYXRhLW1pbiI6ZSwiZGF0YS1tYXgiOnJ9KSxhLnNldEF0dHJpYnV0ZXMoQyx7eDplLHdpZHRoOnItZX0pLGEuc2V0QXR0cmlidXRlcyh3LHt3aWR0aDplfSksYS5zZXRBdHRyaWJ1dGVzKEEse3g6cix3aWR0aDpkLXJ9KSxhLnNldEF0dHJpYnV0ZXMoayx7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIisoZS1nLTEpKyIpIn0pLGEuc2V0QXR0cmlidXRlcyhFLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK3IrIikifSk7dmFyIHM9dS54YXhpcy5yYW5nZVswXSxsPXUueGF4aXMucmFuZ2VbMV0sYz1sLXMsaD1lL2QqYytzLGY9ci9kKmMrczt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtuLnJlbGF5b3V0KHQsInhheGlzLnJhbmdlIixbaCxmXSl9KTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5yZWxheW91dCh0LCJ4YXhpcy5yYW5nZSIsW2gsZl0pfSwxNil9dmFyIHU9dC5fZnVsbExheW91dCxoPXUuX2luZm9sYXllci5zZWxlY3RBbGwoImcucmFuZ2Utc2xpZGVyIiksZj11LnhheGlzLnJhbmdlc2xpZGVyLGQ9dS5fc2l6ZS53LHA9KHUuaGVpZ2h0LXUubWFyZ2luLmItdS5tYXJnaW4udCkqZi50aGlja25lc3MsZz0yLHY9TWF0aC5mbG9vcihmLmJvcmRlcndpZHRoLzIpLG09dS5tYXJnaW4ubCx5PXUuaGVpZ2h0LXAtdS5tYXJnaW4uYjtlPWV8fDAscj1yfHxkO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLCJnIik7YS5zZXRBdHRyaWJ1dGVzKGIseyJjbGFzcyI6InJhbmdlLXNsaWRlciIsImRhdGEtbWluIjplLCJkYXRhLW1heCI6ciwicG9pbnRlci1ldmVudHMiOiJhbGwiLHRyYW5zZm9ybToidHJhbnNsYXRlKCIrbSsiLCIreSsiKSJ9KTt2YXIgeD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobywicmVjdCIpLF89Zi5ib3JkZXJ3aWR0aCUyPT09MD9mLmJvcmRlcndpZHRoOmYuYm9yZGVyd2lkdGgtMTthLnNldEF0dHJpYnV0ZXMoeCx7ZmlsbDpmLmJnY29sb3Isc3Ryb2tlOmYuYm9yZGVyY29sb3IsInN0cm9rZS13aWR0aCI6Zi5ib3JkZXJ3aWR0aCxoZWlnaHQ6cCtfLHdpZHRoOmQrXyx0cmFuc2Zvcm06InRyYW5zbGF0ZSgtIit2KyIsIC0iK3YrIikiLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pO3ZhciB3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLCJyZWN0Iik7YS5zZXRBdHRyaWJ1dGVzKHcse3g6MCx3aWR0aDplLGhlaWdodDpwLGZpbGw6InJnYmEoMCwwLDAsMC40KSJ9KTt2YXIgQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobywicmVjdCIpO2Euc2V0QXR0cmlidXRlcyhBLHt4OnIsd2lkdGg6ZC1yLGhlaWdodDpwLGZpbGw6InJnYmEoMCwwLDAsMC40KSJ9KTt2YXIgaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobywiZyIpLE09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8sInJlY3QiKSxUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLCJyZWN0Iik7YS5zZXRBdHRyaWJ1dGVzKGsse3RyYW5zZm9ybToidHJhbnNsYXRlKCIrKGUtZy0xKSsiKSJ9KSxhLnNldEF0dHJpYnV0ZXMoTSx7d2lkdGg6MTAsaGVpZ2h0OnAseDotNixmaWxsOiJ0cmFuc3BhcmVudCIsY3Vyc29yOiJjb2wtcmVzaXplIn0pLGEuc2V0QXR0cmlidXRlcyhULHt3aWR0aDpnLGhlaWdodDpwLzIseTpwLzQscng6MSxmaWxsOiJ3aGl0ZSIsc3Ryb2tlOiIjNjY2Iiwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KSxhLmFwcGVuZENoaWxkcmVuKGssW1QsTV0pO3ZhciBFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLCJnIiksTD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobywicmVjdCIpLFM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8sInJlY3QiKTthLnNldEF0dHJpYnV0ZXMoRSx7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIityKyIpIn0pLGEuc2V0QXR0cmlidXRlcyhMLHt3aWR0aDoxMCxoZWlnaHQ6cCx4Oi0yLGZpbGw6InRyYW5zcGFyZW50IixjdXJzb3I6ImNvbC1yZXNpemUifSksYS5zZXRBdHRyaWJ1dGVzKFMse3dpZHRoOmcsaGVpZ2h0OnAvMix5OnAvNCxyeDoxLGZpbGw6IndoaXRlIixzdHJva2U6IiM2NjYiLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pLGEuYXBwZW5kQ2hpbGRyZW4oRSxbUyxMXSk7dmFyIEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8sInJlY3QiKTthLnNldEF0dHJpYnV0ZXMoQyx7eDplLHdpZHRoOnItZSxoZWlnaHQ6cCxjdXJzb3I6ImV3LXJlc2l6ZSIsZmlsbDoidHJhbnNwYXJlbnQifSksYi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIGU9K3QuY2xpZW50WC1pO3N3aXRjaChuKXtjYXNlIEM6Yi5zdHlsZS5jdXJzb3I9ImV3LXJlc2l6ZSIsYygrcytlLCthK2UpO2JyZWFrO2Nhc2UgTTpiLnN0eWxlLmN1cnNvcj0iY29sLXJlc2l6ZSIsYygrYStlLCtzKTticmVhaztjYXNlIEw6Yi5zdHlsZS5jdXJzb3I9ImNvbC1yZXNpemUiLGMoK2EsK3MrZSk7YnJlYWs7ZGVmYXVsdDpiLnN0eWxlLmN1cnNvcj0iZXctcmVzaXplIixjKG8sbytlKX19ZnVuY3Rpb24gcigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixyKSxiLnN0eWxlLmN1cnNvcj0iYXV0byJ9dmFyIG49dC50YXJnZXQsaT10LmNsaWVudFgsbz1pLWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxhPWIuZ2V0QXR0cmlidXRlKCJkYXRhLW1pbiIpLHM9Yi5nZXRBdHRyaWJ1dGUoImRhdGEtbWF4Iik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHIpfSk7dmFyIFA9cyh0LGQscCk7YS5hcHBlbmRDaGlsZHJlbihiLFt4LFAsdyxBLEMsayxFXSksaC5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gZi5zZXRSYW5nZT1sLGJ9KX19LHsiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjM2MiwiLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RseSI6MzkwLCIuL2hlbHBlcnMiOjM1MSwiLi9yYW5nZV9wbG90IjozNTN9XSwzNDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPXtsaW5lYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGxvZzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5sb2coMTApfSxkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBuLmRhdGVUaW1lMm1zKHQpfSxjYXRlZ29yeTpmdW5jdGlvbih0LGUpe3JldHVybiBlfX19LHsiLi4vLi4vbGliIjozNzN9XSwzNTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gYSh0LGUpe3JldHVybiBuLmNvZXJjZShzLGwsaSx0LGUpfWlmKHRbcl0ucmFuZ2VzbGlkZXIpe3ZhciBzPSJvYmplY3QiPT10eXBlb2YgdFtyXS5yYW5nZXNsaWRlcj90W3JdLnJhbmdlc2xpZGVyOnt9LGw9ZVtyXS5yYW5nZXNsaWRlcj17fTthKCJ2aXNpYmxlIiksYSgidGhpY2tuZXNzIiksYSgiYmdjb2xvciIpLGEoImJvcmRlcmNvbG9yIiksYSgiYm9yZGVyd2lkdGgiKSxsLnZpc2libGUmJm8uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj1lW3RdfHx7fTtyLmZpeGVkcmFuZ2U9ITAsZVt0XT1yfSl9fX0seyIuLi8uLi9saWIiOjM3MywiLi9hdHRyaWJ1dGVzIjozNDd9XSwzNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5zZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIGUpdC5zZXRBdHRyaWJ1dGUocixlW3JdKX0sci5hcHBlbmRDaGlsZHJlbj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0mJnQuYXBwZW5kQ2hpbGQoZVtyXSl9fSx7fV0sMzUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe2lmKHQuX2Z1bGxMYXlvdXQueGF4aXMpe3ZhciBuPXQuX2Z1bGxMYXlvdXQsYT1uLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCJnLnJhbmdlLXNsaWRlciIpLHM9bi54YXhpcy5yYW5nZXNsaWRlcjtpZighc3x8IXMudmlzaWJsZSlyZXR1cm4gYS5kYXRhKFtdKS5leGl0KCkucmVtb3ZlKCksdm9pZCBpLmF1dG9NYXJnaW4odCwicmFuZ2Utc2xpZGVyIik7dmFyIGw9KG4uaGVpZ2h0LW4ubWFyZ2luLmItbi5tYXJnaW4udCkqcy50aGlja25lc3MsYz1NYXRoLmZsb29yKHMuYm9yZGVyd2lkdGgvMik7MCE9PWFbMF0ubGVuZ3RofHxuLl9oYXNHTDJEfHxvKHQsZSxyKTt2YXIgdT1uLnhheGlzLl9ib3VuZGluZ0JveD9uLnhheGlzLl9ib3VuZGluZ0JveC5oZWlnaHQ6MDtpLmF1dG9NYXJnaW4odCwicmFuZ2Utc2xpZGVyIix7eDowLHk6MCxsOjAscjowLHQ6MCxiOmwrbi5tYXJnaW4uYit1LHBhZDoxNSsyKmN9KX19dmFyIGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4vY3JlYXRlX3NsaWRlciIpLGE9dCgiLi9kZWZhdWx0cyIpO2UuZXhwb3J0cz17ZHJhdzpuLHN1cHBseUxheW91dERlZmF1bHRzOmF9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vY3JlYXRlX3NsaWRlciI6MzQ4LCIuL2RlZmF1bHRzIjozNTB9XSwzNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuKXt2YXIgcyxjLHU7aWYodC5saW5lKXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhsLCJwYXRoIik7dmFyIGg9by5zbW9vdGhvcGVuKGUsdC5saW5lLnNtb290aGluZ3x8MCk7YS5zZXRBdHRyaWJ1dGVzKHMse2Q6aCxmaWxsOiJub25lIixzdHJva2U6dC5saW5lP3QubGluZS5jb2xvcjoidHJhbnNwYXJlbnQiLCJzdHJva2Utd2lkdGgiOnQubGluZS53aWR0aC8yfHwxLG9wYWNpdHk6MX0pfWlmKHQubWFya2VyKXtjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhsLCJnIik7dmFyIGY9ZS5tYXAoZnVuY3Rpb24oZSxyKXt2YXIgbixvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhsLCJnIikscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobCwicGF0aCIpO3JldHVybiBuPUFycmF5LmlzQXJyYXkodC5tYXJrZXIuc2l6ZSk/Im51bWJlciI9PXR5cGVvZiB0Lm1hcmtlci5zaXplW3JdP01hdGgubWF4KHQubWFya2VyLnNpemVbcl0vKHQubWFya2VyLnNpemVyZWZ8fDEpLzE1LDApOjA6TWF0aC5tYXgodC5tYXJrZXIuc2l6ZS8xNSwyKSxhLnNldEF0dHJpYnV0ZXMocyx7ZDppW3QubWFya2VyLnN5bWJvbF0uZihuKSxmaWxsOnQubWFya2VyLmNvbG9yLHN0cm9rZTp0Lm1hcmtlci5saW5lLmNvbG9yLCJzdHJva2Utd2lkdGgiOnQubWFya2VyLmxpbmUud2lkdGgsb3BhY2l0eTp0Lm1hcmtlci5vcGFjaXR5fSksYS5zZXRBdHRyaWJ1dGVzKG8se3RyYW5zZm9ybToidHJhbnNsYXRlKCIrZVswXSsiLCIrZVsxXSsiKSJ9KSxvLmFwcGVuZENoaWxkKHMpLG99KTthLmFwcGVuZENoaWxkcmVuKGMsZil9aWYoIm5vbmUiIT09dC5maWxsKXtzd2l0Y2godT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobCwicGF0aCIpLHQuZmlsbCl7Y2FzZSJ0b3plcm95IjplLnVuc2hpZnQoW2VbMF1bMF0sbl0pLGUucHVzaChbZVtlLmxlbmd0aC0xXVswXSxuXSk7YnJlYWs7Y2FzZSJ0b3plcm94IjplLnVuc2hpZnQoWzAsZVtlLmxlbmd0aC0xXVsxXV0pO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5sb2coIkZpbGwgdHlwZSAiK3QuZmlsbCsiIG5vdCBzdXBwb3J0ZWQgZm9yIHJhbmdlIHNsaWRlciEgKHlldC4uLikiKX12YXIgZD1vLnNtb290aG9wZW4oZSx0LmxpbmUuc21vb3RoaW5nfHwwKTthLnNldEF0dHJpYnV0ZXModSx7ZDpkLGZpbGw6dC5maWxsY29sb3J8fCJ0cmFuc3BhcmVudCJ9KX1yZXR1cm5bcyxjLHVdfXZhciBpPXQoIi4uL2RyYXdpbmcvc3ltYm9sX2RlZnMiKSxvPXQoIi4uL2RyYXdpbmciKSxhPXQoIi4vaGVscGVycyIpLHM9dCgiLi9kYXRhX3Byb2Nlc3NvcnMiKSxsPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIikuc3ZnO2UuZXhwb3J0cz1mdW5jdGlvbiBjKHQsZSxyKXt2YXIgaT10Ll9mdWxsRGF0YSxvPXQuX2Z1bGxMYXlvdXQueGF4aXMsdT10Ll9mdWxsTGF5b3V0LnlheGlzLGg9by5yYW5nZVswXSxmPW8ucmFuZ2VbMV0sZD11LnJhbmdlWzBdLHA9dS5yYW5nZVsxXSxnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhsLCJwYXRoIik7Zy5zZXRBdHRyaWJ1dGUoImQiLFsiTTAsMCIsZSsiLDAiLGUrIiwiK3IsIjAsIityLCJaIl0uam9pbigiICIpKTt2YXIgdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobCwiY2xpcFBhdGgiKTt2LnNldEF0dHJpYnV0ZSgiaWQiLCJyYW5nZS1jbGlwLXBhdGgiKSx2LmFwcGVuZENoaWxkKGcpO3ZhciBtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhsLCJkZWZzIik7bS5hcHBlbmRDaGlsZCh2KTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobCwiZyIpO2Muc2V0QXR0cmlidXRlKCJjbGlwLXBhdGgiLCJ1cmwoI3JhbmdlLWNsaXAtcGF0aCkiKSxjLmFwcGVuZENoaWxkKG0pO2Zvcih2YXIgeT1zW3QuX2Z1bGxMYXlvdXQueGF4aXMudHlwZXx8ImNhdGVnb3J5Il0sYj1zW3QuX2Z1bGxMYXlvdXQueWF4aXMudHlwZXx8ImNhdGVnb3J5Il0seD1bInNjYXR0ZXIiXSxfPTA7XzxpLmxlbmd0aDtfKyspe3ZhciB3PWlbX10sQT1bXTtpZih4LmluZGV4T2Yody50eXBlKTwwKWNvbnNvbGUubG9nKCJUcmFjZSB0eXBlICIrdy50eXBlKyIgbm90IHN1cHBvcnRlZCBmb3IgcmFuZ2Ugc2xpZGVyISIpO2Vsc2V7Zm9yKHZhciBrPTA7azx3LngubGVuZ3RoO2srKyl7dmFyIE09eSh3Lnhba10sayksVD1iKHcueVtrXSxrKSxFPWUqKE0taCkvKGYtaCksTD1yKigxLShULWQpLyhwLWQpKTtBLnB1c2goW0UsTF0pfWEuYXBwZW5kQ2hpbGRyZW4oYyxuKHcsQSxlLHIpKX19cmV0dXJuIGN9fSx7Ii4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjozNjIsIi4uL2RyYXdpbmciOjMxOSwiLi4vZHJhd2luZy9zeW1ib2xfZGVmcyI6MzIwLCIuL2RhdGFfcHJvY2Vzc29ycyI6MzQ5LCIuL2hlbHBlcnMiOjM1MX1dLDM1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9hbm5vdGF0aW9ucy9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxhPWkubGluZTtlLmV4cG9ydHM9e19pc0xpbmtlZFRvQXJyYXk6ITAsdHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2lyY2xlIiwicmVjdCIsInBhdGgiLCJsaW5lIl19LHhyZWY6byh7fSxuLnhyZWYse30pLHgwOnt2YWxUeXBlOiJhbnkifSx4MTp7dmFsVHlwZToiYW55In0seXJlZjpvKHt9LG4ueXJlZix7fSkseTA6e3ZhbFR5cGU6ImFueSJ9LHkxOnt2YWxUeXBlOiJhbnkifSxwYXRoOnt2YWxUeXBlOiJzdHJpbmcifSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0sbGluZTp7Y29sb3I6YS5jb2xvcix3aWR0aDphLndpZHRoLGRhc2g6YS5kYXNofSxmaWxsY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsMCwwLDApIn19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjM2OSwiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyI6NTI4LCIuLi9hbm5vdGF0aW9ucy9hdHRyaWJ1dGVzIjoyOTh9XSwzNTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Z1bmN0aW9uIHIoZSxyKXtyZXR1cm4gYy5MaWIuY29lcmNlKHQsbixoLmxheW91dEF0dHJpYnV0ZXMsZSxyKX12YXIgbj17fTtyKCJvcGFjaXR5IikscigiZmlsbGNvbG9yIikscigibGluZS5jb2xvciIpLHIoImxpbmUud2lkdGgiKSxyKCJsaW5lLmRhc2giKTtmb3IodmFyIGk9dC5wYXRoPyJwYXRoIjoicmVjdCIsYT1yKCJ0eXBlIixpKSxzPVsieCIsInkiXSxsPTA7Mj5sO2wrKyl7dmFyIHU9c1tsXSxmPXtfZnVsbExheW91dDplfSxkPWMuQXhlcy5jb2VyY2VSZWYodCxuLGYsdSk7aWYoInBhdGgiIT09YSl7dmFyIHA9LjI1LGc9Ljc1O2lmKCJwYXBlciIhPT1kKXt2YXIgdj1jLkF4ZXMuZ2V0RnJvbUlkKGYsZCksbT1vKHYpO3A9bSh2LnJhbmdlWzBdK3AqKHYucmFuZ2VbMV0tdi5yYW5nZVswXSkpLGc9bSh2LnJhbmdlWzBdK2cqKHYucmFuZ2VbMV0tdi5yYW5nZVswXSkpfXIodSsiMCIscCkscih1KyIxIixnKX19cmV0dXJuInBhdGgiPT09YT9yKCJwYXRoIik6Yy5MaWIubm9uZU9yQWxsKHQsbixbIngwIiwieDEiLCJ5MCIsInkxIl0pLG59ZnVuY3Rpb24gaSh0KXtyZXR1cm4iY2F0ZWdvcnkiPT09dC50eXBlP3QuYzJsOnQuZDJsfWZ1bmN0aW9uIG8odCl7cmV0dXJuImNhdGVnb3J5Ij09PXQudHlwZT90LmwyYzp0LmwyZH1mdW5jdGlvbiBhKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlLnJlcGxhY2UoIl8iLCIgIikpfX1mdW5jdGlvbiBzKHQsZSl7dmFyIHIsbixvLHMsbD1lLnR5cGUsdT1jLkF4ZXMuZ2V0RnJvbUlkKHQsZS54cmVmKSxmPWMuQXhlcy5nZXRGcm9tSWQodCxlLnlyZWYpLGQ9dC5fZnVsbExheW91dC5fc2l6ZTtpZih1PyhyPWkodSksbj1mdW5jdGlvbih0KXtyZXR1cm4gdS5fb2Zmc2V0K3UubDJwKHIodCwhMCkpfSk6bj1mdW5jdGlvbih0KXtyZXR1cm4gZC5sK2Qudyp0fSxmPyhvPWkoZikscz1mdW5jdGlvbih0KXtyZXR1cm4gZi5fb2Zmc2V0K2YubDJwKG8odCwhMCkpfSk6cz1mdW5jdGlvbih0KXtyZXR1cm4gZC50K2QuaCooMS10KX0sInBhdGgiPT09bClyZXR1cm4gdSYmImRhdGUiPT09dS50eXBlJiYobj1hKG4pKSxmJiYiZGF0ZSI9PT1mLnR5cGUmJihzPWEocykpLGguY29udmVydFBhdGgoZS5wYXRoLG4scyk7dmFyIHA9bihlLngwKSxnPW4oZS54MSksdj1zKGUueTApLG09cyhlLnkxKTtpZigibGluZSI9PT1sKXJldHVybiJNIitwKyIsIit2KyJMIitnKyIsIittO2lmKCJyZWN0Ij09PWwpcmV0dXJuIk0iK3ArIiwiK3YrIkgiK2crIlYiK20rIkgiK3ArIloiO3ZhciB5PShwK2cpLzIsYj0odittKS8yLHg9TWF0aC5hYnMoeS1wKSxfPU1hdGguYWJzKGItdiksdz0iQSIreCsiLCIrXyxBPXkreCsiLCIrYixrPXkrIiwiKyhiLV8pO3JldHVybiJNIitBK3crIiAwIDEsMSAiK2srdysiIDAgMCwxICIrQSsiWiJ9ZnVuY3Rpb24gbCh0LGUscixuLGkpe3ZhciBvPSJjYXRlZ29yeSI9PT10LnR5cGU/TnVtYmVyOnQuZDJjO2lmKHZvaWQgMCE9PWUpcmV0dXJuW28oZSksbyhyKV07aWYobil7dmFyIHMsbCxjLHUsaCxwPTEvMCxnPS0oMS8wKSx2PW4ubWF0Y2goZik7Zm9yKCJkYXRlIj09PXQudHlwZSYmKG89YShvKSkscz0wO3M8di5sZW5ndGg7cysrKWw9dltzXSxjPWlbbC5jaGFyQXQoMCldLmRyYXduLHZvaWQgMCE9PWMmJih1PXZbc10uc3Vic3RyKDEpLm1hdGNoKGQpLCF1fHx1Lmxlbmd0aDxjfHwoaD1vKHVbY10pLHA+aCYmKHA9aCksaD5nJiYoZz1oKSkpO3JldHVybiBnPj1wP1twLGddOnZvaWQgMH19dmFyIGM9dCgiLi4vLi4vcGxvdGx5IiksdT10KCJmYXN0LWlzbnVtZXJpYyIpLGg9ZS5leHBvcnRzPXt9O2gubGF5b3V0QXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxoLnN1cHBseUxheW91dERlZmF1bHRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuc2hhcGVzfHxbXSxpPWUuc2hhcGVzPVtdLG89MDtvPHIubGVuZ3RoO28rKylpLnB1c2gobihyW29dfHx7fSxlKSl9LGguZHJhd0FsbD1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2UuX3NoYXBlbGF5ZXIuc2VsZWN0QWxsKCJwYXRoIikucmVtb3ZlKCk7Zm9yKHZhciByPTA7cjxlLnNoYXBlcy5sZW5ndGg7cisrKWguZHJhdyh0LHIpfSxoLmFkZD1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LnNoYXBlcy5sZW5ndGg7Yy5yZWxheW91dCh0LCJzaGFwZXNbIitlKyJdIiwiYWRkIil9LGguZHJhdz1mdW5jdGlvbih0LGUscixhKXt2YXIgbCxmPXQubGF5b3V0LGQ9dC5fZnVsbExheW91dDtpZighdShlKXx8LTE9PT1lKXtpZighZSYmQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gZi5zaGFwZXM9YSxoLnN1cHBseUxheW91dERlZmF1bHRzKGYsZCksdm9pZCBoLmRyYXdBbGwodCk7aWYoInJlbW92ZSI9PT1hKXJldHVybiBkZWxldGUgZi5zaGFwZXMsZC5zaGFwZXM9W10sdm9pZCBoLmRyYXdBbGwodCk7aWYociYmImFkZCIhPT1hKXtmb3IobD0wO2w8ZC5zaGFwZXMubGVuZ3RoO2wrKyloLmRyYXcodCxsLHIsYSk7cmV0dXJufWU9ZC5zaGFwZXMubGVuZ3RoLGQuc2hhcGVzLnB1c2goe30pfWlmKCFyJiZhKXtpZigicmVtb3ZlIj09PWEpe2ZvcihkLl9zaGFwZWxheWVyLnNlbGVjdEFsbCgnW2RhdGEtaW5kZXg9IicrZSsnIl0nKS5yZW1vdmUoKSxkLnNoYXBlcy5zcGxpY2UoZSwxKSxmLnNoYXBlcy5zcGxpY2UoZSwxKSxsPWU7bDxkLnNoYXBlcy5sZW5ndGg7bCsrKWQuX3NoYXBlbGF5ZXIuc2VsZWN0QWxsKCdbZGF0YS1pbmRleD0iJysobCsxKSsnIl0nKS5hdHRyKCJkYXRhLWluZGV4IixTdHJpbmcobCkpLGguZHJhdyh0LGwpO3JldHVybn1pZigiYWRkIj09PWF8fGMuTGliLmlzUGxhaW5PYmplY3QoYSkpe2Quc2hhcGVzLnNwbGljZShlLDAse30pO3ZhciBwPWMuTGliLmlzUGxhaW5PYmplY3QoYSk/Yy5MaWIuZXh0ZW5kRmxhdCh7fSxhKTp7dGV4dDoiTmV3IHRleHQifTtmb3IoZi5zaGFwZXM/Zi5zaGFwZXMuc3BsaWNlKGUsMCxwKTpmLnNoYXBlcz1bcF0sbD1kLnNoYXBlcy5sZW5ndGgtMTtsPmU7bC0tKWQuX3NoYXBlbGF5ZXIuc2VsZWN0QWxsKCdbZGF0YS1pbmRleD0iJysobC0xKSsnIl0nKS5hdHRyKCJkYXRhLWluZGV4IixTdHJpbmcobCkpLGguZHJhdyh0LGwpfX1kLl9zaGFwZWxheWVyLnNlbGVjdEFsbCgnW2RhdGEtaW5kZXg9IicrZSsnIl0nKS5yZW1vdmUoKTt2YXIgZz1mLnNoYXBlc1tlXTtpZihnKXt2YXIgdj17eHJlZjpnLnhyZWYseXJlZjpnLnlyZWZ9LG09e307InN0cmluZyI9PXR5cGVvZiByJiZyP21bcl09YTpjLkxpYi5pc1BsYWluT2JqZWN0KHIpJiYobT1yKTt2YXIgeT1PYmplY3Qua2V5cyhtKTtmb3IobD0wO2w8bS5sZW5ndGg7bCsrKXt2YXIgYj15W2xdO2MuTGliLm5lc3RlZFByb3BlcnR5KGcsYikuc2V0KG1bYl0pfXZhciB4PVsieDAiLCJ4MSIsInkwIiwieTEiXTtmb3IobD0wOzQ+bDtsKyspe3ZhciBfPXhbbF07aWYodm9pZCAwPT09bVtfXSYmdm9pZCAwIT09Z1tfXSl7dmFyIHcsQT1fLmNoYXJBdCgwKSxrPWMuQXhlcy5nZXRGcm9tSWQodCxjLkF4ZXMuY29lcmNlUmVmKHYse30sdCxBKSksTT1jLkF4ZXMuZ2V0RnJvbUlkKHQsYy5BeGVzLmNvZXJjZVJlZihnLHt9LHQsQSkpLFQ9Z1tfXTt2b2lkIDAhPT1tW0ErInJlZiJdJiYoaz8odz1pKGspKFQpLFQ9KHctay5yYW5nZVswXSkvKGsucmFuZ2VbMV0tay5yYW5nZVswXSkpOlQ9KFQtTS5kb21haW5bMF0pLyhNLmRvbWFpblsxXS1NLmRvbWFpblswXSksTT8odz1NLnJhbmdlWzBdK1QqKE0ucmFuZ2VbMV0tTS5yYW5nZVswXSksVD1vKE0pKHcpKTpUPWsuZG9tYWluWzBdK1QqKGsuZG9tYWluWzFdLWsuZG9tYWluWzBdKSksZ1tfXT1UfX12YXIgRT1uKGcsZCk7ZC5zaGFwZXNbZV09RTt2YXIgTD17ImRhdGEtaW5kZXgiOlN0cmluZyhlKSwiZmlsbC1ydWxlIjoiZXZlbm9kZCIsZDpzKHQsRSl9LFM9KEUueHJlZitFLnlyZWYpLnJlcGxhY2UoL3BhcGVyL2csIiIpLEM9RS5saW5lLndpZHRoP0UubGluZS5jb2xvcjoicmdiYSgwLDAsMCwwKSIsUD1kLl9zaGFwZWxheWVyLmFwcGVuZCgicGF0aCIpLmF0dHIoTCkuc3R5bGUoIm9wYWNpdHkiLEUub3BhY2l0eSkuY2FsbChjLkNvbG9yLnN0cm9rZSxDKS5jYWxsKGMuQ29sb3IuZmlsbCxFLmZpbGxjb2xvcikuY2FsbChjLkRyYXdpbmcuZGFzaExpbmUsRS5saW5lLmRhc2gsRS5saW5lLndpZHRoKTtTJiZQLmNhbGwoYy5EcmF3aW5nLnNldENsaXBVcmwsImNsaXAiK2QuX3VpZCtTKX19O3ZhciBmPS9bTUxIVlFDVFNaXVteTUxIVlFDVFNaXSovZyxkPS9bXlxzLF0rL2cscD17TTp7MDohMCxkcmF3bjowfSxMOnswOiEwLGRyYXduOjB9LEg6ezA6ITAsZHJhd246MH0sVjp7fSxROnswOiEwLDI6ITAsZHJhd246Mn0sQzp7MDohMCwyOiEwLDQ6ITAsZHJhd246NH0sVDp7MDohMCxkcmF3bjowfSxTOnswOiEwLDI6ITAsZHJhd246Mn0sWjp7fX0sZz17TTp7MTohMCxkcmF3bjoxfSxMOnsxOiEwLGRyYXduOjF9LEg6e30sVjp7MDohMCxkcmF3bjowfSxROnsxOiEwLDM6ITAsZHJhd246M30sQzp7MTohMCwzOiEwLDU6ITAsZHJhd246NX0sVDp7MTohMCxkcmF3bjoxfSxTOnsxOiEwLDM6ITAsZHJhd246NX0sWjp7fX0sdj17TToyLEw6MixIOjEsVjoxLFE6NCxDOjYsVDoyLFM6NCxaOjB9O2guY29udmVydFBhdGg9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0LnJlcGxhY2UoZixmdW5jdGlvbih0KXt2YXIgbj0wLGk9dC5jaGFyQXQoMCksbz1wW2ldLGE9Z1tpXSxzPXZbaV0sbD10LnN1YnN0cigxKS5yZXBsYWNlKGQsZnVuY3Rpb24odCl7CnJldHVybiBvW25dP3Q9ZSh0KTphW25dJiYodD1yKHQpKSxuKyssbj5zJiYodD0iWCIpLHR9KTtyZXR1cm4gbj5zJiYobD1sLnJlcGxhY2UoL1tccyxdKlguKi8sIiIpLGNvbnNvbGUubG9nKCJpZ25vcmluZyBleHRyYSBwYXJhbXMgaW4gc2VnbWVudCAiK3QpKSxpK2x9KX0saC5jYWxjQXV0b3JhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG8sYT10Ll9mdWxsTGF5b3V0LHM9YS5zaGFwZXM7aWYocy5sZW5ndGgmJnQuX2Z1bGxEYXRhLmxlbmd0aClmb3IoZT0wO2U8cy5sZW5ndGg7ZSsrKXI9c1tlXSxuPXIubGluZS53aWR0aC8yLCJwYXBlciIhPT1yLnhyZWYmJihpPWMuQXhlcy5nZXRGcm9tSWQodCxyLnhyZWYpLG89bChpLHIueDAsci54MSxyLnBhdGgscCksbyYmYy5BeGVzLmV4cGFuZChpLG8se3BwYWQ6bn0pKSwicGFwZXIiIT09ci55cmVmJiYoaT1jLkF4ZXMuZ2V0RnJvbUlkKHQsci55cmVmKSxvPWwoaSxyLnkwLHIueTEsci5wYXRoLGcpLG8mJmMuQXhlcy5leHBhbmQoaSxvLHtwcGFkOm59KSl9fSx7Ii4uLy4uL3Bsb3RseSI6MzkwLCIuL2F0dHJpYnV0ZXMiOjM1NCwiZmFzdC1pc251bWVyaWMiOjc0fV0sMzU2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksaT10KCJmYXN0LWlzbnVtZXJpYyIpLG89dCgiLi4vLi4vcGxvdGx5IiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi9kcmF3aW5nIiksYz10KCIuLi9jb2xvciIpLHU9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksaD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxmPWUuZXhwb3J0cz17fTtmLmRyYXc9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQpe3Muc3luY09yQXN5bmMoW2YsZF0sdCl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gZS5hdHRyKCJ0cmFuc2Zvcm0iLFI/InJvdGF0ZSgiK1tSLnJvdGF0ZSxtLngsbS55XSsiKSB0cmFuc2xhdGUoMCwgIitSLm9mZnNldCsiKSI6bnVsbCksZS5zdHlsZSh7ImZvbnQtZmFtaWx5IjpDLCJmb250LXNpemUiOm4ucm91bmQoUCwyKSsicHgiLGZpbGw6Yy5yZ2Ioeiksb3BhY2l0eTpOKmMub3BhY2l0eSh6KSwiZm9udC13ZWlnaHQiOmEuZm9udFdlaWdodH0pLmF0dHIobSkuY2FsbCh1LmNvbnZlcnRUb1RzcGFucykuYXR0cihtKSxlLnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLmF0dHIobSksYS5wcmV2aW91c1Byb21pc2VzKHQpfWZ1bmN0aW9uIGQodCl7dmFyIGU9bi5zZWxlY3QodC5ub2RlKCkucGFyZW50Tm9kZSk7aWYoTyYmTy5zZWxlY3Rpb24mJk8uc2lkZSYmRil7ZS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpO3ZhciByPTAsbz17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iix0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3AifVtPLnNpZGVdLGE9LTEhPT1bImxlZnQiLCJ0b3AiXS5pbmRleE9mKE8uc2lkZSk/LTE6MSxjPWkoTy5wYWQpP08ucGFkOjIsdT1sLmJCb3goZS5ub2RlKCkpLGg9e2xlZnQ6MCx0b3A6MCxyaWdodDp5LndpZHRoLGJvdHRvbTp5LmhlaWdodH0sZj1fP3kud2lkdGg6KGhbTy5zaWRlXS11W08uc2lkZV0pKigibGVmdCI9PT1PLnNpZGV8fCJ0b3AiPT09Ty5zaWRlPy0xOjEpO2lmKDA+Zj9yPWY6KHUubGVmdC09Ty5vZmZzZXRMZWZ0LHUucmlnaHQtPU8ub2Zmc2V0TGVmdCx1LnRvcC09Ty5vZmZzZXRUb3AsdS5ib3R0b20tPU8ub2Zmc2V0VG9wLE8uc2VsZWN0aW9uLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1sLmJCb3godGhpcyk7cy5iQm94SW50ZXJzZWN0KHUsdCxjKSYmKHI9TWF0aC5tYXgocixhKih0W08uc2lkZV0tdVtvXSkrYykpfSkscj1NYXRoLm1pbihmLHIpKSxyPjB8fDA+Zil7dmFyIGQ9e2xlZnQ6Wy1yLDBdLHJpZ2h0OltyLDBdLHRvcDpbMCwtcl0sYm90dG9tOlswLHJdfVtPLnNpZGVdO2UuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZCsiKSIpfX19ZnVuY3Rpb24gcCgpe049MCxqPSEwLEY9Vix5Ll9pbmZvbGF5ZXIuc2VsZWN0KCIuIitlKS5hdHRyKHsiZGF0YS11bmZvcm1hdHRlZCI6Rn0pLnRleHQoRikub24oIm1vdXNlb3Zlci5vcGFjaXR5IixmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigxMDApLnN0eWxlKCJvcGFjaXR5IiwxKX0pLm9uKCJtb3VzZW91dC5vcGFjaXR5IixmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigxZTMpLnN0eWxlKCJvcGFjaXR5IiwwKX0pfXZhciBnLHYsbSx5PXQuX2Z1bGxMYXlvdXQsYj15Ll9zaXplLHg9ZS5jaGFyQXQoMCksXz0iY2IiPT09ZS5zdWJzdHIoMSwyKTtpZihfKXt2YXIgdz1lLnN1YnN0cigzKS5yZXBsYWNlKCJ0aXRsZSIsIiIpO3QuX2Z1bGxEYXRhLnNvbWUoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZS51aWQ9PT13PyhnPXIsdj10LmNhbGNkYXRhW3JdWzBdLnQuY2IuYXhpcywhMCk6dm9pZCAwfSl9ZWxzZSB2PXlbaC5pZDJuYW1lKGUucmVwbGFjZSgidGl0bGUiLCIiKSldfHx5O3ZhciBBLGssTSxULEUsTD12PT09eT8idGl0bGUiOnYuX25hbWUrIi50aXRsZSIsUz1fPyJjb2xvcnNjYWxlIjoodi5faWR8fHgpLnRvVXBwZXJDYXNlKCkrIiBheGlzIixDPXYudGl0bGVmb250LmZhbWlseSxQPXYudGl0bGVmb250LnNpemUsej12LnRpdGxlZm9udC5jb2xvcixSPSIiLE89e3NlbGVjdGlvbjpuLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcuIit2Ll9pZCsidGljayIpLHNpZGU6di5zaWRlfSxJPV8/MDoxLjU7Xz8oTy5vZmZzZXRMZWZ0PWIubCxPLm9mZnNldFRvcD1iLnQpOk8uc2VsZWN0aW9uLnNpemUoKSYmKEU9bi5zZWxlY3QoTy5zZWxlY3Rpb24ubm9kZSgpLnBhcmVudE5vZGUpLmF0dHIoInRyYW5zZm9ybSIpLm1hdGNoKC90cmFuc2xhdGVcKChbLVwuXGRdKyksKFstXC5cZF0rKVwpLyksRSYmKE8ub2Zmc2V0TGVmdD0rRVsxXSxPLm9mZnNldFRvcD0rRVsyXSkpLF8mJnYudGl0bGVzaWRlPyhBPWIubCt2LnRpdGxleCpiLncsaz1iLnQrKDEtdi50aXRsZXkpKmIuaCsoInRvcCI9PT12LnRpdGxlc2lkZT8zKy43NSpQOi0zLS4yNSpQKSxtPXt4OkEseTprLCJ0ZXh0LWFuY2hvciI6InN0YXJ0In0sTz17fSxlPSJoIitlKToieCI9PT14PyhNPXYsVD0iZnJlZSI9PT1NLmFuY2hvcj97X29mZnNldDpiLnQrKDEtKE0ucG9zaXRpb258fDApKSpiLmgsX2xlbmd0aDowfTpoLmdldEZyb21JZCh0LE0uYW5jaG9yKSxBPU0uX29mZnNldCtNLl9sZW5ndGgvMixrPVQuX29mZnNldCsoInRvcCI9PT1NLnNpZGU/LTEwLVAqKEkrKE0uc2hvd3RpY2tsYWJlbHM/MTowKSk6VC5fbGVuZ3RoKzEwK1AqKEkrKE0uc2hvd3RpY2tsYWJlbHM/MS41Oi41KSkpLE0ucmFuZ2VzbGlkZXImJk0ucmFuZ2VzbGlkZXIudmlzaWJsZSYmTS5fYm91bmRpbmdCb3gmJihrKz0oeS5oZWlnaHQteS5tYXJnaW4uYi15Lm1hcmdpbi50KSpNLnJhbmdlc2xpZGVyLnRoaWNrbmVzcytNLl9ib3VuZGluZ0JveC5oZWlnaHQpLG09e3g6QSx5OmssInRleHQtYW5jaG9yIjoibWlkZGxlIn0sTy5zaWRlfHwoTy5zaWRlPSJib3R0b20iKSk6InkiPT09eD8oVD12LE09ImZyZWUiPT09VC5hbmNob3I/e19vZmZzZXQ6Yi5sKyhULnBvc2l0aW9ufHwwKSpiLncsX2xlbmd0aDowfTpoLmdldEZyb21JZCh0LFQuYW5jaG9yKSxrPVQuX29mZnNldCtULl9sZW5ndGgvMixBPU0uX29mZnNldCsoInJpZ2h0Ij09PVQuc2lkZT9NLl9sZW5ndGgrMTArUCooSSsoVC5zaG93dGlja2xhYmVscz8xOi41KSk6LTEwLVAqKEkrKFQuc2hvd3RpY2tsYWJlbHM/LjU6MCkpKSxtPXt4OkEseTprLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9LFI9e3JvdGF0ZToiLTkwIixvZmZzZXQ6MH0sTy5zaWRlfHwoTy5zaWRlPSJsZWZ0IikpOihTPSJQbG90IixQPXkudGl0bGVmb250LnNpemUsQT15LndpZHRoLzIsaz15Ll9zaXplLnQvMixtPXt4OkEseTprLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9LE89e30pO3ZhciBOPTEsaj0hMSxGPXYudGl0bGUudHJpbSgpOyIiPT09RiYmKE49MCksRi5tYXRjaCgvQ2xpY2sgdG8gZW50ZXIgLisgdGl0bGUvKSYmKE49LjIsaj0hMCk7dmFyIEQ7aWYoXyl7RD1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi4iK3YuX2lkLnN1YnN0cigxKSsiIC5jYnRpdGxlIik7dmFyIEI9ImgiPT09ZS5jaGFyQXQoMCk/ZS5zdWJzdHIoMSk6ImgiK2U7RC5zZWxlY3RBbGwoIi4iK0IrIiwuIitCKyItbWF0aC1ncm91cCIpLnJlbW92ZSgpfWVsc2UgRD15Ll9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuZy0iK2UpLmRhdGEoWzBdKSxELmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiZy0iK2UsITApO3ZhciBVPUQuc2VsZWN0QWxsKCJ0ZXh0IikuZGF0YShbMF0pO1UuZW50ZXIoKS5hcHBlbmQoInRleHQiKSxVLnRleHQoRikuYXR0cigiY2xhc3MiLGUpLFUuYXR0cih7ImRhdGEtdW5mb3JtYXR0ZWQiOkZ9KS5jYWxsKHIpO3ZhciBWPSJDbGljayB0byBlbnRlciAiK1MucmVwbGFjZSgvXGQrLywiIikrIiB0aXRsZSI7dC5fY29udGV4dC5lZGl0YWJsZT8oRnx8cCgpLFUuY2FsbCh1Lm1ha2VFZGl0YWJsZSkub24oImVkaXQiLGZ1bmN0aW9uKGUpe2lmKF8pe3ZhciByPXQuX2Z1bGxEYXRhW2ddO2EudHJhY2VJcyhyLCJtYXJrZXJDb2xvcnNjYWxlIik/by5yZXN0eWxlKHQsIm1hcmtlci5jb2xvcmJhci50aXRsZSIsZSxnKTpvLnJlc3R5bGUodCwiY29sb3JiYXIudGl0bGUiLGUsZyl9ZWxzZSBvLnJlbGF5b3V0KHQsTCxlKX0pLm9uKCJjYW5jZWwiLGZ1bmN0aW9uKCl7dGhpcy50ZXh0KHRoaXMuYXR0cigiZGF0YS11bmZvcm1hdHRlZCIpKS5jYWxsKHIpfSkub24oImlucHV0IixmdW5jdGlvbih0KXt0aGlzLnRleHQodHx8IiAiKS5hdHRyKG0pLnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLmF0dHIobSl9KSk6RiYmIUYubWF0Y2goL0NsaWNrIHRvIGVudGVyIC4rIHRpdGxlLyl8fFUucmVtb3ZlKCksVS5jbGFzc2VkKCJqcy1wbGFjZWhvbGRlciIsail9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjM4NCwiLi4vLi4vcGxvdGx5IjozOTAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6Mzk1LCIuLi8uLi9wbG90cy9wbG90cyI6NDM3LCIuLi9jb2xvciI6MzAxLCIuLi9kcmF3aW5nIjozMTksZDM6NzAsImZhc3QtaXNudW1lcmljIjo3NH1dLDM1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e0RaQToiYWxnZXJpYSIsQUdPOiJhbmdvbGEiLEVHWToiZWd5cHQiLEJHRDoiYmFuZ2xhZGVzaHxeKD89LiplYXN0KS4qcGFraT9zdGFuIixORVI6IlxcYm5pZ2VyKD8haWEpIixMSUU6ImxpZWNodGVuc3RlaW4iLE5BTToibmFtaWJpYSIsQkdSOiJidWxnYXJpYSIsQk9MOiJib2xpdmlhIixHSEE6ImdoYW5hfGdvbGQuP2NvYXN0IixDQ0s6IlxcYmNvY29zfGtlZWxpbmciLFBBSzoiXig/IS4qZWFzdCkuKnBha2k/c3RhbiIsQ1BWOiJ2ZXJkZSIsSk9SOiJqb3JkYW4iLExCUjoibGliZXJpYSIsTEJZOiJsaWJ5YSIsTVlTOiJtYWxheXNpYSIsSU9UOiJicml0aXNoLj9pbmRpYW4uP29jZWFuIixQUkk6InB1ZXJ0by4/cmljbyIsTVlUOiJtYXlvdHRlIixQUks6Il4oPz0uKmRlbW9jcmF0KS4qXFxia29yZWF8Xig/PS4qcGVvcGxlKS4qXFxia29yZWF8Xig/PS4qbm9ydGgpLipcXGJrb3JlYXxcXGJkXFwuP3BcXC4/clxcLj9rIixQU0U6InBhbGVzdGlufFxcYmdhemF8d2VzdC4/YmFuayIsVFpBOiJ0YW56YW5pYSIsQldBOiJib3Rzd2FuYXxiZWNodWFuYSIsS0hNOiJjYW1ib2RpYXxrYW1wdWNoZWF8a2htZXJ8XnBcXC4/clxcLj9rXFwuPyQiLFVNSToibWlub3IuP291dGx5aW5nLj9pcyIsVFRPOiJ0cmluaWRhZHx0b2JhZ28iLFBSWToicGFyYWd1YXkiLEhLRzoiaG9uZy4/a29uZyIsU0FVOiJcXGJzYVxcdyouP2FyYWJpYSIsTEJOOiJsZWJhbm9uIixTVk46InNsb3ZlbmlhIixCRkE6ImJ1cmtpbmF8XFxiZmFzb3x1cHBlci4/dm9sdGEiLFNWSzoiXig/IS4qY3plKS4qc2xvdmFrIixNUlQ6Im1hdXJpdGFuaWEiLEhSVjoiY3JvYXRpYSIsQ0hMOiJcXGJjaGlsZSIsQ0hOOiJeKD8hLipcXGJtYWMpKD8hLipcXGJob25nKSg/IS4qXFxidGFpKS4qY2hpbmF8XnBcXC4/clxcLj9jXFwuPyQiLEtOQToia2l0dHN8XFxibmV2aXMiLEpBTToiamFtYWljYSIsU01SOiJzYW4uP21hcmlubyIsR0lCOiJnaWJyYWx0YXIiLERKSToiZGppYm91dGkiLEdJTjoiXig/IS4qZXEpKD8hLipzcGFuKSg/IS4qYmlzc2F1KSg/IS4qcG9ydHUpKD8hLipuZXcpLipndWluZWEiLEZJTjoiZmlubGFuZCIsVVJZOiJ1cnVndWF5IixWQVQ6ImhvbHkuP3NlZXx2YXRpY2FufHBhcGFsLj9zdCIsU1RQOiJcXGJzKGF8XHhlMylvLj90b20oZXxceGU5KSIsU1lDOiJzZXljaGVsbCIsTlBMOiJuZXBhbCIsQ1hSOiJjaHJpc3RtYXMiLExBTzoiXFxibGFvcz9cXGIiLFlFTToiXig/IS4qYXJhYikoPyEuKm5vcnRoKSg/IS4qc2FuYSkoPyEuKnBlbykoPyEuKmRlbSkoPyEuKnNvdXRoKSg/IS4qYWRlbikoPyEuKlxcYnBcXC4/ZFxcLj9yKS4qeWVtZW4iLEJWVDoiYm91dmV0IixaQUY6IlxcYnNcXHcqLj9hZnJpY2EiLEtJUjoia2lyaWJhdGkiLFBITDoicGhpbGlwcGluZXMiLFNYTToiXig/IS4qbWFydGluKSg/IS4qc2FiYSkuKm1hYXJ0ZW4iLFJPVToicihvfHV8b3UpbWFuaWEiLFZJUjoiXig/PS4qXFxidVxcLj9cXHM/cykuKnZpcmdpbnxeKD89LipzdGF0ZXMpLip2aXJnaW4iLFNZUjoic3lyaWEiLE1BQzoibWFjYShvfHUpIixORks6Im5vcmZvbGsiLE5JQzoibmljYXJhZ3VhIixNTFQ6IlxcYm1hbHRhIixLQVo6ImthemFrIixUQ0E6InR1cmtzIixQWUY6ImZyZW5jaC4/cG9seW5lc2lhfHRhaGl0aSIsTklVOiJuaXVlIixETUE6ImRvbWluaWNhKD8hbikiLEdCUjoidW5pdGVkLj9raW5nZG9tfGJyaXRhaW58XnVcXC4/a1xcLj8kIixCRU46ImJlbmlufGRhaG9tZSIsR1VGOiJeKD89LipmcmVuY2gpLipndWlhbmEiLEJFTDoiXig/IS4qbHV4ZW0pLipiZWxnaXVtIixNU1I6Im1vbnRzZXJyYXQiLFRHTzoidG9nbyIsREVVOiJeKD8hLiplYXN0KS4qZ2VybWFueXxeKD89LipcXGJmZWQuKlxcYnJlcCkuKmdlcm1hbiIsR1VNOiJcXGJndWFtIixMS0E6InNyaS4/bGFua2F8Y2V5bG9uIixTU0Q6IlxcYnNcXHcqLj9zdWRhbiIsRkxLOiJmYWxrbGFuZHxtYWx2aW5hcyIsUENOOiJwaXRjYWlybiIsQkVTOiJeKD89Lipib25haXJlKS4qZXVzdGF0aXVzfF4oPz0uKmNhcmliKS4qbmV0aGVybGFuZHN8XFxiYmVzLj9pc2xhbmRzIixHVVk6Imd1eWFuYXxicml0aXNoLj9ndWlhbmEiLENSSToiY29zdGEuP3JpY2EiLENPSzoiXFxiY29vayIsTUFSOiJtb3JvY2NvfFxcYm1hcm9jIixNTlA6Im1hcmlhbmEiLExTTzoibGVzb3Rob3xiYXN1dG8iLEhVTjoiXig/IS4qYXVzdHIpLipodW5nYXJ5IixUS006InR1cmttZW4iLFNVUjoic3VyaW5hbXxkdXRjaC4/Z3VpYW5hIixOTEQ6Il4oPyEuKlxcYmFudCkoPyEuKlxcYmNhcmliKS4qbmV0aGVybGFuZHMiLEJNVToiYmVybXVkYSIsSE1EOiJoZWFyZC4qbWNkb25hbGQiLFRDRDoiXFxiY2hhZCIsR0VPOiJeKD8hLipzb3V0aCkuKmdlb3JnaWEiLE1ORToiXig/IS4qc2VyYmlhKS4qbW9udGVuZWdybyIsTU5HOiJtb25nb2xpYSIsTUhMOiJtYXJzaGFsbCIsTVRROiJtYXJ0aW5pcXVlIixDU0s6ImN6ZWNob3Nsb3Zha2lhIixCTFo6ImJlbGl6ZXxeKD89Lipicml0aXNoKS4qaG9uZHVyYXMiLEREUjoiZ2VybWFuLj9kZW1vY3JhdGljLj9yZXB1YmxpY3xeKGR8ZylcXC4/ZFxcLj9yXFwuPyR8Xig/PS4qZWFzdCkuKmdlcm1hbnkiLE1NUjoibXlhbm1hcnxidXJtYSIsQUZHOiJhZmdoYW4iLEJESToiYnVydW5kaSIsVkdCOiJeKD89LipcXGJ1XFwuP1xccz9rKS4qdmlyZ2lufF4oPz0uKmJyaXQpLip2aXJnaW58Xig/PS4qa2luZ2RvbSkuKnZpcmdpbiIsQkxSOiJiZWxhcnVzfGJ5ZWxvIixCTE06ImJhcnRoKGV8XHhlOSlsZW15IixHUkQ6ImdyZW5hZGEiLFRLTDoidG9rZWxhdSIsR1JDOiJncmVlY2V8aGVsbGVuaWN8aGVsbGFzIixHUkw6ImdyZWVubGFuZCIsU0hOOiJoZWxlbmEiLEFORDoiYW5kb3JyYSIsTU9aOiJtb3phbWJpcXVlIixUSks6InRhamlrIixUSEE6InRoYWlsYW5kfFxcYnNpYW0iLEhUSToiaGFpdGkiLE1FWDoiXFxibWV4aWMiLEFOVDoiXig/PS4qXFxiYW50KS4qKG5ldGhlcnxkdXRjaCkiLFpXRToiemltYmFid2V8Xig/IS4qbm9ydGhlcm4pLipyaG9kZXNpYSIsTENBOiJcXGJsdWNpYSIsSU5EOiJpbmRpYSg/IS4qb2NlYSkiLExWQToibGF0dmlhIixCVE46ImJodXRhbiIsVkNUOiJ2aW5jZW50IixWTk06Il4oPyEuKnJlcHVibGljKS4qdmlldC4/bmFtfF4oPz0uKnNvY2lhbGlzdCkuKnZpZXQuP25hbSIsTk9SOiJub3J3YXkiLENaRToiXig/PS4qcmVwKS4qY3plY2h8Y3plY2hpYXxib2hlbWlhIixBVEY6ImZyZW5jaC4/c291dGhlcm58XFxiZnIuKlxcYnNvLipcXGJhbi4qXFxiXFxidCIsQVRHOiJhbnRpZ3VhIixGSkk6ImZpamkiLEhORDoiXig/IS4qYnJpdCkuKmhvbmR1cmFzIixNVVM6Im1hdXJpdGl1cyIsRE9NOiJkb21pbmljYW4iLExVWDoiXig/IS4qYmVsZykuKmx1eGVtIixJU1I6ImlzcmFlbCIsWVVHOiJ5dWdvc2xhdmlhIixGU006Im1pY3JvbmVzaWEiLFBFUjoicGVydSIsUkVVOiJyKGV8XHhlOSl1bmlvbiIsSUROOiJpbmRvbmVzaWEiLFZVVDoidmFudWF0dXxuZXcuP2hlYnJpZGVzIixNS0Q6Im1hY2Vkb25pYXxeZlxcLj95XFwuP3JcXC4/b1xcLj9tXFwuPyQiLENPRDoiXFxiZGVtLipjb25nb3xjb25nby4qXFxiZGVtfGNvbmdvLipcXGJkcnxcXGJkci4qY29uZ298XFxiZFxcLj9yXFwuP2N8XFxiZFxcLj9yXFwuP29cXC4/Y3xcXGJyXFwuP2RcXC4/Y3xiZWxnaWFuLj9jb25nb3xjb25nby4/ZnJlZS4/c3RhdGV8a2luc2hhc2F8emFpcmV8bFxcd3sxLDJ9b3BvbGR2aWxsZSIsQ09HOiJeKD8hLipcXGJkZW0pKD8hLipcXGJkcikoPyEuKmtpbnNoYXNhKSg/IS4qemFpcmUpKD8hLipiZWxnKSg/IS4qbFxcd3sxLDJ9b3BvbGR2aWxsZSkoPyEuKmZyZWUpLipcXGJjb25nbyIsSVNMOiJpY2VsYW5kIixHTFA6Imd1YWRlbG91cGUiLEVUSDoiZXRoaW9waWF8YWJ5c3NpbmlhIixDT006ImNvbW9ybyIsQ09MOiJjb2xvbWJpYSIsTkdBOiJuaWdlcmlhIixUTFM6Il4oPz0uKmxlc3RlKS4qdGltb3J8Xig/PS4qZWFzdCkuKnRpbW9yIixUV046InRhaXdhbnx0YWlwZWl8Zm9ybW9zYSIsUFJUOiJwb3J0dWdhbCIsTURBOiJtb2xkb3Z8YihhfGUpc3NhcmFiaWEiLEdHWToiZ3Vlcm5zZXkiLE1ERzoibWFkYWdhc2NhcnxtYWxhZ2FzeSIsQVRBOiJhbnRhcmN0aWNhIixFQ1U6ImVjdWFkb3IiLFNFTjoic2VuZWdhbCIsRVNIOiJzYWhhcmEiLE1EVjoibWFsZGl2ZSIsQVNNOiJeKD89LiphbWVyaWMpLipzYW1vYSIsU1BNOiJtaXF1ZWxvbiIsQ1VXOiJeKD8hLipib25haXJlKS4qXFxiY3VyYShjfFx4ZTcpYW8iLEZSQToiXig/IS4qXFxiZGVwKSg/IS4qbWFydGluaXF1ZSkuKmZyYW5jZXxmcmVuY2guP3JlcHVibGljfFxcYmdhdWwiLExUVToibGl0aHVhbmlhIixSV0E6InJ3YW5kYSIsWk1COiJ6YW1iaWF8bm9ydGhlcm4uP3Job2Rlc2lhIixHTUI6ImdhbWJpYSIsV0xGOiJmdXR1bmF8d2FsbGlzIixKRVk6ImplcnNleSIsRlJPOiJmYXJvZXxmYWVyb2UiLEdUTToiZ3VhdGVtYWxhIixETks6ImRlbm1hcmsiLElNTjoiXig/PS4qaXNsZSkuKlxcYm1hbiIsTUFGOiJeKD89Lipjb2xsZWN0aXZpdHkpLiptYXJ0aW58Xig/PS4qZnJhbmNlKS4qbWFydGluKD8haXF1ZSl8Xig/PS4qZnJlbmNoKS4qbWFydGluKD8haXF1ZSkiLEFVUzoiYXVzdHJhbGlhIixBVVQ6Il4oPyEuKmh1bmdhcnkpLiphdXN0cmlhfFxcYmF1c3QuKlxcYmVtcCIsU0pNOiJzdmFsYmFyZCIsVkVOOiJ2ZW5lenVlbGEiLFBMVzoicGFsYXUiLEtFTjoia2VueWF8YnJpdGlzaC4/ZWFzdC4/YWZyaWNhfGVhc3QuP2FmcmljYS4/cHJvdCIsVFVSOiJ0dXJrZXkiLEFMQjoiYWxiYW5pYSIsT01OOiJcXGJvbWFufHRydWNpYWwiLFRVVjoidHV2YWx1IixBTEE6IlxcYihhfFx4ZTUpbGFuZCIsQlJOOiJicnVuZWkiLFRVTjoidHVuaXNpYSIsUlVTOiJcXGJydXNzaWF8c292aWV0Lj91bmlvbnx1XFwuP3NcXC4/c1xcLj9yfHNvY2lhbGlzdC4/cmVwdWJsaWNzIixCUkI6ImJhcmJhZG9zIixCUkE6ImJyYXppbCIsQ0lWOiJpdm9pcmV8aXZvcnkiLFNSQjoiXig/IS4qbW9udGUpLipzZXJiaWEiLEdOUToiZ3VpbmUuKmVxfGVxLipndWluZXxeKD89LipzcGFuKS4qZ3VpbmVhIixVU0E6Il4oPyEuKmlzbGFuZHMpLip1bml0ZWQuP3N0YXRlc3xedVxcLj9zXFwuP2FcXC4/JHxedVxcLj9zXFwuPyQiLFFBVDoicWF0YXIiLFdTTToiXig/IS4qYW1lcikuKnNhbW9hIixBWkU6ImF6ZXJiYWlqYW4iLEdOQjoiYmlzc2F1fF4oPz0uKnBvcnR1KS4qZ3VpbmVhIixTV1o6InN3YXppbGFuZCIsVE9OOiJ0b25nYSIsQ0FOOiJjYW5hZGEiLFVLUjoidWtyYWluIixLT1I6Il4oPyEuKmRlbW9jcmF0KSg/IS4qcGVvcGxlKSg/IS4qbm9ydGgpLipcXGJrb3JlYXxcXGJyXFwuP29cXC4/a1xcYiIsQUlBOiJhbmd1aWxsP2EiLENBRjoiXFxiY2VuLipcXGJhZnxeY1xcLj9hXFwuP3JcXC4/JCIsQ0hFOiJzd2l0enxzd2lzcyIsQ1lQOiJjeXBydXMiLEJJSDoiaGVyemVnb3ZpbmF8Ym9zbmlhIixTR1A6InNpbmdhcG9yZSIsU0dTOiJzb3V0aC4/Z2VvcmdpYXxzYW5kd2ljaCIsU09NOiJzb21hbGkiLFVaQjoidXpiZWsiLENNUjoiY2FtZXJvb24iLFBPTDoicG9sYW5kIixFQVo6InphbnoiLEtXVDoia3V3YWl0IixFUkk6ImVyaXRyZWEiLEdBQjoiZ2Fib24iLENZTToiY2F5bWFuIixBUkU6ImVtaXJhdGVzfF51XFwuP2FcXC4/ZVxcLj8kfHVuaXRlZC4/YXJhYi4/ZW0iLEVTVDoiZXN0b25pYSIsTVdJOiJtYWxhd2l8bnlhc2EiLEVTUDoic3BhaW4iLElSUToiXFxiaXJhcXxtZXNvcG90YW1pYSIsU0xWOiJlbC4/c2FsdmFkb3IiLE1MSToiXFxibWFsaVxcYiIsWU1EOiJeKD89LipwZW8pLip5ZW1lbnxeKD8hLipyZXApKD89LipkZW0pLip5ZW1lbnxeKD89Lipzb3V0aCkuKnllbWVufF4oPz0uKmFkZW4pLip5ZW1lbnxeKD89LipcXGJwXFwuP2RcXC4/cikuKnllbWVuIixJUkw6ImlyZWxhbmQiLElSTjoiXFxiaXJhbnxwZXJzaWEiLEFCVzoiXig/IS4qYm9uYWlyZSkuKlxcYmFydWJhIixTTEU6InNpZXJyYSIsUEFOOiJwYW5hbWEiLFNETjoiXig/IS4qXFxicyg/IXUpKS4qc3VkYW4iLFNMQjoic29sb21vbiIsTlpMOiJuZXcuP3plYWxhbmQiLE1DTzoibW9uYWNvIixJVEE6Iml0YWx5IixKUE46ImphcGFuIixLR1o6Imt5cmd5enxraXJnaGl6IixVR0E6InVnYW5kYSIsTkNMOiJuZXcuP2NhbGVkb25pYSIsUE5HOiJwYXB1YXxcXGJwLipcXGJuLipcXGJndWluLip8XnBcXC4/blxcLj9nXFwuPyR8bmV3Lj9ndWluZWEiLEFSRzoiYXJnZW50aW4iLFNXRToic3dlZGVuIixCSFM6ImJhaGFtYXMiLEJIUjoiYmFocmFpbiIsQVJNOiJhcm1lbmlhIixOUlU6Im5hdXJ1IixDVUI6IlxcYmN1YmEifX0se31dLDM1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lLmV4cG9ydHM9e307bi5wcm9qTmFtZXM9e2VxdWlyZWN0YW5ndWxhcjoiZXF1aXJlY3Rhbmd1bGFyIixtZXJjYXRvcjoibWVyY2F0b3IiLG9ydGhvZ3JhcGhpYzoib3J0aG9ncmFwaGljIiwibmF0dXJhbCBlYXJ0aCI6Im5hdHVyYWxFYXJ0aCIsa2F2cmF5c2tpeTc6ImthdnJheXNraXk3IixtaWxsZXI6Im1pbGxlciIscm9iaW5zb246InJvYmluc29uIixlY2tlcnQ0OiJlY2tlcnQ0IiwiYXppbXV0aGFsIGVxdWFsIGFyZWEiOiJhemltdXRoYWxFcXVhbEFyZWEiLCJhemltdXRoYWwgZXF1aWRpc3RhbnQiOiJhemltdXRoYWxFcXVpZGlzdGFudCIsImNvbmljIGVxdWFsIGFyZWEiOiJjb25pY0VxdWFsQXJlYSIsImNvbmljIGNvbmZvcm1hbCI6ImNvbmljQ29uZm9ybWFsIiwiY29uaWMgZXF1aWRpc3RhbnQiOiJjb25pY0VxdWlkaXN0YW50Iixnbm9tb25pYzoiZ25vbW9uaWMiLHN0ZXJlb2dyYXBoaWM6InN0ZXJlb2dyYXBoaWMiLG1vbGx3ZWlkZToibW9sbHdlaWRlIixoYW1tZXI6ImhhbW1lciIsInRyYW5zdmVyc2UgbWVyY2F0b3IiOiJ0cmFuc3ZlcnNlTWVyY2F0b3IiLCJhbGJlcnMgdXNhIjoiYWxiZXJzVXNhIn0sbi5heGVzTmFtZXM9WyJsb25heGlzIiwibGF0YXhpcyJdLG4ubG9uYXhpc1NwYW49e29ydGhvZ3JhcGhpYzoxODAsImF6aW11dGhhbCBlcXVhbCBhcmVhIjozNjAsImF6aW11dGhhbCBlcXVpZGlzdGFudCI6MzYwLCJjb25pYyBjb25mb3JtYWwiOjE4MCxnbm9tb25pYzoxNjAsc3RlcmVvZ3JhcGhpYzoxODAsInRyYW5zdmVyc2UgbWVyY2F0b3IiOjE4MCwiKiI6MzYwfSxuLmxhdGF4aXNTcGFuPXsiY29uaWMgY29uZm9ybWFsIjoxNTAsc3RlcmVvZ3JhcGhpYzoxNzkuNSwiKiI6MTgwfSxuLnNjb3BlRGVmYXVsdHM9e3dvcmxkOntsb25heGlzUmFuZ2U6Wy0xODAsMTgwXSxsYXRheGlzUmFuZ2U6Wy05MCw5MF0scHJvalR5cGU6ImVxdWlyZWN0YW5ndWxhciIscHJvalJvdGF0ZTpbMCwwLDBdfSx1c2E6e2xvbmF4aXNSYW5nZTpbLTE4MCwtNTBdLGxhdGF4aXNSYW5nZTpbMTUsODBdLHByb2pUeXBlOiJhbGJlcnMgdXNhIn0sZXVyb3BlOntsb25heGlzUmFuZ2U6Wy0zMCw2MF0sbGF0YXhpc1JhbmdlOlszMCw4MF0scHJvalR5cGU6ImNvbmljIGNvbmZvcm1hbCIscHJvalJvdGF0ZTpbMTUsMCwwXSxwcm9qUGFyYWxsZWxzOlswLDYwXX0sYXNpYTp7bG9uYXhpc1JhbmdlOlsyMiwxNjBdLGxhdGF4aXNSYW5nZTpbLTE1LDU1XSxwcm9qVHlwZToibWVyY2F0b3IiLHByb2pSb3RhdGU6WzAsMCwwXX0sYWZyaWNhOntsb25heGlzUmFuZ2U6Wy0zMCw2MF0sbGF0YXhpc1JhbmdlOlstNDAsNDBdLHByb2pUeXBlOiJtZXJjYXRvciIscHJvalJvdGF0ZTpbMCwwLDBdfSwibm9ydGggYW1lcmljYSI6e2xvbmF4aXNSYW5nZTpbLTE4MCwtNDVdLGxhdGF4aXNSYW5nZTpbNSw4NV0scHJvalR5cGU6ImNvbmljIGNvbmZvcm1hbCIscHJvalJvdGF0ZTpbLTEwMCwwLDBdLHByb2pQYXJhbGxlbHM6WzI5LjUsNDUuNV19LCJzb3V0aCBhbWVyaWNhIjp7bG9uYXhpc1JhbmdlOlstMTAwLC0zMF0sbGF0YXhpc1JhbmdlOlstNjAsMTVdLHByb2pUeXBlOiJtZXJjYXRvciIscHJvalJvdGF0ZTpbMCwwLDBdfX0sbi5jbGlwUGFkPS4wMDEsbi5wcmVjaXNpb249LjEsbi5sYW5kQ29sb3I9IiNGMERDODIiLG4ud2F0ZXJDb2xvcj0iIzMzOTlGRiIsbi5sb2NhdGlvbm1vZGVUb0xheWVyPXsiSVNPLTMiOiJjb3VudHJpZXMiLCJVU0Etc3RhdGVzIjoic3VidW5pdHMiLCJjb3VudHJ5IG5hbWVzIjoiY291bnRyaWVzIn0sbi5zcGhlcmVTVkc9e3R5cGU6IlNwaGVyZSJ9LG4uZmlsbExheWVycz1bIm9jZWFuIiwibGFuZCIsImxha2VzIl0sbi5saW5lTGF5ZXJzPVsic3VidW5pdHMiLCJjb3VudHJpZXMiLCJjb2FzdGxpbmVzIiwicml2ZXJzIiwiZnJhbWUiXSxuLmJhc2VMYXllcnM9WyJvY2VhbiIsImxhbmQiLCJsYWtlcyIsInN1YnVuaXRzIiwiY291bnRyaWVzIiwiY29hc3RsaW5lcyIsInJpdmVycyIsImxhdGF4aXMiLCJsb25heGlzIiwiZnJhbWUiXSxuLmxheWVyTmFtZVRvQWRqZWN0aXZlPXtvY2Vhbjoib2NlYW4iLGxhbmQ6ImxhbmQiLGxha2VzOiJsYWtlIixzdWJ1bml0czoic3VidW5pdCIsY291bnRyaWVzOiJjb3VudHJ5Iixjb2FzdGxpbmVzOiJjb2FzdGxpbmUiLHJpdmVyczoicml2ZXIiLGZyYW1lOiJmcmFtZSJ9LG4uYmFzZUxheWVyc092ZXJDaG9yb3BsZXRoPVsicml2ZXJzIiwibGFrZXMiXX0se31dLDM1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3NvbGlkOlsxXSxkb3Q6WzEsMV0sZGFzaDpbNCwxXSxsb25nZGFzaDpbOCwxXSxkYXNoZG90Ols0LDEsMSwxXSxsb25nZGFzaGRvdDpbOCwxLDEsMV19fSx7fV0sMzYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17c29saWQ6W1tdLDBdLGRvdDpbWy41LDFdLDIwMF0sZGFzaDpbWy41LDFdLDUwXSxsb25nZGFzaDpbWy41LDFdLDEwXSxkYXNoZG90OltbLjUsLjYyNSwuODc1LDFdLDUwXSxsb25nZGFzaGRvdDpbWy41LC43LC44LDFdLDEwXX19LHt9XSwzNjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjaXJjbGU6Ilx1MjVjZiIsImNpcmNsZS1vcGVuIjoiXHUyNWNiIixzcXVhcmU6Ilx1MjVhMCIsInNxdWFyZS1vcGVuIjoiXHUyNWExIixkaWFtb25kOiJcdTI1YzYiLCJkaWFtb25kLW9wZW4iOiJcdTI1YzciLGNyb3NzOiIrIix4OiJcdTI3NGMifX0se31dLDM2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLnhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsci5zdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixyLnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixyLnN2Z0F0dHJzPXt4bWxuczpyLnN2ZywieG1sbnM6eGxpbmsiOnIueGxpbmt9fSx7fV0sMzYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vcGxvdGx5Iik7ci52ZXJzaW9uPSIxLjguMCIsci5wbG90PW4ucGxvdCxyLm5ld1Bsb3Q9bi5uZXdQbG90LHIucmVzdHlsZT1uLnJlc3R5bGUsci5yZWxheW91dD1uLnJlbGF5b3V0LHIucmVkcmF3PW4ucmVkcmF3LHIuZXh0ZW5kVHJhY2VzPW4uZXh0ZW5kVHJhY2VzLHIucHJlcGVuZFRyYWNlcz1uLnByZXBlbmRUcmFjZXMsci5hZGRUcmFjZXM9bi5hZGRUcmFjZXMsci5kZWxldGVUcmFjZXM9bi5kZWxldGVUcmFjZXMsci5tb3ZlVHJhY2VzPW4ubW92ZVRyYWNlcyxyLnB1cmdlPW4ucHVyZ2Usci5zZXRQbG90Q29uZmlnPXQoIi4vcGxvdF9hcGkvc2V0X3Bsb3RfY29uZmlnIiksci5yZWdpc3Rlcj1uLnJlZ2lzdGVyLHIuSWNvbnM9dCgiLi4vYnVpbGQvcGxvdGljb24iKSxyLlBsb3RzPW4uUGxvdHMsci5GeD1uLkZ4LHIuU25hcHNob3Q9bi5TbmFwc2hvdCxyLlBsb3RTY2hlbWE9bi5QbG90U2NoZW1hLHIuUXVldWU9bi5RdWV1ZSxyLmQzPXQoImQzIil9LHsiLi4vYnVpbGQvcGxvdGljb24iOjIsIi4vcGxvdF9hcGkvc2V0X3Bsb3RfY29uZmlnIjozODksIi4vcGxvdGx5IjozOTAsZDM6NzB9XSwzNjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7InVuZGVmaW5lZCIhPXR5cGVvZiBNYXRoSmF4PyhyLk1hdGhKYXg9ITAsTWF0aEpheC5IdWIuQ29uZmlnKHttZXNzYWdlU3R5bGU6Im5vbmUiLHNraXBTdGFydHVwVHlwZXNldDohMCxkaXNwbGF5QWxpZ246ImxlZnQiLHRleDJqYXg6e2lubGluZU1hdGg6W1siJCIsIiQiXSxbIlxcKCIsIlxcKSJdXX19KSxNYXRoSmF4Lkh1Yi5Db25maWd1cmVkKCkpOnIuTWF0aEpheD0hMX0se31dLDM2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7QXJyYXkuaXNBcnJheSh0KSYmKGVbcl09dFtuXSl9fSx7fV0sMzY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCJ0aW55Y29sb3IyIiksbz10KCIuL25lc3RlZF9wcm9wZXJ0eSIpLGE9dCgiLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2dldF9zY2FsZSIpO09iamVjdC5rZXlzKHQoIi4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9zY2FsZXMiKSk7ci52YWxPYmplY3RzPXtkYXRhX2FycmF5Ontjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscil7QXJyYXkuaXNBcnJheSh0KT9lLnNldCh0KTp2b2lkIDAhPT1yJiZlLnNldChyKX19LGVudW1lcmF0ZWQ6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyLG4pe24uY29lcmNlTnVtYmVyJiYodD0rdCksLTE9PT1uLnZhbHVlcy5pbmRleE9mKHQpP2Uuc2V0KHIpOmUuc2V0KHQpfX0sImJvb2xlYW4iOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscil7dD09PSEwfHx0PT09ITE/ZS5zZXQodCk6ZS5zZXQocil9fSxudW1iZXI6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyLGkpeyFuKHQpfHx2b2lkIDAhPT1pLm1pbiYmdDxpLm1pbnx8dm9pZCAwIT09aS5tYXgmJnQ+aS5tYXg/ZS5zZXQocik6ZS5zZXQoK3QpfX0saW50ZWdlcjp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIsaSl7dCUxfHwhbih0KXx8dm9pZCAwIT09aS5taW4mJnQ8aS5taW58fHZvaWQgMCE9PWkubWF4JiZ0PmkubWF4P2Uuc2V0KHIpOmUuc2V0KCt0KX19LHN0cmluZzp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIsbil7aWYobi5zdHJpY3Q9PT0hMCYmInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiB2b2lkIGUuc2V0KHIpO3ZhciBpPVN0cmluZyh0KTt2b2lkIDA9PT10fHxuLm5vQmxhbms9PT0hMCYmIWk/ZS5zZXQocik6ZS5zZXQoaSl9fSxjb2xvcjp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe2kodCkuaXNWYWxpZCgpP2Uuc2V0KHQpOmUuc2V0KHIpfX0sY29sb3JzY2FsZTp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe2Uuc2V0KGEodCxyKSl9fSxhbmdsZTp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpeyJhdXRvIj09PXQ/ZS5zZXQoImF1dG8iKTpuKHQpPyhNYXRoLmFicyh0KT4xODAmJih0LT0zNjAqTWF0aC5yb3VuZCh0LzM2MCkpLGUuc2V0KCt0KSk6ZS5zZXQocil9fSxheGlzaWQ6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQuY2hhckF0KDApPT09cil7dmFyIG49TnVtYmVyKHQuc3Vic3RyKDEpKTtpZihuJTE9PT0wJiZuPjEpcmV0dXJuIHZvaWQgZS5zZXQodCl9ZS5zZXQocil9fSxzY2VuZWlkOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscil7aWYoInN0cmluZyI9PXR5cGVvZiB0JiZ0LnN1YnN0cigwLDUpPT09cil7dmFyIG49TnVtYmVyKHQuc3Vic3RyKDUpKTtpZihuJTE9PT0wJiZuPjEpcmV0dXJuIHZvaWQgZS5zZXQodCl9ZS5zZXQocil9fSxnZW9pZDp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5zdWJzdHIoMCwzKT09PXIpe3ZhciBuPU51bWJlcih0LnN1YnN0cigzKSk7aWYobiUxPT09MCYmbj4xKXJldHVybiB2b2lkIGUuc2V0KHQpfWUuc2V0KHIpfX0sZmxhZ2xpc3Q6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyLG4pe2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdm9pZCBlLnNldChyKTtpZigtMSE9PW4uZXh0cmFzLmluZGV4T2YodCkpcmV0dXJuIHZvaWQgZS5zZXQodCk7Zm9yKHZhciBpPXQuc3BsaXQoIisiKSxvPTA7bzxpLmxlbmd0aDspe3ZhciBhPWlbb107LTE9PT1uLmZsYWdzLmluZGV4T2YoYSl8fGkuaW5kZXhPZihhKTxvP2kuc3BsaWNlKG8sMSk6bysrfWkubGVuZ3RoP2Uuc2V0KGkuam9pbigiKyIpKTplLnNldChyKX19LGFueTp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PXQ/ZS5zZXQocik6ZS5zZXQodCl9fSxpbmZvX2FycmF5Ontjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUsbixpKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdm9pZCBlLnNldChuKTt2YXIgbz1pLml0ZW1zLGE9W107bj1BcnJheS5pc0FycmF5KG4pP246W107Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspci5jb2VyY2UodCxhLG8sIlsiK3MrIl0iLG5bc10pO2Uuc2V0KGEpfX19LHIuY29lcmNlPWZ1bmN0aW9uKHQsZSxuLGksYSl7dmFyIHM9byhuLGkpLmdldCgpLGw9byh0LGkpLGM9byhlLGkpLHU9bC5nZXQoKTtyZXR1cm4gdm9pZCAwPT09YSYmKGE9cy5kZmx0KSxzLmFycmF5T2smJkFycmF5LmlzQXJyYXkodSk/KGMuc2V0KHUpLHUpOihyLnZhbE9iamVjdHNbcy52YWxUeXBlXS5jb2VyY2VGdW5jdGlvbih1LGMsYSxzKSxjLmdldCgpKX0sci5jb2VyY2UyPWZ1bmN0aW9uKHQsZSxuLGksYSl7dmFyIHM9byh0LGkpLGw9ci5jb2VyY2UodCxlLG4saSxhKTtyZXR1cm4gcy5nZXQoKT9sOiExfSxyLmNvZXJjZUZvbnQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXt9O3JldHVybiByPXJ8fHt9LG4uZmFtaWx5PXQoZSsiLmZhbWlseSIsci5mYW1pbHkpLG4uc2l6ZT10KGUrIi5zaXplIixyLnNpemUpLG4uY29sb3I9dChlKyIuY29sb3IiLHIuY29sb3IpLG59fSx7Ii4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9nZXRfc2NhbGUiOjMxMiwiLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL3NjYWxlcyI6MzE4LCIuL25lc3RlZF9wcm9wZXJ0eSI6Mzc2LCJmYXN0LWlzbnVtZXJpYyI6NzQsdGlueWNvbG9yMjoyMzF9XSwzNjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBTdHJpbmcodCtNYXRoLnBvdygxMCxlKSkuc3Vic3RyKDEpfWZ1bmN0aW9uIGkodCl7dmFyIGU7cmV0dXJuIGU9eS50ZXN0KHQpPyJZIjoieSIsZSs9Yi50ZXN0KHQpPyJiIjoiIn1mdW5jdGlvbiBvKHQpe3ZhciBlO3JldHVybiBlPV8udGVzdCh0KT94LnRlc3QodCk/IkkiOiJIIjoiRCJ9dmFyIGE9dCgiZDMiKSxzPXQoImZhc3QtaXNudW1lcmljIik7ci5kYXRlVGltZTJtcz1mdW5jdGlvbih0KXt0cnl7aWYodC5nZXRUaW1lKXJldHVybit0fWNhdGNoKGUpe3JldHVybiExfXZhciByLG4saSxvLGE9U3RyaW5nKHQpLnNwbGl0KCIgIik7aWYoYS5sZW5ndGg+MilyZXR1cm4hMTt2YXIgbD1hWzBdLnNwbGl0KCItIik7aWYobC5sZW5ndGg+M3x8MyE9PWwubGVuZ3RoJiZhWzFdKXJldHVybiExO2lmKDQ9PT1sWzBdLmxlbmd0aClyPU51bWJlcihsWzBdKTtlbHNle2lmKDIhPT1sWzBdLmxlbmd0aClyZXR1cm4hMTt2YXIgYz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7cj0oKE51bWJlcihsWzBdKS1jKzcwKSUxMDArMjAwKSUxMDArYy03MH1yZXR1cm4gcyhyKT8xPT09bC5sZW5ndGg/bmV3IERhdGUociwwLDEpLmdldFRpbWUoKToobj1OdW1iZXIobFsxXSktMSxsWzFdLmxlbmd0aD4yfHwhKG4+PTAmJjExPj1uKT8hMToyPT09bC5sZW5ndGg/bmV3IERhdGUocixuLDEpLmdldFRpbWUoKTooaT1OdW1iZXIobFsyXSksbFsyXS5sZW5ndGg+Mnx8IShpPj0xJiYzMT49aSk/ITE6KGk9bmV3IERhdGUocixuLGkpLmdldFRpbWUoKSxhWzFdPyhsPWFbMV0uc3BsaXQoIjoiKSxsLmxlbmd0aD4zPyExOihvPU51bWJlcihsWzBdKSxsWzBdLmxlbmd0aD4yfHwhKG8+PTAmJjIzPj1vKT8hMTooaSs9MzZlNSpvLDE9PT1sLmxlbmd0aD9pOihuPU51bWJlcihsWzFdKSxsWzFdLmxlbmd0aD4yfHwhKG4+PTAmJjU5Pj1uKT8hMTooaSs9NmU0Km4sMj09PWwubGVuZ3RoP2k6KHQ9TnVtYmVyKGxbMl0pLHQ+PTAmJjYwPnQ/aSsxZTMqdDohMSkpKSkpKTppKSkpOiExfSxyLmlzRGF0ZVRpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGF0ZVRpbWUybXModCkhPT0hMX0sci5tczJEYXRlVGltZT1mdW5jdGlvbih0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYSlyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygiZDMgaXMgbm90IGRlZmluZWQiKTtlfHwoZT0wKTt2YXIgcj1uZXcgRGF0ZSh0KSxpPWEudGltZS5mb3JtYXQoIiVZLSVtLSVkIikocik7cmV0dXJuIDc3NzZlNj5lPyhpKz0iICIrbihyLmdldEhvdXJzKCksMiksNDMyZTY+ZSYmKGkrPSI6IituKHIuZ2V0TWludXRlcygpLDIpLDEwOGU1PmUmJihpKz0iOiIrbihyLmdldFNlY29uZHMoKSwyKSwzZTU+ZSYmKGkrPSIuIituKHIuZ2V0TWlsbGlzZWNvbmRzKCksMykpKSksaS5yZXBsYWNlKC8oWzpcc10wMCkqXC4/WzBdKiQvLCIiKSk6aX07dmFyIGw9e0g6WyIlSDolTTolU34lTCIsIiVIOiVNOiVTIiwiJUg6JU0iXSxJOlsiJUk6JU06JVN+JUwlcCIsIiVJOiVNOiVTJXAiLCIlSTolTSVwIl0sRDpbIiVIIiwiJUklcCIsIiVIaCJdfSxjPXtZOlsiJVl+JW1+JWQiLCIlWSVtJWQiLCIleSVtJWQiLCIlbX4lZH4lWSIsIiVkfiVtfiVZIl0sWWI6WyIlYn4lZH4lWSIsIiVkfiVifiVZIiwiJVl+JWR+JWIiLCIlWX4lYn4lZCJdLHk6WyIlbX4lZH4leSIsIiVkfiVtfiV5IiwiJXl+JW1+JWQiXSx5YjpbIiVifiVkfiV5IiwiJWR+JWJ+JXkiLCIleX4lZH4lYiIsIiV5fiVifiVkIl19LHU9YS50aW1lLmZvcm1hdC51dGMsaD17WTp7SDpbIiVZfiVtfiVkVCVIOiVNOiVTIiwiJVl+JW1+JWRUJUg6JU06JVN+JUwiXS5tYXAodSksSTpbXSxEOlsiJVklbSVkJUglTSVTIiwiJVl+JW0iLCIlbX4lWSJdLm1hcCh1KX0sWWI6e0g6W10sSTpbXSxEOlsiJVl+JWIiLCIlYn4lWSJdLm1hcCh1KX0seTp7SDpbXSxJOltdLEQ6W119LHliOntIOltdLEk6W10sRDpbXX19O1siWSIsIlliIiwieSIsInliIl0uZm9yRWFjaChmdW5jdGlvbih0KXtjW3RdLmZvckVhY2goZnVuY3Rpb24oZSl7aFt0XS5ELnB1c2godShlKSksWyJIIiwiSSIsIkQiXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2xbcl0uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT1oW3RdW3JdO2kucHVzaCh1KGUrIn4iK24pKSxpLnB1c2godShuKyJ+IitlKSl9KX0pfSl9KTt2YXIgZj0vW2Etel0qL2csZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJzdHIoMCwzKX0scD0vKG1vbnx0dWV8d2VkfHRodXxmcml8c2F0fHN1bnx0aGV8b2Z8c3R8bmR8cmR8dGgpL2csZz0vW1xzLFwvXC1cLlwoXCldKy9nLHY9L34/KFthcF0pfj9tKH58JCkvLG09ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsibSAifSx5PS9cZFxkXGRcZC8sYj0vKF58filbYS16XXszfS8seD0vW2FwXW0vLF89LzovLHc9L3EoWzEtNF0pLyxBPVsiMzF+bWFyIiwiMzB+anVuIiwiMzB+c2VwIiwiMzF+ZGVjIl0saz1mdW5jdGlvbih0LGUpe3JldHVybiBBW2UtMV19LE09LyA/KFsrXC1dXGRcZDo/XGRcZHxaKSQvO3IucGFyc2VEYXRlPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0VGltZSlyZXR1cm4gdDtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuITE7dD10LnRvTG93ZXJDYXNlKCkucmVwbGFjZShmLGQpLnJlcGxhY2UocCwiIikucmVwbGFjZShnLCJ+IikucmVwbGFjZSh2LG0pLnJlcGxhY2UodyxrKS50cmltKCkucmVwbGFjZShNLCIiKTt2YXIgZSxyLG49bnVsbCxhPWkodCkscz1vKHQpO2U9aFthXVtzXSxyPWUubGVuZ3RoO2Zvcih2YXIgbD0wO3I+bCYmIShuPWVbbF0ucGFyc2UodCkpO2wrKyk7aWYoIShuIGluc3RhbmNlb2YgRGF0ZSkpcmV0dXJuITE7dmFyIGM9bi5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybiBuLnNldFRpbWUobi5nZXRUaW1lKCkrNjAqYyoxZTMpLG59fSx7ZDM6NzAsImZhc3QtaXNudW1lcmljIjo3NH1dLDM2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJldmVudHMiKS5FdmVudEVtaXR0ZXIsaT17aW5pdDpmdW5jdGlvbih0KXtpZih0Ll9ldiBpbnN0YW5jZW9mIG4pcmV0dXJuIHQ7dmFyIGU9bmV3IG47cmV0dXJuIHQuX2V2PWUsdC5vbj1lLm9uLmJpbmQoZSksdC5vbmNlPWUub25jZS5iaW5kKGUpLHQucmVtb3ZlTGlzdGVuZXI9ZS5yZW1vdmVMaXN0ZW5lci5iaW5kKGUpLHQucmVtb3ZlQWxsTGlzdGVuZXJzPWUucmVtb3ZlQWxsTGlzdGVuZXJzLmJpbmQoZSksdC5lbWl0PWZ1bmN0aW9uKHIsbil7InVuZGVmaW5lZCIhPXR5cGVvZiBqUXVlcnkmJmpRdWVyeSh0KS50cmlnZ2VyKHIsbiksZS5lbWl0KHIsbil9LHR9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpOyJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5JiYobj1qUXVlcnkodCkudHJpZ2dlckhhbmRsZXIoZSxyKSk7dmFyIG89dC5fZXY7aWYoIW8pcmV0dXJuIG47dmFyIGE9by5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiYoYT1bYV0pO2Zvcih2YXIgcz1hLnBvcCgpLGw9MDtsPGEubGVuZ3RoO2wrKylhW2xdKHIpO3JldHVybiBpPXMociksdm9pZCAwIT09bj9uOml9LHB1cmdlOmZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdC5fZXYsZGVsZXRlIHQub24sZGVsZXRlIHQub25jZSxkZWxldGUgdC5yZW1vdmVMaXN0ZW5lcixkZWxldGUgdC5yZW1vdmVBbGxMaXN0ZW5lcnMsZGVsZXRlIHQuZW1pdCx0fX07ZS5leHBvcnRzPWl9LHtldmVudHM6NTR9XSwzNjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7Zm9yKHZhciBhLHMsbCxjLHUsaCxmPXRbMF0sZD10Lmxlbmd0aCxwPTE7ZD5wO3ArKyl7YT10W3BdO2ZvcihzIGluIGEpbD1mW3NdLGM9YVtzXSxlJiZjJiYoaShjKXx8KHU9byhjKSkpPyh1Pyh1PSExLGg9bCYmbyhsKT9sOltdKTpoPWwmJmkobCk/bDp7fSxmW3NdPW4oW2gsY10sZSxyKSk6KCJ1bmRlZmluZWQiIT10eXBlb2YgY3x8cikmJihmW3NdPWMpfXJldHVybiBmfXZhciBpPXQoIi4vaXNfcGxhaW5fb2JqZWN0LmpzIiksbz1BcnJheS5pc0FycmF5O3IuZXh0ZW5kRmxhdD1mdW5jdGlvbigpe3JldHVybiBuKGFyZ3VtZW50cywhMSwhMSl9LHIuZXh0ZW5kRGVlcD1mdW5jdGlvbigpe3JldHVybiBuKGFyZ3VtZW50cywhMCwhMSl9LHIuZXh0ZW5kRGVlcEFsbD1mdW5jdGlvbigpe3JldHVybiBuKGFyZ3VtZW50cywhMCwhMCl9fSx7Ii4vaXNfcGxhaW5fb2JqZWN0LmpzIjozNzR9XSwzNzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPWNbdF07cmV0dXJuIHIoZSl9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGUscixuPTA7bjxsLmxlbmd0aDtuKyspaWYoZT1sW25dLHI9bmV3IFJlZ0V4cChzW2VdKSxyLnRlc3QodC50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gZTtjb25zb2xlLndhcm4oInVucmVjb2duaXplZCBjb3VudHJ5IG5hbWU6ICIrdCsiLiIpfXZhciBvPWUuZXhwb3J0cz17fSxhPXQoIi4uL3Bsb3RseSIpLHM9dCgiLi4vY29uc3RhbnRzL2NvdW50cnktbmFtZV90b19pc28zIiksbD1PYmplY3Qua2V5cyhzKSxjPXsiSVNPLTMiOmEuTGliLmlkZW50aXR5LCJVU0Etc3RhdGVzIjphLkxpYi5pZGVudGl0eSwiY291bnRyeSBuYW1lcyI6aX07by5sb2NhdGlvblRvRmVhdHVyZT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBpLG89bih0LGUpLGE9MDthPHIubGVuZ3RoO2ErKylpZihpPXJbYV0saS5pZD09PW8pcmV0dXJuIGk7Y29uc29sZS53YXJuKFsibG9jYXRpb24gd2l0aCBpZCIsbywiZG9lcyBub3QgaGF2ZSBhIG1hdGNoaW5nIHRvcG9qc29uIGZlYXR1cmUgYXQgdGhpcyByZXNvbHV0aW9uLiJdLmpvaW4oIiAiKSl9fSx7Ii4uL2NvbnN0YW50cy9jb3VudHJ5LW5hbWVfdG9faXNvMyI6MzU3LCIuLi9wbG90bHkiOjM5MH1dLDM3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9dSh0KTtyZXR1cm4gclszXSo9ZSxyfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGwodCkuaXNWYWxpZCgpP3Q6aH1mdW5jdGlvbiBvKHQpe3JldHVybiBjKHQpP3Q6Zn1mdW5jdGlvbiBhKHQsZSxyKXt2YXIgYSxsLGMsdSxkLHA9dC5jb2xvcixnPUFycmF5LmlzQXJyYXkocCksdj1BcnJheS5pc0FycmF5KGUpLG09W107aWYoYT12b2lkIDAhPT10LmNvbG9yc2NhbGU/cy5Db2xvcnNjYWxlLm1ha2VTY2FsZUZ1bmN0aW9uKHQuY29sb3JzY2FsZSx0LmNtaW4sdC5jbWF4KTppLGw9Zz9mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10W2VdP2g6YSh0W2VdKX06aSxjPXY/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dFtlXT9mOm8odFtlXSl9Om8sZ3x8dilmb3IodmFyIHk9MDtyPnk7eSsrKXU9bChwLHkpLGQ9YyhlLHkpLG1beV09bih1LGQpO2Vsc2UgbT1uKHAsZSk7cmV0dXJuIG19dmFyIHM9dCgiLi4vcGxvdGx5IiksbD10KCJ0aW55Y29sb3IyIiksYz10KCJmYXN0LWlzbnVtZXJpYyIpLHU9dCgiLi9zdHIycmdiYXJyYXkiKSxoPXQoIi4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLmRlZmF1bHRMaW5lLGY9MTtlLmV4cG9ydHM9YX0seyIuLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjMwMCwiLi4vcGxvdGx5IjozOTAsIi4vc3RyMnJnYmFycmF5IjozODMsImZhc3QtaXNudW1lcmljIjo3NCx0aW55Y29sb3IyOjIzMX1dLDM3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wOyhlPXQuaW5kZXhPZigiPHN1cD4iLGUpKT49MDspe3ZhciByPXQuaW5kZXhPZigiPC9zdXA+IixlKTtpZihlPnIpYnJlYWs7dD10LnNsaWNlKDAsZSkrbCh0LnNsaWNlKGUrNSxyKSkrdC5zbGljZShyKzYpfXJldHVybiB0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVwbGFjZSgvXDxiclw+L2csIlxuIil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9cPC4qXD4vZywiIil9ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9MDsoZT10LmluZGV4T2YoIiYiLGUpKT49MDspe3ZhciByPXQuaW5kZXhPZigiOyIsZSk7aWYoZT5yKWUrPTE7ZWxzZXt2YXIgbj1jW3Quc2xpY2UoZSsxLHIpXTt0PW4/dC5zbGljZSgwLGUpK24rdC5zbGljZShyKzEpOnQuc2xpY2UoMCxlKSt0LnNsaWNlKHIrMSl9fXJldHVybiB0fWZ1bmN0aW9uIHModCl7cmV0dXJuIiIrYShvKG4oaSh0KSkpKX12YXIgbD10KCJzdXBlcnNjcmlwdC10ZXh0IiksYz17bXU6Ilx1MDNiYyIsYW1wOiImIixsdDoiPCIsZ3Q6Ij4ifTtlLmV4cG9ydHM9c30seyJzdXBlcnNjcmlwdC10ZXh0IjoyMjB9XSwzNzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPWUuZXhwb3J0cz17fTtpLm5lc3RlZFByb3BlcnR5PXQoIi4vbmVzdGVkX3Byb3BlcnR5IiksaS5pc1BsYWluT2JqZWN0PXQoIi4vaXNfcGxhaW5fb2JqZWN0Iik7dmFyIG89dCgiLi9jb2VyY2UiKTtpLnZhbE9iamVjdHM9by52YWxPYmplY3RzLGkuY29lcmNlPW8uY29lcmNlLGkuY29lcmNlMj1vLmNvZXJjZTIsaS5jb2VyY2VGb250PW8uY29lcmNlRm9udDt2YXIgYT10KCIuL2RhdGVzIik7aS5kYXRlVGltZTJtcz1hLmRhdGVUaW1lMm1zLGkuaXNEYXRlVGltZT1hLmlzRGF0ZVRpbWUsaS5tczJEYXRlVGltZT1hLm1zMkRhdGVUaW1lLGkucGFyc2VEYXRlPWEucGFyc2VEYXRlO3ZhciBzPXQoIi4vc2VhcmNoIik7aS5maW5kQmluPXMuZmluZEJpbixpLnNvcnRlckFzYz1zLnNvcnRlckFzYyxpLnNvcnRlckRlcz1zLnNvcnRlckRlcyxpLmRpc3RpbmN0VmFscz1zLmRpc3RpbmN0VmFscyxpLnJvdW5kVXA9cy5yb3VuZFVwO3ZhciBsPXQoIi4vc3RhdHMiKTtpLmFnZ051bXM9bC5hZ2dOdW1zLGkubGVuPWwubGVuLGkubWVhbj1sLm1lYW4saS52YXJpYW5jZT1sLnZhcmlhbmNlLGkuc3RkZXY9bC5zdGRldixpLmludGVycD1sLmludGVycDt2YXIgYz10KCIuL21hdHJpeCIpO2kuaW5pdDJkQXJyYXk9Yy5pbml0MmRBcnJheSxpLnRyYW5zcG9zZVJhZ2dlZD1jLnRyYW5zcG9zZVJhZ2dlZCxpLmRvdD1jLmRvdCxpLnRyYW5zbGF0aW9uTWF0cml4PWMudHJhbnNsYXRpb25NYXRyaXgsaS5yb3RhdGlvbk1hdHJpeD1jLnJvdGF0aW9uTWF0cml4LGkucm90YXRpb25YWU1hdHJpeD1jLnJvdGF0aW9uWFlNYXRyaXgsaS5hcHBseTJEVHJhbnNmb3JtPWMuYXBwbHkyRFRyYW5zZm9ybSxpLmFwcGx5MkRUcmFuc2Zvcm0yPWMuYXBwbHkyRFRyYW5zZm9ybTI7dmFyIHU9dCgiLi9leHRlbmQiKTtpLmV4dGVuZEZsYXQ9dS5leHRlbmRGbGF0LGkuZXh0ZW5kRGVlcD11LmV4dGVuZERlZXAsaS5leHRlbmREZWVwQWxsPXUuZXh0ZW5kRGVlcEFsbCxpLm5vdGlmaWVyPXQoIi4vbm90aWZpZXIiKSxpLnN3YXBBdHRycz1mdW5jdGlvbih0LGUscixuKXtyfHwocj0ieCIpLG58fChuPSJ5Iik7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBhPWVbb10scz1pLm5lc3RlZFByb3BlcnR5KHQsYS5yZXBsYWNlKCI/IixyKSksbD1pLm5lc3RlZFByb3BlcnR5KHQsYS5yZXBsYWNlKCI/IixuKSksYz1zLmdldCgpO3Muc2V0KGwuZ2V0KCkpLGwuc2V0KGMpfX0saS5wYXVzZUV2ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbiYmdC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCksdC5jYW5jZWxCdWJibGU9ITAsITF9LGkuVkVSQk9TRT0hMSxpLlRJTUVSPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGkubG9nPWZ1bmN0aW9uKCl7aS5WRVJCT1NFJiZjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9LGkubWFya1RpbWU9ZnVuY3Rpb24odCl7aWYoaS5WRVJCT1NFKXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKTtjb25zb2xlLmxvZyh0LGUtaS5USU1FUiwiKG1zZWMpIiksInRyYWNlIj09PWkuVkVSQk9TRSYmY29uc29sZS50cmFjZSgpLGkuVElNRVI9ZX19LGkuY29uc3RyYWluPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZT5yP01hdGgubWF4KHIsTWF0aC5taW4oZSx0KSk6TWF0aC5tYXgoZSxNYXRoLm1pbihyLHQpKX0saS5iQm94SW50ZXJzZWN0PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcj1yfHwwLHQubGVmdDw9ZS5yaWdodCtyJiZlLmxlZnQ8PXQucmlnaHQrciYmdC50b3A8PWUuYm90dG9tK3ImJmUudG9wPD10LmJvdHRvbStyfSxpLmlkZW50aXR5PWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpLnJhbmRzdHI9ZnVuY3Rpb24gaCh0LGUscil7aWYocnx8KHI9MTYpLHZvaWQgMD09PWUmJihlPTI0KSwwPj1lKXJldHVybiIwIjt2YXIgbixpLG8sYT1NYXRoLmxvZyhNYXRoLnBvdygyLGUpKS9NYXRoLmxvZyhyKSxzPSIiO2ZvcihuPTI7YT09PTEvMDtuKj0yKWE9TWF0aC5sb2coTWF0aC5wb3coMixlL24pKS9NYXRoLmxvZyhyKSpuO3ZhciBsPWEtTWF0aC5mbG9vcihhKTtmb3Iobj0wO248TWF0aC5mbG9vcihhKTtuKyspbz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqcikudG9TdHJpbmcocikscz1vK3M7bCYmKGk9TWF0aC5wb3cocixsKSxvPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSppKS50b1N0cmluZyhyKSxzPW8rcyk7dmFyIGM9cGFyc2VJbnQocyxyKTtyZXR1cm4gdCYmdC5pbmRleE9mKHMpPi0xfHxjIT09MS8wJiZjPj1NYXRoLnBvdygyLGUpP2godCxlLHIpOnN9LGkuT3B0aW9uQ29udHJvbD1mdW5jdGlvbih0LGUpe3R8fCh0PXt9KSxlfHwoZT0ib3B0Iik7dmFyIHI9e307cmV0dXJuIHIub3B0aW9uTGlzdD1bXSxyLl9uZXdvcHRpb249ZnVuY3Rpb24obil7bltlXT10LHJbbi5uYW1lXT1uLHIub3B0aW9uTGlzdC5wdXNoKG4pfSxyWyJfIitlXT10LHJ9LGkuc21vb3RoPWZ1bmN0aW9uKHQsZSl7aWYoZT1NYXRoLnJvdW5kKGUpfHwwLDI+ZSlyZXR1cm4gdDt2YXIgcixuLGksbyxhPXQubGVuZ3RoLHM9MiphLGw9MiplLTEsYz1uZXcgQXJyYXkobCksdT1uZXcgQXJyYXkoYSk7Zm9yKHI9MDtsPnI7cisrKWNbcl09KDEtTWF0aC5jb3MoTWF0aC5QSSoocisxKS9lKSkvKDIqZSk7Zm9yKHI9MDthPnI7cisrKXtmb3Iobz0wLG49MDtsPm47bisrKWk9cituKzEtZSwtYT5pP2ktPXMqTWF0aC5yb3VuZChpL3MpOmk+PXMmJihpLT1zKk1hdGguZmxvb3IoaS9zKSksMD5pP2k9LTEtaTppPj1hJiYoaT1zLTEtaSksbys9dFtpXSpjW25dO3Vbcl09b31yZXR1cm4gdX0saS5wcm9taXNlRXJyb3I9ZnVuY3Rpb24odCl7Y29uc29sZS5sb2codCx0LnN0YWNrKX0saS5zeW5jT3JBc3luYz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBpLm1hcmtUaW1lKCJhc3luYyBkb25lICIrYS5uYW1lKSxpLnN5bmNPckFzeW5jKHQsZSxyKX1mb3IodmFyIG8sYTt0Lmxlbmd0aDspe2lmKGE9dC5zcGxpY2UoMCwxKVswXSxvPWEoZSksbyYmby50aGVuKXJldHVybiBvLnRoZW4obikudGhlbih2b2lkIDAsaS5wcm9taXNlRXJyb3IpO2kubWFya1RpbWUoInN5bmMgZG9uZSAiK2EubmFtZSl9cmV0dXJuIHImJnIoZSl9LGkuc3RyaXBUcmFpbGluZ1NsYXNoPWZ1bmN0aW9uKHQpe3JldHVybiIvIj09PXQuc3Vic3RyKC0xKT90LnN1YnN0cigwLHQubGVuZ3RoLTEpOnR9LGkubm9uZU9yQWxsPWZ1bmN0aW9uKHQsZSxyKXtpZih0KXt2YXIgbixpLG89ITEsYT0hMDtmb3Iobj0wO248ci5sZW5ndGg7bisrKWk9dFtyW25dXSx2b2lkIDAhPT1pJiZudWxsIT09aT9vPSEwOmE9ITE7aWYobyYmIWEpZm9yKG49MDtuPHIubGVuZ3RoO24rKyl0W3Jbbl1dPWVbcltuXV19fSxpLm1lcmdlQXJyYXk9ZnVuY3Rpb24odCxlLHIpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKSxpPTA7bj5pO2krKyllW2ldW3JdPXRbaV19LGkubWluRXh0ZW5kPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e307Im9iamVjdCIhPXR5cGVvZiBlJiYoZT17fSk7dmFyIG4sbyxhLHM9MyxsPU9iamVjdC5rZXlzKHQpO2ZvcihuPTA7bjxsLmxlbmd0aDtuKyspbz1sW25dLGE9dFtvXSwiXyIhPT1vLmNoYXJBdCgwKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGEmJigibW9kdWxlIj09PW8/cltvXT1hOkFycmF5LmlzQXJyYXkoYSk/cltvXT1hLnNsaWNlKDAscyk6YSYmIm9iamVjdCI9PXR5cGVvZiBhP3Jbb109aS5taW5FeHRlbmQodFtvXSxlW29dKTpyW29dPWEpO2ZvcihsPU9iamVjdC5rZXlzKGUpLG49MDtuPGwubGVuZ3RoO24rKylvPWxbbl0sYT1lW29dLCJvYmplY3QiPT10eXBlb2YgYSYmbyBpbiByJiYib2JqZWN0Ij09dHlwZW9mIHJbb118fChyW29dPWEpO3JldHVybiByfSxpLnRpdGxlQ2FzZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKX0saS5jb250YWluc0FueT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKC0xIT09dC5pbmRleE9mKGVbcl0pKXJldHVybiEwO3JldHVybiExfSxpLmdldFBsb3REaXY9ZnVuY3Rpb24odCl7Zm9yKDt0JiZ0LnJlbW92ZUF0dHJpYnV0ZTt0PXQucGFyZW50Tm9kZSlpZihpLmlzUGxvdERpdih0KSlyZXR1cm4gdH0saS5pc1Bsb3REaXY9ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodCk7cmV0dXJuIGUuc2l6ZSgpJiZlLmNsYXNzZWQoImpzLXBsb3RseS1wbG90Iil9LGkucmVtb3ZlRWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT10JiZ0LnBhcmVudE5vZGU7ZSYmZS5yZW1vdmVDaGlsZCh0KX0saS5hZGRTdHlsZVJ1bGU9ZnVuY3Rpb24odCxlKXtpZighaS5zdHlsZVNoZWV0KXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHIpLGkuc3R5bGVTaGVldD1yLnNoZWV0fXZhciBuPWkuc3R5bGVTaGVldDtuLmluc2VydFJ1bGU/bi5pbnNlcnRSdWxlKHQrInsiK2UrIn0iLDApOm4uYWRkUnVsZT9uLmFkZFJ1bGUodCxlLDApOmNvbnNvbGUud2FybigiYWRkU3R5bGVSdWxlIGZhaWxlZCIpfSxpLmlzSUU9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYn19LHsiLi9jb2VyY2UiOjM2NiwiLi9kYXRlcyI6MzY3LCIuL2V4dGVuZCI6MzY5LCIuL2lzX3BsYWluX29iamVjdCI6Mzc0LCIuL21hdHJpeCI6Mzc1LCIuL25lc3RlZF9wcm9wZXJ0eSI6Mzc2LCIuL25vdGlmaWVyIjozNzcsIi4vc2VhcmNoIjozODAsIi4vc3RhdHMiOjM4MixkMzo3MH1dLDM3NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkmJk9iamVjdC5nZXRQcm90b3R5cGVPZih0KT09PU9iamVjdC5wcm90b3R5cGV9fSx7fV0sMzc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuaW5pdDJkQXJyYXk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDt0Pm47bisrKXJbbl09bmV3IEFycmF5KGUpO3JldHVybiByfSxyLnRyYW5zcG9zZVJhZ2dlZD1mdW5jdGlvbih0KXt2YXIgZSxyLG49MCxpPXQubGVuZ3RoO2ZvcihlPTA7aT5lO2UrKyluPU1hdGgubWF4KG4sdFtlXS5sZW5ndGgpO3ZhciBvPW5ldyBBcnJheShuKTtmb3IoZT0wO24+ZTtlKyspZm9yKG9bZV09bmV3IEFycmF5KGkpLHI9MDtpPnI7cisrKW9bZV1bcl09dFtyXVtlXTtyZXR1cm4gb30sci5kb3Q9ZnVuY3Rpb24odCxlKXtpZighdC5sZW5ndGh8fCFlLmxlbmd0aHx8dC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbixpLG89dC5sZW5ndGg7aWYodFswXS5sZW5ndGgpZm9yKG49bmV3IEFycmF5KG8pLGk9MDtvPmk7aSsrKW5baV09ci5kb3QodFtpXSxlKTtlbHNlIGlmKGVbMF0ubGVuZ3RoKXt2YXIgYT1yLnRyYW5zcG9zZVJhZ2dlZChlKTtmb3Iobj1uZXcgQXJyYXkoYS5sZW5ndGgpLGk9MDtpPGEubGVuZ3RoO2krKyluW2ldPXIuZG90KHQsYVtpXSl9ZWxzZSBmb3Iobj0wLGk9MDtvPmk7aSsrKW4rPXRbaV0qZVtpXTtyZXR1cm4gbn0sci50cmFuc2xhdGlvbk1hdHJpeD1mdW5jdGlvbih0LGUpe3JldHVybltbMSwwLHRdLFswLDEsZV0sWzAsMCwxXV19LHIucm90YXRpb25NYXRyaXg9ZnVuY3Rpb24odCl7dmFyIGU9dCpNYXRoLlBJLzE4MDtyZXR1cm5bW01hdGguY29zKGUpLC1NYXRoLnNpbihlKSwwXSxbTWF0aC5zaW4oZSksTWF0aC5jb3MoZSksMF0sWzAsMCwxXV19LHIucm90YXRpb25YWU1hdHJpeD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuZG90KHIuZG90KHIudHJhbnNsYXRpb25NYXRyaXgoZSxuKSxyLnJvdGF0aW9uTWF0cml4KHQpKSxyLnRyYW5zbGF0aW9uTWF0cml4KC1lLC1uKSl9LHIuYXBwbHkyRFRyYW5zZm9ybT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7Mz09PWUubGVuZ3RoJiYoZT1lWzBdKTt2YXIgbj0xPT09YXJndW1lbnRzLmxlbmd0aD9lWzBdOltlWzBdLGVbMV1dO3JldHVybiByLmRvdCh0LFtuWzBdLG5bMV0sMV0pLnNsaWNlKDAsMil9fSxyLmFwcGx5MkRUcmFuc2Zvcm0yPWZ1bmN0aW9uKHQpe3ZhciBlPXIuYXBwbHkyRFRyYW5zZm9ybSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodC5zbGljZSgwLDIpKS5jb25jYXQoZSh0LnNsaWNlKDIsNCkpKX19fSx7fV0sMzc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixpLG8sYSxzLGw9dDtmb3IoYT0wO2E8ZS5sZW5ndGgtMTthKyspe2lmKHI9ZVthXSwtMT09PXIpe2ZvcihpPSEwLG89W10scz0wO3M8bC5sZW5ndGg7cysrKW9bc109bihsW3NdLGUuc2xpY2UoYSsxKSkoKSxvW3NdIT09b1swXSYmKGk9ITEpO3JldHVybiBpP29bMF06b31pZigibnVtYmVyIj09dHlwZW9mIHImJiFBcnJheS5pc0FycmF5KGwpKXJldHVybjtpZihsPWxbcl0sIm9iamVjdCIhPXR5cGVvZiBsfHxudWxsPT09bClyZXR1cm59aWYoIm9iamVjdCI9PXR5cGVvZiBsJiZudWxsIT09bCYmKG89bFtlW2FdXSxudWxsIT09bykpcmV0dXJuIG99fWZ1bmN0aW9uIGkodCxlKXt2YXIgcj1bImFubm90YXRpb25zIiwic2hhcGVzIiwicmFuZ2UiLCJkb21haW4iLCJidXR0b25zIl0sbj0tMT09PXIuaW5kZXhPZihlKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmbn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuLG8sdT10LGg9W3RdLGY9YyhyKSYmIWkocixlW2UubGVuZ3RoLTFdKTtmb3Iobz0wO288ZS5sZW5ndGgtMTtvKyspe2lmKG49ZVtvXSwibnVtYmVyIj09dHlwZW9mIG4mJiFBcnJheS5pc0FycmF5KHUpKXRocm93ImFycmF5IGluZGV4IGJ1dCBjb250YWluZXIgaXMgbm90IGFuIGFycmF5IjtpZigtMT09PW4pe2lmKGY9IWEodSxlLnNsaWNlKG8rMSkscikpYnJlYWs7cmV0dXJufWlmKCFzKHUsbixlW28rMV0sZikpYnJlYWs7aWYodT11W25dLCJvYmplY3QiIT10eXBlb2YgdXx8bnVsbD09PXUpdGhyb3ciY29udGFpbmVyIGlzIG5vdCBhbiBvYmplY3QiO2gucHVzaCh1KX1mPyhvPT09ZS5sZW5ndGgtMSYmZGVsZXRlIHVbZVtvXV0sbChoKSk6dVtlW29dXT1yfX1mdW5jdGlvbiBhKHQsZSxyKXt2YXIgbixpPUFycmF5LmlzQXJyYXkociksYT0hMCxsPXIsdT1pPyExOmMociksaD1lWzBdO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspaSYmKGw9cltuJXIubGVuZ3RoXSx1PWMobCkpLHUmJihhPSExKSxzKHQsbixoLHUpJiZvKHRbbl0sZSkobCk7cmV0dXJuIGF9ZnVuY3Rpb24gcyh0LGUscixuKXtpZih2b2lkIDA9PT10W2VdKXtpZihuKXJldHVybiExOyJudW1iZXIiPT10eXBlb2Ygcj90W2VdPVtdOnRbZV09e319cmV0dXJuITB9ZnVuY3Rpb24gbCh0KXt2YXIgZSxyLG4sbyxhO2ZvcihlPXQubGVuZ3RoLTE7ZT49MDtlLS0pe2lmKG49dFtlXSxhPSExLEFycmF5LmlzQXJyYXkobikpZm9yKHI9bi5sZW5ndGgtMTtyPj0wO3ItLSljKG5bcl0pP2E/bltyXT12b2lkIDA6bi5wb3AoKTphPSEwO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09bilmb3Iobz1PYmplY3Qua2V5cyhuKSxhPSExLApyPW8ubGVuZ3RoLTE7cj49MDtyLS0pYyhuW29bcl1dKSYmIWkobltvW3JdXSxvW3JdKT9kZWxldGUgbltvW3JdXTphPSEwO2lmKGEpcmV0dXJufX1mdW5jdGlvbiBjKHQpe3JldHVybiB2b2lkIDA9PT10fHxudWxsPT09dD8hMDoib2JqZWN0IiE9dHlwZW9mIHQ/ITE6QXJyYXkuaXNBcnJheSh0KT8hdC5sZW5ndGg6IU9iamVjdC5rZXlzKHQpLmxlbmd0aH1mdW5jdGlvbiB1KHQsZSxyKXtyZXR1cm57c2V0OmZ1bmN0aW9uKCl7dGhyb3ciYmFkIGNvbnRhaW5lciJ9LGdldDpmdW5jdGlvbigpe30sYXN0cjplLHBhcnRzOnIsb2JqOnR9fXZhciBoPXQoImZhc3QtaXNudW1lcmljIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoaChlKSllPVN0cmluZyhlKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgZXx8IlstMV0iPT09ZS5zdWJzdHIoZS5sZW5ndGgtNCkpdGhyb3ciYmFkIHByb3BlcnR5IHN0cmluZyI7Zm9yKHZhciByLGksYSxzPTAsbD1lLnNwbGl0KCIuIik7czxsLmxlbmd0aDspe2lmKHI9U3RyaW5nKGxbc10pLm1hdGNoKC9eKFteXFtcXV0qKSgoXFtcLT9bMC05XSpcXSkrKSQvKSl7aWYoclsxXSlsW3NdPXJbMV07ZWxzZXtpZigwIT09cyl0aHJvdyJiYWQgcHJvcGVydHkgc3RyaW5nIjtsLnNwbGljZSgwLDEpfWZvcihpPXJbMl0uc3Vic3RyKDEsclsyXS5sZW5ndGgtMikuc3BsaXQoIl1bIiksYT0wO2E8aS5sZW5ndGg7YSsrKXMrKyxsLnNwbGljZShzLDAsTnVtYmVyKGlbYV0pKX1zKyt9cmV0dXJuIm9iamVjdCIhPXR5cGVvZiB0P3UodCxlLGwpOntzZXQ6byh0LGwpLGdldDpuKHQsbCksYXN0cjplLHBhcnRzOmwsb2JqOnR9fX0seyJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoImZhc3QtaXNudW1lcmljIiksbz1bXTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQpe3QuZHVyYXRpb24oNzAwKS5zdHlsZSgib3BhY2l0eSIsMCkuZWFjaCgiZW5kIixmdW5jdGlvbih0KXt2YXIgZT1vLmluZGV4T2YodCk7LTEhPT1lJiZvLnNwbGljZShlLDEpLG4uc2VsZWN0KHRoaXMpLnJlbW92ZSgpfSl9aWYoLTE9PT1vLmluZGV4T2YodCkpe28ucHVzaCh0KTt2YXIgYT0xZTM7aShlKT9hPWU6ImxvbmciPT09ZSYmKGE9M2UzKTt2YXIgcz1uLnNlbGVjdCgiYm9keSIpLnNlbGVjdEFsbCgiLnBsb3RseS1ub3RpZmllciIpLmRhdGEoWzBdKTtzLmVudGVyKCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJwbG90bHktbm90aWZpZXIiLCEwKTt2YXIgbD1zLnNlbGVjdEFsbCgiLm5vdGlmaWVyLW5vdGUiKS5kYXRhKG8pO2wuZW50ZXIoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoIm5vdGlmaWVyLW5vdGUiLCEwKS5zdHlsZSgib3BhY2l0eSIsMCkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKTtlLmFwcGVuZCgiYnV0dG9uIikuY2xhc3NlZCgibm90aWZpZXItY2xvc2UiLCEwKS5odG1sKCImdGltZXM7Iikub24oImNsaWNrIixmdW5jdGlvbigpe2UudHJhbnNpdGlvbigpLmNhbGwocil9KSxlLmFwcGVuZCgicCIpLmh0bWwodCksZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNzAwKS5zdHlsZSgib3BhY2l0eSIsMSkudHJhbnNpdGlvbigpLmRlbGF5KGEpLmNhbGwocil9KX19fSx7ZDM6NzAsImZhc3QtaXNudW1lcmljIjo3NH1dLDM3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL21hdHJpeCIpLmRvdCxpPWUuZXhwb3J0cz17fTtpLnRlc3Rlcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSl7dmFyIHI9dFswXSxuPXRbMV07cmV0dXJuIGk+cnx8cj5vfHxhPm58fG4+cz8hMTohZXx8IWModCl9ZnVuY3Rpb24gcih0LGUpe3ZhciByPXRbMF0sbD10WzFdO2lmKGk+cnx8cj5vfHxhPmx8fGw+cylyZXR1cm4hMTt2YXIgYyx1LGgsZixkLHA9bi5sZW5ndGgsZz1uWzBdWzBdLHY9blswXVsxXSxtPTA7Zm9yKGM9MTtwPmM7YysrKWlmKHU9ZyxoPXYsZz1uW2NdWzBdLHY9bltjXVsxXSxmPU1hdGgubWluKHUsZyksIShmPnJ8fHI+TWF0aC5tYXgodSxnKXx8bD5NYXRoLm1heChoLHYpKSlpZihsPE1hdGgubWluKGgsdikpciE9PWYmJm0rKztlbHNle2lmKGQ9Zz09PXU/bDpoKyhyLXUpKih2LWgpLyhnLXUpLGw9PT1kKXJldHVybiAxIT09Y3x8IWU7ZD49bCYmciE9PWYmJm0rK31yZXR1cm4gbSUyPT09MX12YXIgbj10LnNsaWNlKCksaT1uWzBdWzBdLG89aSxhPW5bMF1bMV0scz1hO24ucHVzaChuWzBdKTtmb3IodmFyIGw9MTtsPG4ubGVuZ3RoO2wrKylpPU1hdGgubWluKGksbltsXVswXSksbz1NYXRoLm1heChvLG5bbF1bMF0pLGE9TWF0aC5taW4oYSxuW2xdWzFdKSxzPU1hdGgubWF4KHMsbltsXVsxXSk7dmFyIGMsdT0hMTtyZXR1cm4gNT09PW4ubGVuZ3RoJiYoblswXVswXT09PW5bMV1bMF0/blsyXVswXT09PW5bM11bMF0mJm5bMF1bMV09PT1uWzNdWzFdJiZuWzFdWzFdPT09blsyXVsxXSYmKHU9ITAsYz1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PW5bMF1bMF19KTpuWzBdWzFdPT09blsxXVsxXSYmblsyXVsxXT09PW5bM11bMV0mJm5bMF1bMF09PT1uWzNdWzBdJiZuWzFdWzBdPT09blsyXVswXSYmKHU9ITAsYz1mdW5jdGlvbih0KXtyZXR1cm4gdFsxXT09PW5bMF1bMV19KSkse3htaW46aSx4bWF4Om8seW1pbjphLHltYXg6cyxwdHM6bixjb250YWluczp1P2U6cixpc1JlY3Q6dX19O3ZhciBvPWkuaXNTZWdtZW50QmVudD1mdW5jdGlvbih0LGUscixpKXt2YXIgbyxhLHMsbD10W2VdLGM9W3Rbcl1bMF0tbFswXSx0W3JdWzFdLWxbMV1dLHU9bihjLGMpLGg9TWF0aC5zcXJ0KHUpLGY9Wy1jWzFdL2gsY1swXS9oXTtmb3Iobz1lKzE7cj5vO28rKylpZihhPVt0W29dWzBdLWxbMF0sdFtvXVsxXS1sWzFdXSxzPW4oYSxjKSwwPnN8fHM+dXx8TWF0aC5hYnMobihhLGYpKT5pKXJldHVybiEwO3JldHVybiExfTtpLmZpbHRlcj1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocil7dC5wdXNoKHIpO3ZhciBzPW4ubGVuZ3RoLGw9aTtuLnNwbGljZShhKzEpO2Zvcih2YXIgYz1sKzE7Yzx0Lmxlbmd0aDtjKyspKGM9PT10Lmxlbmd0aC0xfHxvKHQsbCxjKzEsZSkpJiYobi5wdXNoKHRbY10pLG4ubGVuZ3RoPHMtMiYmKGk9YyxhPW4ubGVuZ3RoLTEpLGw9Yyl9dmFyIG49W3RbMF1dLGk9MCxhPTA7aWYodC5sZW5ndGg+MSl7dmFyIHM9dC5wb3AoKTtyKHMpfXJldHVybnthZGRQdDpyLHJhdzp0LGZpbHRlcmVkOm59fX0seyIuL21hdHJpeCI6Mzc1fV0sMzc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmb3IodmFyIHIsbj1bXSxvPTA7bzxlLmxlbmd0aDtvKyspcj1lW29dLHI9PT10P25bb109cjoib2JqZWN0Ij09dHlwZW9mIHI/bltvXT1BcnJheS5pc0FycmF5KHIpP2kuTGliLmV4dGVuZERlZXAoW10scik6aS5MaWIuZXh0ZW5kRGVlcEFsbCh7fSxyKTpuW29dPXI7cmV0dXJuIG59dmFyIGk9dCgiLi4vcGxvdGx5Iiksbz17fTtvLmFkZD1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBvLGE7cmV0dXJuIHQudW5kb1F1ZXVlPXQudW5kb1F1ZXVlfHx7aW5kZXg6MCxxdWV1ZTpbXSxzZXF1ZW5jZTohMX0sYT10LnVuZG9RdWV1ZS5pbmRleCx0LmF1dG9wbGF5P3ZvaWQodC51bmRvUXVldWUuaW5TZXF1ZW5jZXx8KHQuYXV0b3BsYXk9ITEpKTooIXQudW5kb1F1ZXVlLnNlcXVlbmNlfHx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPyhvPXt1bmRvOntjYWxsczpbXSxhcmdzOltdfSxyZWRvOntjYWxsczpbXSxhcmdzOltdfX0sdC51bmRvUXVldWUucXVldWUuc3BsaWNlKGEsdC51bmRvUXVldWUucXVldWUubGVuZ3RoLWEsbyksdC51bmRvUXVldWUuaW5kZXgrPTEpOm89dC51bmRvUXVldWUucXVldWVbYS0xXSx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSExLG8udW5kby5jYWxscy51bnNoaWZ0KGUpLG8udW5kby5hcmdzLnVuc2hpZnQociksby5yZWRvLmNhbGxzLnB1c2gobiksdm9pZCBvLnJlZG8uYXJncy5wdXNoKGkpKX0sby5zdGFydFNlcXVlbmNlPWZ1bmN0aW9uKHQpe3QudW5kb1F1ZXVlPXQudW5kb1F1ZXVlfHx7aW5kZXg6MCxxdWV1ZTpbXSxzZXF1ZW5jZTohMX0sdC51bmRvUXVldWUuc2VxdWVuY2U9ITAsdC51bmRvUXVldWUuYmVnaW5TZXF1ZW5jZT0hMH0sby5zdG9wU2VxdWVuY2U9ZnVuY3Rpb24odCl7dC51bmRvUXVldWU9dC51bmRvUXVldWV8fHtpbmRleDowLHF1ZXVlOltdLHNlcXVlbmNlOiExfSx0LnVuZG9RdWV1ZS5zZXF1ZW5jZT0hMSx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSExfSxvLnVuZG89ZnVuY3Rpb24odCl7dmFyIGUscjtpZih0LmZyYW1ld29yayYmdC5mcmFtZXdvcmsuaXNQb2xhcilyZXR1cm4gdm9pZCB0LmZyYW1ld29yay51bmRvKCk7aWYoISh2b2lkIDA9PT10LnVuZG9RdWV1ZXx8aXNOYU4odC51bmRvUXVldWUuaW5kZXgpfHx0LnVuZG9RdWV1ZS5pbmRleDw9MCkpe2Zvcih0LnVuZG9RdWV1ZS5pbmRleC0tLGU9dC51bmRvUXVldWUucXVldWVbdC51bmRvUXVldWUuaW5kZXhdLHQudW5kb1F1ZXVlLmluU2VxdWVuY2U9ITAscj0wO3I8ZS51bmRvLmNhbGxzLmxlbmd0aDtyKyspby5wbG90RG8odCxlLnVuZG8uY2FsbHNbcl0sZS51bmRvLmFyZ3Nbcl0pO3QudW5kb1F1ZXVlLmluU2VxdWVuY2U9ITEsdC5hdXRvcGxheT0hMX19LG8ucmVkbz1mdW5jdGlvbih0KXt2YXIgZSxyO2lmKHQuZnJhbWV3b3JrJiZ0LmZyYW1ld29yay5pc1BvbGFyKXJldHVybiB2b2lkIHQuZnJhbWV3b3JrLnJlZG8oKTtpZighKHZvaWQgMD09PXQudW5kb1F1ZXVlfHxpc05hTih0LnVuZG9RdWV1ZS5pbmRleCl8fHQudW5kb1F1ZXVlLmluZGV4Pj10LnVuZG9RdWV1ZS5xdWV1ZS5sZW5ndGgpKXtmb3IoZT10LnVuZG9RdWV1ZS5xdWV1ZVt0LnVuZG9RdWV1ZS5pbmRleF0sdC51bmRvUXVldWUuaW5TZXF1ZW5jZT0hMCxyPTA7cjxlLnJlZG8uY2FsbHMubGVuZ3RoO3IrKylvLnBsb3REbyh0LGUucmVkby5jYWxsc1tyXSxlLnJlZG8uYXJnc1tyXSk7dC51bmRvUXVldWUuaW5TZXF1ZW5jZT0hMSx0LmF1dG9wbGF5PSExLHQudW5kb1F1ZXVlLmluZGV4Kyt9fSxvLnBsb3REbz1mdW5jdGlvbih0LGUscil7dC5hdXRvcGxheT0hMCxyPW4odCxyKSxlLmFwcGx5KG51bGwscil9LGUuZXhwb3J0cz1vfSx7Ii4uL3Bsb3RseSI6MzkwfV0sMzgwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gZT50fWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZT49dH1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQ+ZX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHQ+PWV9dmFyIHM9dCgiZmFzdC1pc251bWVyaWMiKTtyLmZpbmRCaW49ZnVuY3Rpb24odCxlLHIpe2lmKHMoZS5zdGFydCkpcmV0dXJuIHI/TWF0aC5jZWlsKCh0LWUuc3RhcnQpL2Uuc2l6ZSktMTpNYXRoLmZsb29yKCh0LWUuc3RhcnQpL2Uuc2l6ZSk7dmFyIGwsYyx1PTAsaD1lLmxlbmd0aCxmPTA7Zm9yKGM9ZVtlLmxlbmd0aC0xXT49ZVswXT9yP246aTpyP2E6bztoPnUmJmYrKzwxMDA7KWw9TWF0aC5mbG9vcigodStoKS8yKSxjKGVbbF0sdCk/dT1sKzE6aD1sO3JldHVybiBmPjkwJiZjb25zb2xlLmxvZygiTG9uZyBiaW5hcnkgc2VhcmNoLi4uIiksdS0xfSxyLnNvcnRlckFzYz1mdW5jdGlvbih0LGUpe3JldHVybiB0LWV9LHIuc29ydGVyRGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0sci5kaXN0aW5jdFZhbHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgpO2Uuc29ydChyLnNvcnRlckFzYyk7Zm9yKHZhciBuPWUubGVuZ3RoLTEsaT1lW25dLWVbMF18fDEsbz1pLyhufHwxKS8xZTQsYT1bZVswXV0scz0wO24+cztzKyspZVtzKzFdPmVbc10rbyYmKGk9TWF0aC5taW4oaSxlW3MrMV0tZVtzXSksYS5wdXNoKGVbcysxXSkpO3JldHVybnt2YWxzOmEsbWluRGlmZjppfX0sci5yb3VuZFVwPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4saT0wLG89ZS5sZW5ndGgtMSxhPTAscz1yPzA6MSxsPXI/MTowLGM9cj9NYXRoLmNlaWw6TWF0aC5mbG9vcjtvPmkmJmErKzwxMDA7KW49YygoaStvKS8yKSxlW25dPD10P2k9bitzOm89bi1sO3JldHVybiBlW2ldfX0seyJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcGxvdGx5IiksaT1mdW5jdGlvbigpe307ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KSJmdW5jdGlvbiI9PXR5cGVvZiB0W2VdJiYodFtlXT1pKTt0LmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LmNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQuY29udGFpbmVyKX07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHIudGV4dENvbnRlbnQ9IldlYmdsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBicm93c2VyIC0gdmlzaXQgaHR0cDovL2dldC53ZWJnbC5vcmcgZm9yIG1vcmUgaW5mbyIsci5zdHlsZS5jdXJzb3I9InBvaW50ZXIiLHIuc3R5bGUuZm9udFNpemU9IjI0cHgiLHIuc3R5bGUuY29sb3I9bi5Db2xvci5kZWZhdWx0c1swXSx0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChyKSx0LmNvbnRhaW5lci5zdHlsZS5iYWNrZ3JvdW5kPSIjRkZGRkZGIix0LmNvbnRhaW5lci5vbmNsaWNrPWZ1bmN0aW9uKCl7d2luZG93Lm9wZW4oImh0dHA6Ly9nZXQud2ViZ2wub3JnIil9LCExfX0seyIuLi9wbG90bHkiOjM5MH1dLDM4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpO3IuYWdnTnVtcz1mdW5jdGlvbih0LGUsaSxvKXt2YXIgYSxzO2lmKG98fChvPWkubGVuZ3RoKSxuKGUpfHwoZT0hMSksQXJyYXkuaXNBcnJheShpWzBdKSl7Zm9yKHM9bmV3IEFycmF5KG8pLGE9MDtvPmE7YSsrKXNbYV09ci5hZ2dOdW1zKHQsZSxpW2FdKTtpPXN9Zm9yKGE9MDtvPmE7YSsrKW4oZSk/bihpW2FdKSYmKGU9dCgrZSwraVthXSkpOmU9aVthXTtyZXR1cm4gZX0sci5sZW49ZnVuY3Rpb24odCl7cmV0dXJuIHIuYWdnTnVtcyhmdW5jdGlvbih0KXtyZXR1cm4gdCsxfSwwLHQpfSxyLm1lYW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8KGU9ci5sZW4odCkpLHIuYWdnTnVtcyhmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9LDAsdCkvZX0sci52YXJpYW5jZT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGV8fChlPXIubGVuKHQpKSxuKGkpfHwoaT1yLm1lYW4odCxlKSksci5hZ2dOdW1zKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrTWF0aC5wb3coZS1pLDIpfSwwLHQpL2V9LHIuc3RkZXY9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLnNxcnQoci52YXJpYW5jZSh0LGUsbikpfSxyLmludGVycD1mdW5jdGlvbih0LGUpe2lmKCFuKGUpKXRocm93Im4gc2hvdWxkIGJlIGEgZmluaXRlIG51bWJlciI7aWYoZT1lKnQubGVuZ3RoLS41LDA+ZSlyZXR1cm4gdFswXTtpZihlPnQubGVuZ3RoLTEpcmV0dXJuIHRbdC5sZW5ndGgtMV07dmFyIHI9ZSUxO3JldHVybiByKnRbTWF0aC5jZWlsKGUpXSsoMS1yKSp0W01hdGguZmxvb3IoZSldfX0seyJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdD1pKHQpLG8uc3RyMlJnYmFBcnJheSh0LnRvUmdiU3RyaW5nKCkpfXZhciBpPXQoInRpbnljb2xvcjIiKSxvPXQoImFycmF5dG9vbHMiKTtlLmV4cG9ydHM9bn0se2FycmF5dG9vbHM6NDgsdGlueWNvbG9yMjoyMzF9XSwzODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3JldHVybiB0Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtlXX1mdW5jdGlvbiBpKHQpe3JldHVybiB0LnJlcGxhY2UoLyg8fCZsdDt8JiM2MDspL2csIlxcbHQgIikucmVwbGFjZSgvKD58Jmd0O3wmIzYyOykvZywiXFxndCAiKX1mdW5jdGlvbiBvKHQsZSxyKXt2YXIgbj0ibWF0aC1vdXRwdXQtIitsLkxpYi5yYW5kc3RyKFtdLDY0KSxvPWMuc2VsZWN0KCJib2R5IikuYXBwZW5kKCJkaXYiKS5hdHRyKHtpZDpufSkuc3R5bGUoe3Zpc2liaWxpdHk6ImhpZGRlbiIscG9zaXRpb246ImFic29sdXRlIn0pLnN0eWxlKHsiZm9udC1zaXplIjplLmZvbnRTaXplKyJweCJ9KS50ZXh0KGkodCkpO01hdGhKYXguSHViLlF1ZXVlKFsiVHlwZXNldCIsTWF0aEpheC5IdWIsby5ub2RlKCldLGZ1bmN0aW9uKCl7dmFyIGU9Yy5zZWxlY3QoImJvZHkiKS5zZWxlY3QoIiNNYXRoSmF4X1NWR19nbHlwaHMiKTtpZihvLnNlbGVjdCgiLk1hdGhKYXhfU1ZHIikuZW1wdHkoKXx8IW8uc2VsZWN0KCJzdmciKS5ub2RlKCkpY29uc29sZS5sb2coIlRoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgdGV4IHN5bnRheC4iLHQpLHIoKTtlbHNle3ZhciBuPW8uc2VsZWN0KCJzdmciKS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cihvLnNlbGVjdCgiLk1hdGhKYXhfU1ZHIiksZSxuKX1vLnJlbW92ZSgpfSl9ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9bC51dGlsLmh0bWxfZW50aXR5X2RlY29kZSh0KSxyPWUuc3BsaXQoLyg8W148Pl0qPikvKS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaCgvPChcLz8pKFteID5dKilccyooLiopPi9pKSxyPWUmJmVbMl0udG9Mb3dlckNhc2UoKSxuPWZbcl07aWYodm9pZCAwIT09bil7dmFyIGk9ZVsxXSxvPWVbM10sYT1vLm1hdGNoKC9ec3R5bGVccyo9XHMqIihbXiJdKykiXHMqL2kpO2lmKCJhIj09PXIpe2lmKGkpcmV0dXJuIjwvYT4iO2lmKCJocmVmIiE9PW8uc3Vic3RyKDAsNCkudG9Mb3dlckNhc2UoKSlyZXR1cm4iPGE+Ijt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIHMuaHJlZj1vLnN1YnN0cig0KS5yZXBsYWNlKC9bIic9XS9nLCIiKSwtMT09PWQuaW5kZXhPZihzLnByb3RvY29sKT8iPGE+IjonPGEgeGxpbms6c2hvdz0ibmV3IiB4bGluazpocmVmJytvLnN1YnN0cig0KSsiPiJ9aWYoImJyIj09PXIpcmV0dXJuIjxicj4iO2lmKGkpcmV0dXJuInN1cCI9PT1yPyc8L3RzcGFuPjx0c3BhbiBkeT0iMC40MmVtIj4mI3gyMDBiOzwvdHNwYW4+Jzoic3ViIj09PXI/JzwvdHNwYW4+PHRzcGFuIGR5PSItMC4yMWVtIj4mI3gyMDBiOzwvdHNwYW4+JzoiPC90c3Bhbj4iO3ZhciBjPSI8dHNwYW4iO3JldHVybiJzdXAiIT09ciYmInN1YiIhPT1yfHwoYz0iJiN4MjAwYjsiK2MpLGEmJihhPWFbMV0ucmVwbGFjZSgvKF58Oylccypjb2xvcjovLCIkMSBmaWxsOiIpLG49KG4/bisiOyI6IiIpK2EpLGMrKG4/JyBzdHlsZT0iJytuKyciJzoiIikrIj4ifXJldHVybiBsLnV0aWwueG1sX2VudGl0eV9lbmNvZGUodCkucmVwbGFjZSgvPC9nLCImbHQ7Iil9KSxuPVtdLGk9ci5pbmRleE9mKCI8YnI+Iik7aT4wO2k9ci5pbmRleE9mKCI8YnI+IixpKzEpKW4ucHVzaChpKTt2YXIgbz0wO24uZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIGU9dCtvLG49ci5zbGljZSgwLGUpLGk9IiIsYT1uLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgcz1uW2FdLm1hdGNoKC88KFwvPykuKj4vaSk7aWYocyYmIjxicj4iIT09blthXSl7c1sxXXx8KGk9blthXSk7YnJlYWt9fWkmJihyLnNwbGljZShlKzEsMCxpKSxyLnNwbGljZShlLDAsIjwvdHNwYW4+Iiksbys9Mil9KTt2YXIgYT1yLmpvaW4oIiIpLHM9YS5zcGxpdCgvPGJyPi9naSk7cmV0dXJuIHMubGVuZ3RoPjEmJihyPXMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuJzx0c3BhbiBjbGFzcz0ibGluZSIgZHk9IicrMS4zKmUrJ2VtIj4nK3QrIjwvdHNwYW4+In0pKSxyLmpvaW4oIiIpfWZ1bmN0aW9uIHModCxlLHIpe3ZhciBuLGksbyxhPXIuaG9yaXpvbnRhbEFsaWduLHM9ci52ZXJ0aWNhbEFsaWdufHwidG9wIixsPXQubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9ZS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIGk9ImJvdHRvbSI9PT1zP2Z1bmN0aW9uKCl7cmV0dXJuIGwuYm90dG9tLW4uaGVpZ2h0fToibWlkZGxlIj09PXM/ZnVuY3Rpb24oKXtyZXR1cm4gbC50b3ArKGwuaGVpZ2h0LW4uaGVpZ2h0KS8yfTpmdW5jdGlvbigpe3JldHVybiBsLnRvcH0sbz0icmlnaHQiPT09YT9mdW5jdGlvbigpe3JldHVybiBsLnJpZ2h0LW4ud2lkdGh9OiJjZW50ZXIiPT09YT9mdW5jdGlvbigpe3JldHVybiBsLmxlZnQrKGwud2lkdGgtbi53aWR0aCkvMn06ZnVuY3Rpb24oKXtyZXR1cm4gbC5sZWZ0fSxmdW5jdGlvbigpe3JldHVybiBuPXRoaXMubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuc3R5bGUoe3RvcDppKCktYy50b3ArInB4IixsZWZ0Om8oKS1jLmxlZnQrInB4Iiwiei1pbmRleCI6MWUzfSksdGhpc319dmFyIGw9dCgiLi4vcGxvdGx5IiksYz10KCJkMyIpLHU9dCgiLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxoPWUuZXhwb3J0cz17fTtjLnNlbGVjdGlvbi5wcm90b3R5cGUuYXBwZW5kU1ZHPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bJzxzdmcgeG1sbnM9IicsdS5zdmcsJyIgJywneG1sbnM6eGxpbms9IicsdS54bGluaywnIj4nLHQsIjwvc3ZnPiJdLmpvaW4oIiIpLHI9KG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJhcHBsaWNhdGlvbi94bWwiKSxuPXIuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQ7bjspdGhpcy5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKCkub3duZXJEb2N1bWVudC5pbXBvcnROb2RlKG4sITApKSxuPW4ubmV4dFNpYmxpbmc7cmV0dXJuIHIucXVlcnlTZWxlY3RvcigicGFyc2VyZXJyb3IiKT8oY29uc29sZS5sb2coci5xdWVyeVNlbGVjdG9yKCJwYXJzZXJlcnJvciBkaXYiKS50ZXh0Q29udGVudCksbnVsbCk6Yy5zZWxlY3QodGhpcy5ub2RlKCkubGFzdENoaWxkKX0saC5odG1sX2VudGl0eV9kZWNvZGU9ZnVuY3Rpb24odCl7dmFyIGU9Yy5zZWxlY3QoImJvZHkiKS5hcHBlbmQoImRpdiIpLnN0eWxlKHtkaXNwbGF5OiJub25lIn0pLmh0bWwoIiIpLHI9dC5yZXBsYWNlKC8oJlteO10qOykvZ2ksZnVuY3Rpb24odCl7cmV0dXJuIiZsdDsiPT09dD8iJiM2MDsiOiImcnQ7Ij09PXQ/IiYjNjI7IjplLmh0bWwodCkudGV4dCgpfSk7cmV0dXJuIGUucmVtb3ZlKCkscn0saC54bWxfZW50aXR5X2VuY29kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC8mKD8hXHcrO3xcI1swLTldKzt8IFwjeFswLTlBLUZdKzspL2csIiZhbXA7Iil9LGguY29udmVydFRvVHNwYW5zPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcigpe2QuZW1wdHkoKXx8KHA9dS5hdHRyKCJjbGFzcyIpKyItbWF0aCIsZC5zZWxlY3QoInN2Zy4iK3ApLnJlbW92ZSgpKSx0LnRleHQoIiIpLnN0eWxlKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIiwid2hpdGUtc3BhY2UiOiJwcmUifSksZj10LmFwcGVuZFNWRyhzKSxmfHx0LnRleHQoaSksdC5zZWxlY3QoImEiKS5zaXplKCkmJnQuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksZSYmZS5jYWxsKHUpfXZhciBpPXQudGV4dCgpLHM9YShpKSx1PXQsaD0hdS5hdHRyKCJkYXRhLW5vdGV4IikmJnMubWF0Y2goLyhbXiRdKikoWyRdK1teJF0qWyRdKykoW14kXSopLyksZj1pLGQ9Yy5zZWxlY3QodS5ub2RlKCkucGFyZW50Tm9kZSk7aWYoIWQuZW1wdHkoKSl7dmFyIHA9dS5hdHRyKCJjbGFzcyIpP3UuYXR0cigiY2xhc3MiKS5zcGxpdCgiICIpWzBdOiJ0ZXh0IjtwKz0iLW1hdGgiLGQuc2VsZWN0QWxsKCJzdmcuIitwKS5yZW1vdmUoKSxkLnNlbGVjdEFsbCgiZy4iK3ArIi1ncm91cCIpLnJlbW92ZSgpLHQuc3R5bGUoe3Zpc2liaWxpdHk6bnVsbH0pO2Zvcih2YXIgZz10Lm5vZGUoKTtnJiZnLnJlbW92ZUF0dHJpYnV0ZTtnPWcucGFyZW50Tm9kZSlnLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1iYiIpO2lmKGgpe3ZhciB2PWwuTGliLmdldFBsb3REaXYodS5ub2RlKCkpOyh2JiZ2Ll9wcm9taXNlc3x8W10pLnB1c2gobmV3IFByb21pc2UoZnVuY3Rpb24odCl7dS5zdHlsZSh7dmlzaWJpbGl0eToiaGlkZGVuIn0pO3ZhciBpPXtmb250U2l6ZTpwYXJzZUludCh1LnN0eWxlKCJmb250LXNpemUiKSwxMCl9O28oaFsyXSxpLGZ1bmN0aW9uKGksbyxhKXtkLnNlbGVjdEFsbCgic3ZnLiIrcCkucmVtb3ZlKCksZC5zZWxlY3RBbGwoImcuIitwKyItZ3JvdXAiKS5yZW1vdmUoKTt2YXIgcz1pJiZpLnNlbGVjdCgic3ZnIik7aWYoIXN8fCFzLm5vZGUoKSlyZXR1cm4gcigpLHZvaWQgdCgpO3ZhciBsPWQuYXBwZW5kKCJnIikuY2xhc3NlZChwKyItZ3JvdXAiLCEwKS5hdHRyKHsicG9pbnRlci1ldmVudHMiOiJub25lIn0pO2wubm9kZSgpLmFwcGVuZENoaWxkKHMubm9kZSgpKSxvJiZvLm5vZGUoKSYmcy5ub2RlKCkuaW5zZXJ0QmVmb3JlKG8ubm9kZSgpLmNsb25lTm9kZSghMCkscy5ub2RlKCkuZmlyc3RDaGlsZCkscy5hdHRyKHsiY2xhc3MiOnAsaGVpZ2h0OmEuaGVpZ2h0LHByZXNlcnZlQXNwZWN0UmF0aW86InhNaW5ZTWluIG1lZXQifSkuc3R5bGUoe292ZXJmbG93OiJ2aXNpYmxlIiwicG9pbnRlci1ldmVudHMiOiJub25lIn0pO3ZhciBjPXUuc3R5bGUoImZpbGwiKXx8ImJsYWNrIjtzLnNlbGVjdCgiZyIpLmF0dHIoe2ZpbGw6YyxzdHJva2U6Y30pO3ZhciBoPW4ocywid2lkdGgiKSxmPW4ocywiaGVpZ2h0IiksZz0rdS5hdHRyKCJ4IiktaCp7c3RhcnQ6MCxtaWRkbGU6LjUsZW5kOjF9W3UuYXR0cigidGV4dC1hbmNob3IiKXx8InN0YXJ0Il0sdj1wYXJzZUludCh1LnN0eWxlKCJmb250LXNpemUiKSwxMCl8fG4odSwiaGVpZ2h0IiksbT0tdi80OyJ5Ij09PXBbMF0/KGwuYXR0cih7dHJhbnNmb3JtOiJyb3RhdGUoIitbLTkwLCt1LmF0dHIoIngiKSwrdS5hdHRyKCJ5IildKyIpIHRyYW5zbGF0ZSgiK1staC8yLG0tZi8yXSsiKSJ9KSxzLmF0dHIoe3g6K3UuYXR0cigieCIpLHk6K3UuYXR0cigieSIpfSkpOiJsIj09PXBbMF0/cy5hdHRyKHt4OnUuYXR0cigieCIpLHk6bS1mLzJ9KToiYSI9PT1wWzBdP3MuYXR0cih7eDowLHk6bX0pOnMuYXR0cih7eDpnLHk6K3UuYXR0cigieSIpK20tZi8yfSksZSYmZS5jYWxsKHUsbCksdChsKX0pfSkpfWVsc2UgcigpO3JldHVybiB0fX07dmFyIGY9e3N1cDonZm9udC1zaXplOjcwJSIgZHk9Ii0wLjZlbScsc3ViOidmb250LXNpemU6NzAlIiBkeT0iMC4zZW0nLGI6ImZvbnQtd2VpZ2h0OmJvbGQiLGk6ImZvbnQtc3R5bGU6aXRhbGljIixhOiIiLHNwYW46IiIsYnI6IiIsZW06ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQifSxkPVsiaHR0cDoiLCJodHRwczoiLCJtYWlsdG86Il0scD1uZXcgUmVnRXhwKCI8Lz8oIitPYmplY3Qua2V5cyhmKS5qb2luKCJ8IikrIikoIFtePl0qKT8vPz4iLCJnIik7aC5wbGFpblRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuKHR8fCIiKS5yZXBsYWNlKHAsIiAiKX0saC5tYWtlRWRpdGFibGU9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXtvKCksYS5zdHlsZSh7b3BhY2l0eTowfSk7dmFyIHQsZT1mLmF0dHIoImNsYXNzIik7dD1lPyIuIitlLnNwbGl0KCIgIilbMF0rIi1tYXRoLWdyb3VwIjoiW2NsYXNzKj0tbWF0aC1ncm91cF0iLHQmJmMuc2VsZWN0KGEubm9kZSgpLnBhcmVudE5vZGUpLnNlbGVjdCh0KS5zdHlsZSh7b3BhY2l0eTowfSl9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm5vZGUoKSxyPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7ci5zZWxlY3ROb2RlQ29udGVudHMoZSk7dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpO24ucmVtb3ZlQWxsUmFuZ2VzKCksbi5hZGRSYW5nZShyKSxlLmZvY3VzKCl9ZnVuY3Rpb24gbygpe3ZhciB0PWMuc2VsZWN0KGwuTGliLmdldFBsb3REaXYoYS5ub2RlKCkpKSxlPXQuc2VsZWN0KCIuc3ZnLWNvbnRhaW5lciIpLG49ZS5hcHBlbmQoImRpdiIpO24uY2xhc3NlZCgicGx1Z2luLWVkaXRhYmxlIGVkaXRhYmxlIiwhMCkuc3R5bGUoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsImZvbnQtZmFtaWx5IjphLnN0eWxlKCJmb250LWZhbWlseSIpfHwiQXJpYWwiLCJmb250LXNpemUiOmEuc3R5bGUoImZvbnQtc2l6ZSIpfHwxMixjb2xvcjpyLmZpbGx8fGEuc3R5bGUoImZpbGwiKXx8ImJsYWNrIixvcGFjaXR5OjEsImJhY2tncm91bmQtY29sb3IiOnIuYmFja2dyb3VuZHx8InRyYW5zcGFyZW50IixvdXRsaW5lOiIjZmZmZmZmMzMgMXB4IHNvbGlkIixtYXJnaW46Wy1wYXJzZUZsb2F0KGEuc3R5bGUoImZvbnQtc2l6ZSIpKS84KzEsMCwwLC0xXS5qb2luKCJweCAiKSsicHgiLHBhZGRpbmc6IjAiLCJib3gtc2l6aW5nIjoiYm9yZGVyLWJveCJ9KS5hdHRyKHtjb250ZW50ZWRpdGFibGU6ITB9KS50ZXh0KHIudGV4dHx8YS5hdHRyKCJkYXRhLXVuZm9ybWF0dGVkIikpLmNhbGwocyhhLGUscikpLm9uKCJibHVyIixmdW5jdGlvbigpe2EudGV4dCh0aGlzLnRleHRDb250ZW50KS5zdHlsZSh7b3BhY2l0eToxfSk7dmFyIHQsZT1jLnNlbGVjdCh0aGlzKS5hdHRyKCJjbGFzcyIpO3Q9ZT8iLiIrZS5zcGxpdCgiICIpWzBdKyItbWF0aC1ncm91cCI6IltjbGFzcyo9LW1hdGgtZ3JvdXBdIix0JiZjLnNlbGVjdChhLm5vZGUoKS5wYXJlbnROb2RlKS5zZWxlY3QodCkuc3R5bGUoe29wYWNpdHk6MH0pO3ZhciByPXRoaXMudGV4dENvbnRlbnQ7Yy5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApLnJlbW92ZSgpLGMuc2VsZWN0KGRvY3VtZW50KS5vbigibW91c2V1cCIsbnVsbCksdS5lZGl0LmNhbGwoYSxyKX0pLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXt2YXIgdD10aGlzO2Muc2VsZWN0KGRvY3VtZW50KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5ldmVudC50YXJnZXQ9PT10PyExOnZvaWQoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW4ubm9kZSgpJiZuLm5vZGUoKS5ibHVyKCkpfSl9KS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Mjc9PT1jLmV2ZW50LndoaWNoPyhhLnN0eWxlKHtvcGFjaXR5OjF9KSxjLnNlbGVjdCh0aGlzKS5zdHlsZSh7b3BhY2l0eTowfSkub24oImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KS50cmFuc2l0aW9uKCkucmVtb3ZlKCksdS5jYW5jZWwuY2FsbChhLHRoaXMudGV4dENvbnRlbnQpKToodS5pbnB1dC5jYWxsKGEsdGhpcy50ZXh0Q29udGVudCksYy5zZWxlY3QodGhpcykuY2FsbChzKGEsZSxyKSkpfSkub24oImtleWRvd24iLGZ1bmN0aW9uKCl7MTM9PT1jLmV2ZW50LndoaWNoJiZ0aGlzLmJsdXIoKX0pLmNhbGwoaSl9cnx8KHI9e30pO3ZhciBhPXRoaXMsdT1jLmRpc3BhdGNoKCJlZGl0IiwiaW5wdXQiLCJjYW5jZWwiKSxoPWMuc2VsZWN0KHRoaXMubm9kZSgpKS5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjoiYWxsIn0pLGY9ZXx8aDtyZXR1cm4gZSYmaC5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KSxyLmltbWVkaWF0ZT9uKCk6Zi5vbigiY2xpY2siLG4pLGMucmViaW5kKHRoaXMsdSwib24iKX19LHsiLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjM2MiwiLi4vcGxvdGx5IjozOTAsZDM6NzB9XSwzODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49ZS5leHBvcnRzPXt9LGk9dCgiLi4vY29uc3RhbnRzL2dlb19jb25zdGFudHMiKS5sb2NhdGlvbm1vZGVUb0xheWVyLG89dCgidG9wb2pzb24iKS5mZWF0dXJlO24uZ2V0VG9wb2pzb25OYW1lPWZ1bmN0aW9uKHQpe3JldHVyblt0LnNjb3BlLnJlcGxhY2UoLyAvZywiLSIpLCJfIix0LnJlc29sdXRpb24udG9TdHJpbmcoKSwibSJdLmpvaW4oIiIpfSxuLmdldFRvcG9qc29uUGF0aD1mdW5jdGlvbih0LGUpe3JldHVybiB0K2UrIi5qc29uIn0sbi5nZXRUb3BvanNvbkZlYXR1cmVzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9aVt0LmxvY2F0aW9ubW9kZV0sbj1lLm9iamVjdHNbcl07cmV0dXJuIG8oZSxuKS5mZWF0dXJlc319LHsiLi4vY29uc3RhbnRzL2dlb19jb25zdGFudHMiOjM1OCx0b3BvanNvbjoyMzJ9XSwzODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCksbnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKCJObyBET00gZWxlbWVudCB3aXRoIGlkICciK3QrIicgZXhpc3RzIG9uIHRoZSBwYWdlLiIpO3JldHVybiBlfWlmKG51bGw9PT10fHx2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiRE9NIGVsZW1lbnQgcHJvdmlkZWQgaXMgbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdH1mdW5jdGlvbiBpKHQsZSl7dC5fZnVsbExheW91dC5fcGFwZXJkaXYuc3R5bGUoImJhY2tncm91bmQiLCJ3aGl0ZSIpLFAuZGVmYXVsdENvbmZpZy5zZXRCYWNrZ3JvdW5kKHQsZSl9ZnVuY3Rpb24gbyh0LGUpe3QuX2NvbnRleHR8fCh0Ll9jb250ZXh0PXouZXh0ZW5kRmxhdCh7fSxQLmRlZmF1bHRDb25maWcpKTt2YXIgcj10Ll9jb250ZXh0O2UmJihPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QgaW4gciYmKCJzZXRCYWNrZ3JvdW5kIj09PXQmJiJvcGFxdWUiPT09ZVt0XT9yW3RdPWk6clt0XT1lW3RdKX0pLGUucGxvdDNkUGl4ZWxSYXRpbyYmIXIucGxvdEdsUGl4ZWxSYXRpbyYmKHIucGxvdEdsUGl4ZWxSYXRpbz1yLnBsb3QzZFBpeGVsUmF0aW8pKSxyLnN0YXRpY1Bsb3QmJihyLmVkaXRhYmxlPSExLHIuYXV0b3NpemFibGU9ITEsci5zY3JvbGxab29tPSExLHIuZG91YmxlQ2xpY2s9ITEsci5zaG93VGlwcz0hMSxyLnNob3dMaW5rPSExLHIuZGlzcGxheU1vZGVCYXI9ITEpfWZ1bmN0aW9uIGEodCxlLHIpe3ZhciBuPUwuc2VsZWN0KHQpLnNlbGVjdEFsbCgiLnBsb3QtY29udGFpbmVyIikuZGF0YShbMF0pO24uZW50ZXIoKS5pbnNlcnQoImRpdiIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQoInBsb3QtY29udGFpbmVyIHBsb3RseSIsITApO3ZhciBpPW4uc2VsZWN0QWxsKCIuc3ZnLWNvbnRhaW5lciIpLmRhdGEoWzBdKTtpLmVudGVyKCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJzdmctY29udGFpbmVyIiwhMCkuc3R5bGUoInBvc2l0aW9uIiwicmVsYXRpdmUiKSxpLmh0bWwoIiIpLGUmJih0LmRhdGE9ZSksciYmKHQubGF5b3V0PXIpLFAubWljcm9wb2xhci5tYW5hZ2VyLmZpbGxMYXlvdXQodCksImluaXRpYWwiPT09dC5fZnVsbExheW91dC5hdXRvc2l6ZSYmdC5fY29udGV4dC5hdXRvc2l6YWJsZSYmKHcodCx7fSksdC5fZnVsbExheW91dC5hdXRvc2l6ZT1yLmF1dG9zaXplPSEwKSxpLnN0eWxlKHt3aWR0aDp0Ll9mdWxsTGF5b3V0LndpZHRoKyJweCIsaGVpZ2h0OnQuX2Z1bGxMYXlvdXQuaGVpZ2h0KyJweCJ9KSx0LmZyYW1ld29yaz1QLm1pY3JvcG9sYXIubWFuYWdlci5mcmFtZXdvcmsodCksdC5mcmFtZXdvcmsoe2RhdGE6dC5kYXRhLGxheW91dDp0LmxheW91dH0saS5ub2RlKCkpLHQuZnJhbWV3b3JrLnNldFVuZG9Qb2ludCgpO3ZhciBvPXQuZnJhbWV3b3JrLnN2ZygpLGE9MSxzPXQuX2Z1bGxMYXlvdXQudGl0bGU7IiIhPT1zJiZzfHwoYT0wKTt2YXIgbD0iQ2xpY2sgdG8gZW50ZXIgdGl0bGUiLGM9ZnVuY3Rpb24oKXt0aGlzLmNhbGwoUC51dGlsLmNvbnZlcnRUb1RzcGFucyl9LHU9by5zZWxlY3QoIi50aXRsZS1ncm91cCB0ZXh0IikuY2FsbChjKTtpZih0Ll9jb250ZXh0LmVkaXRhYmxlKXt1LmF0dHIoeyJkYXRhLXVuZm9ybWF0dGVkIjpzfSkscyYmcyE9PWx8fChhPS4yLHUuYXR0cih7ImRhdGEtdW5mb3JtYXR0ZWQiOmx9KS50ZXh0KGwpLnN0eWxlKHtvcGFjaXR5OmF9KS5vbigibW91c2VvdmVyLm9wYWNpdHkiLGZ1bmN0aW9uKCl7TC5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKDEwMCkuc3R5bGUoIm9wYWNpdHkiLDEpfSkub24oIm1vdXNlb3V0Lm9wYWNpdHkiLGZ1bmN0aW9uKCl7TC5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKDFlMykuc3R5bGUoIm9wYWNpdHkiLDApfSkpO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy5jYWxsKFAudXRpbC5tYWtlRWRpdGFibGUpLm9uKCJlZGl0IixmdW5jdGlvbihlKXt0LmZyYW1ld29yayh7bGF5b3V0Ont0aXRsZTplfX0pLHRoaXMuYXR0cih7ImRhdGEtdW5mb3JtYXR0ZWQiOmV9KS50ZXh0KGUpLmNhbGwoYyksdGhpcy5jYWxsKGgpfSkub24oImNhbmNlbCIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLmF0dHIoImRhdGEtdW5mb3JtYXR0ZWQiKTt0aGlzLnRleHQodCkuY2FsbChjKX0pfTt1LmNhbGwoaCl9cmV0dXJuIHQuX2NvbnRleHQuc2V0QmFja2dyb3VuZCh0LHQuX2Z1bGxMYXlvdXQucGFwZXJfYmdjb2xvciksSS5hZGRMaW5rcyh0KSxQcm9taXNlLnJlc29sdmUoKX1mdW5jdGlvbiBzKHQpe3ZhciBlLHI7dHx8KHQ9e30pLHQueGF4aXMxJiYodC54YXhpc3x8KHQueGF4aXM9dC54YXhpczEpLGRlbGV0ZSB0LnhheGlzMSksdC55YXhpczEmJih0LnlheGlzfHwodC55YXhpcz10LnlheGlzMSksZGVsZXRlIHQueWF4aXMxKTt2YXIgbj1QLkF4ZXMubGlzdCh7X2Z1bGxMYXlvdXQ6dH0pO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspe3ZhciBpPW5bZV07aS5hbmNob3ImJiJmcmVlIiE9PWkuYW5jaG9yJiYoaS5hbmNob3I9UC5BeGVzLmNsZWFuSWQoaS5hbmNob3IpKSxpLm92ZXJsYXlpbmcmJihpLm92ZXJsYXlpbmc9UC5BeGVzLmNsZWFuSWQoaS5vdmVybGF5aW5nKSksaS50eXBlfHwoaS5pc2RhdGU/aS50eXBlPSJkYXRlIjppLmlzbG9nP2kudHlwZT0ibG9nIjppLmlzZGF0ZT09PSExJiZpLmlzbG9nPT09ITEmJihpLnR5cGU9ImxpbmVhciIpKSwid2l0aHplcm8iIT09aS5hdXRvcmFuZ2UmJiJ0b3plcm8iIT09aS5hdXRvcmFuZ2V8fChpLmF1dG9yYW5nZT0hMCxpLnJhbmdlbW9kZT0idG96ZXJvIiksZGVsZXRlIGkuaXNsb2csZGVsZXRlIGkuaXNkYXRlLGRlbGV0ZSBpLmNhdGVnb3JpZXMsaChpLCJkb21haW4iKSYmZGVsZXRlIGkuZG9tYWluLHZvaWQgMCE9PWkuYXV0b3RpY2smJih2b2lkIDA9PT1pLnRpY2ttb2RlJiYoaS50aWNrbW9kZT1pLmF1dG90aWNrPyJhdXRvIjoibGluZWFyIiksZGVsZXRlIGkuYXV0b3RpY2spfXZvaWQgMD09PXQuYW5ub3RhdGlvbnN8fEFycmF5LmlzQXJyYXkodC5hbm5vdGF0aW9ucyl8fChjb25zb2xlLmxvZygiYW5ub3RhdGlvbnMgbXVzdCBiZSBhbiBhcnJheSIpLGRlbGV0ZSB0LmFubm90YXRpb25zKTt2YXIgbz0odC5hbm5vdGF0aW9uc3x8W10pLmxlbmd0aDtmb3IoZT0wO28+ZTtlKyspe3ZhciBhPXQuYW5ub3RhdGlvbnNbZV07YS5yZWYmJigicGFwZXIiPT09YS5yZWY/KGEueHJlZj0icGFwZXIiLGEueXJlZj0icGFwZXIiKToiZGF0YSI9PT1hLnJlZiYmKGEueHJlZj0ieCIsYS55cmVmPSJ5IiksZGVsZXRlIGEucmVmKSxsKGEsInhyZWYiKSxsKGEsInlyZWYiKX12b2lkIDA9PT10LnNoYXBlc3x8QXJyYXkuaXNBcnJheSh0LnNoYXBlcyl8fChjb25zb2xlLmxvZygic2hhcGVzIG11c3QgYmUgYW4gYXJyYXkiKSxkZWxldGUgdC5zaGFwZXMpO3ZhciBzPSh0LnNoYXBlc3x8W10pLmxlbmd0aDtmb3IoZT0wO3M+ZTtlKyspe3ZhciBjPXQuc2hhcGVzW2VdO2woYywieHJlZiIpLGwoYywieXJlZiIpfXZhciB1PXQubGVnZW5kO3UmJih1Lng+Mz8odS54PTEuMDIsdS54YW5jaG9yPSJsZWZ0Iik6dS54PC0yJiYodS54PS0uMDIsdS54YW5jaG9yPSJyaWdodCIpLHUueT4zPyh1Lnk9MS4wMix1LnlhbmNob3I9ImJvdHRvbSIpOnUueTwtMiYmKHUueT0tLjAyLHUueWFuY2hvcj0idG9wIikpLCJyb3RhdGUiPT09dC5kcmFnbW9kZSYmKHQuZHJhZ21vZGU9Im9yYml0IiksdC5zY2VuZTEmJih0LnNjZW5lfHwodC5zY2VuZT10LnNjZW5lMSksZGVsZXRlIHQuc2NlbmUxKTt2YXIgZj1JLmdldFN1YnBsb3RJZHModCwiZ2wzZCIpO2ZvcihlPTA7ZTxmLmxlbmd0aDtlKyspe3ZhciBkPXRbZltlXV0scD1kLmNhbWVyYXBvc2l0aW9uO2lmKEFycmF5LmlzQXJyYXkocCkmJjQ9PT1wWzBdLmxlbmd0aCl7dmFyIGc9cFswXSx2PXBbMV0sbT1wWzJdLHk9UyhbXSxnKSxiPVtdO2ZvcihyPTA7Mz5yOysrciliW3JdPXZbZV0rbSp5WzIrNCpyXTtkLmNhbWVyYT17ZXllOnt4OmJbMF0seTpiWzFdLHo6YlsyXX0sY2VudGVyOnt4OnZbMF0seTp2WzFdLHo6dlsyXX0sdXA6e3g6eVsxXSx5OnlbNV0sejp5WzldfX0sZGVsZXRlIGQuY2FtZXJhcG9zaXRpb259fXJldHVybiB6Lm1hcmtUaW1lKCJmaW5pc2hlZCByZXN0IG9mIGNsZWFuTGF5b3V0LCBzdGFydGluZyBjb2xvciIpLGouY2xlYW4odCksei5tYXJrVGltZSgiZmluaXNoZWQgY2xlYW5MYXlvdXQgY29sb3IuY2xlYW4iKSx0fWZ1bmN0aW9uIGwodCxlKXt2YXIgcj10W2VdLG49ZS5jaGFyQXQoMCk7ciYmInBhcGVyIiE9PXImJih0W2VdPVAuQXhlcy5jbGVhbklkKHIsbikpfWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIHI9W10sbj0odC5jb25jYXQoQXJyYXkuaXNBcnJheShlKT9lOltdKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuInVpZCJpbiB0fSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnVpZH0pKSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07aWYoISgidWlkImluIG8pfHwtMSE9PXIuaW5kZXhPZihvLnVpZCkpe3ZhciBhLHM7Zm9yKHM9MDsxMDA+cyYmKGE9ei5yYW5kc3RyKG4pLC0xIT09ci5pbmRleE9mKGEpKTtzKyspO28udWlkPXoucmFuZHN0cihuKSxuLnB1c2goby51aWQpfWlmKHIucHVzaChvLnVpZCksImhpc3RvZ3JhbXkiPT09by50eXBlJiYieGJpbnMiaW4gbyYmISgieWJpbnMiaW4gbykmJihvLnliaW5zPW8ueGJpbnMsZGVsZXRlIG8ueGJpbnMpLG8uZXJyb3JfeSYmIm9wYWNpdHkiaW4gby5lcnJvcl95KXt2YXIgbD1qLmRlZmF1bHRzLGM9by5lcnJvcl95LmNvbG9yfHwoSS50cmFjZUlzKG8sImJhciIpP2ouZGVmYXVsdExpbmU6bFtpJWwubGVuZ3RoXSk7by5lcnJvcl95LmNvbG9yPWouYWRkT3BhY2l0eShqLnJnYihjKSxqLm9wYWNpdHkoYykqby5lcnJvcl95Lm9wYWNpdHkpLGRlbGV0ZSBvLmVycm9yX3kub3BhY2l0eX1pZigiYmFyZGlyImluIG8mJigiaCIhPT1vLmJhcmRpcnx8IUkudHJhY2VJcyhvLCJiYXIiKSYmImhpc3RvZ3JhbSIhPT1vLnR5cGUuc3Vic3RyKDAsOSl8fChvLm9yaWVudGF0aW9uPSJoIix4KG8pKSxkZWxldGUgby5iYXJkaXIpLCJoaXN0b2dyYW15Ij09PW8udHlwZSYmeChvKSwiaGlzdG9ncmFteCIhPT1vLnR5cGUmJiJoaXN0b2dyYW15IiE9PW8udHlwZXx8KG8udHlwZT0iaGlzdG9ncmFtIiksInNjbCJpbiBvJiYoby5jb2xvcnNjYWxlPW8uc2NsLGRlbGV0ZSBvLnNjbCksInJldmVyc2VzY2wiaW4gbyYmKG8ucmV2ZXJzZXNjYWxlPW8ucmV2ZXJzZXNjbCxkZWxldGUgby5yZXZlcnNlc2NsKSxvLnhheGlzJiYoby54YXhpcz1QLkF4ZXMuY2xlYW5JZChvLnhheGlzLCJ4IikpLG8ueWF4aXMmJihvLnlheGlzPVAuQXhlcy5jbGVhbklkKG8ueWF4aXMsInkiKSksSS50cmFjZUlzKG8sImdsM2QiKSYmby5zY2VuZSYmKG8uc2NlbmU9SS5zdWJwbG90c1JlZ2lzdHJ5LmdsM2QuY2xlYW5JZChvLnNjZW5lKSksSS50cmFjZUlzKG8sInBpZSIpfHwoQXJyYXkuaXNBcnJheShvLnRleHRwb3NpdGlvbik/by50ZXh0cG9zaXRpb249by50ZXh0cG9zaXRpb24ubWFwKHUpOm8udGV4dHBvc2l0aW9uJiYoby50ZXh0cG9zaXRpb249dShvLnRleHRwb3NpdGlvbikpKSxJLnRyYWNlSXMobywiMmRNYXAiKSYmKCJZSUduQnUiPT09by5jb2xvcnNjYWxlJiYoby5jb2xvcnNjYWxlPSJZbEduQnUiKSwiWUlPclJkIj09PW8uY29sb3JzY2FsZSYmKG8uY29sb3JzY2FsZT0iWWxPclJkIikpLEkudHJhY2VJcyhvLCJtYXJrZXJDb2xvcnNjYWxlIikmJm8ubWFya2VyKXt2YXIgZj1vLm1hcmtlcjsiWUlHbkJ1Ij09PWYuY29sb3JzY2FsZSYmKGYuY29sb3JzY2FsZT0iWWxHbkJ1IiksIllJT3JSZCI9PT1mLmNvbG9yc2NhbGUmJihmLmNvbG9yc2NhbGU9IllsT3JSZCIpfWgobywibGluZSIpJiZkZWxldGUgby5saW5lLCJtYXJrZXIiaW4gbyYmKGgoby5tYXJrZXIsImxpbmUiKSYmZGVsZXRlIG8ubWFya2VyLmxpbmUsaChvLCJtYXJrZXIiKSYmZGVsZXRlIG8ubWFya2VyKSx6Lm1hcmtUaW1lKCJmaW5pc2hlZCByZXN0IG9mIGNsZWFuRGF0YSwgc3RhcnRpbmcgY29sb3IiKSxqLmNsZWFuKG8pLHoubWFya1RpbWUoImZpbmlzaGVkIGNsZWFuRGF0YSBjb2xvci5jbGVhbiIpfX1mdW5jdGlvbiB1KHQpe3ZhciBlPSJtaWRkbGUiLHI9ImNlbnRlciI7cmV0dXJuLTEhPT10LmluZGV4T2YoInRvcCIpP2U9InRvcCI6LTEhPT10LmluZGV4T2YoImJvdHRvbSIpJiYoZT0iYm90dG9tIiksLTEhPT10LmluZGV4T2YoImxlZnQiKT9yPSJsZWZ0IjotMSE9PXQuaW5kZXhPZigicmlnaHQiKSYmKHI9InJpZ2h0IiksZSsiICIrcn1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIGUgaW4gdCYmIm9iamVjdCI9PXR5cGVvZiB0W2VdJiYwPT09T2JqZWN0LmtleXModFtlXSkubGVuZ3RofWZ1bmN0aW9uIGYodCl7dmFyIGUscixuLGksbz1QLkF4ZXMubGlzdCh0KSxhPXQuX2Z1bGxEYXRhLHM9dC5fZnVsbExheW91dCxsPXQuY2FsY2RhdGE9bmV3IEFycmF5KGEubGVuZ3RoKTtmb3IodC5maXJzdHNjYXR0ZXI9ITAsdC5udW1ib3hlcz0wLHQuX2htcGl4Y291bnQ9MCx0Ll9obWx1bWNvdW50PTAscy5fcGllY29sb3JtYXA9e30scy5fcGllZGVmYXVsdGNvbG9yY291bnQ9MCxlPTA7ZTxvLmxlbmd0aDtlKyspb1tlXS5fY2F0ZWdvcmllcz1bXTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXI9YVtlXSxuPXIuX21vZHVsZSxpPVtdLG4mJnIudmlzaWJsZT09PSEwJiZuLmNhbGMmJihpPW4uY2FsYyh0LHIpKSxBcnJheS5pc0FycmF5KGkpJiZpWzBdfHwoaT1be3g6ITEseTohMX1dKSxpWzBdLnR8fChpWzBdLnQ9e30pLGlbMF0udHJhY2U9cix6Lm1hcmtUaW1lKCJkb25lIHdpdGggY2FsY2RhdGEgZm9yICIrZSksbFtlXT1pfWZ1bmN0aW9uIGQodCxlKXt2YXIgcixuLGk9ZSsxLG89W107Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyluPXRbcl0sMD5uP28ucHVzaChpK24pOm8ucHVzaChuKTtyZXR1cm4gb31mdW5jdGlvbiBwKHQsZSxyKXt2YXIgbixpO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspe2lmKGk9ZVtuXSxpIT09cGFyc2VJbnQoaSwxMCkpdGhyb3cgbmV3IEVycm9yKCJhbGwgdmFsdWVzIGluICIrcisiIG11c3QgYmUgaW50ZWdlcnMiKTtpZihpPj10LmRhdGEubGVuZ3RofHxpPC10LmRhdGEubGVuZ3RoKXRocm93IG5ldyBFcnJvcihyKyIgbXVzdCBiZSB2YWxpZCBpbmRpY2VzIGZvciBnZC5kYXRhLiIpO2lmKGUuaW5kZXhPZihpLG4rMSk+LTF8fGk+PTAmJmUuaW5kZXhPZigtdC5kYXRhLmxlbmd0aCtpKT4tMXx8MD5pJiZlLmluZGV4T2YodC5kYXRhLmxlbmd0aCtpKT4tMSl0aHJvdyBuZXcgRXJyb3IoImVhY2ggaW5kZXggaW4gIityKyIgbXVzdCBiZSB1bmlxdWUuIil9fWZ1bmN0aW9uIGcodCxlLHIpe2lmKCFBcnJheS5pc0FycmF5KHQuZGF0YSkpdGhyb3cgbmV3IEVycm9yKCJnZC5kYXRhIG11c3QgYmUgYW4gYXJyYXkuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiY3VycmVudEluZGljZXMgaXMgYSByZXF1aXJlZCBhcmd1bWVudC4iKTtpZihBcnJheS5pc0FycmF5KGUpfHwoZT1bZV0pLHAodCxlLCJjdXJyZW50SW5kaWNlcyIpLCJ1bmRlZmluZWQiPT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKSwidW5kZWZpbmVkIiE9dHlwZW9mIHImJnAodCxyLCJuZXdJbmRpY2VzIiksInVuZGVmaW5lZCIhPXR5cGVvZiByJiZlLmxlbmd0aCE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY3VycmVudCBhbmQgbmV3IGluZGljZXMgbXVzdCBiZSBvZiBlcXVhbCBsZW5ndGguIil9ZnVuY3Rpb24gdih0LGUscil7dmFyIG4saTtpZighQXJyYXkuaXNBcnJheSh0LmRhdGEpKXRocm93IG5ldyBFcnJvcigiZ2QuZGF0YSBtdXN0IGJlIGFuIGFycmF5LiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoInRyYWNlcyBtdXN0IGJlIGRlZmluZWQuIik7Zm9yKEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksbj0wO248ZS5sZW5ndGg7bisrKWlmKGk9ZVtuXSwib2JqZWN0IiE9dHlwZW9mIGl8fEFycmF5LmlzQXJyYXkoaSl8fG51bGw9PT1pKXRocm93IG5ldyBFcnJvcigiYWxsIHZhbHVlcyBpbiB0cmFjZXMgYXJyYXkgbXVzdCBiZSBub24tYXJyYXkgb2JqZWN0cyIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKSwidW5kZWZpbmVkIiE9dHlwZW9mIHImJnIubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpZiBpbmRpY2VzIGlzIHNwZWNpZmllZCwgdHJhY2VzLmxlbmd0aCBtdXN0IGVxdWFsIGluZGljZXMubGVuZ3RoIil9ZnVuY3Rpb24gbSh0LGUscixuKXt2YXIgaT16LmlzUGxhaW5PYmplY3Qobik7aWYoIUFycmF5LmlzQXJyYXkodC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdkLmRhdGEgbXVzdCBiZSBhbiBhcnJheSIpO2lmKCF6LmlzUGxhaW5PYmplY3QoZSkpdGhyb3cgbmV3IEVycm9yKCJ1cGRhdGUgbXVzdCBiZSBhIGtleTp2YWx1ZSBvYmplY3QiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHIpdGhyb3cgbmV3IEVycm9yKCJpbmRpY2VzIG11c3QgYmUgYW4gaW50ZWdlciBvciBhcnJheSBvZiBpbnRlZ2VycyIpO3AodCxyLCJpbmRpY2VzIik7Zm9yKHZhciBvIGluIGUpe2lmKCFBcnJheS5pc0FycmF5KGVbb10pfHxlW29dLmxlbmd0aCE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYXR0cmlidXRlICIrbysiIG11c3QgYmUgYW4gYXJyYXkgb2YgbGVuZ3RoIGVxdWFsIHRvIGluZGljZXMgYXJyYXkgbGVuZ3RoIik7aWYoaSYmKCEobyBpbiBuKXx8IUFycmF5LmlzQXJyYXkobltvXSl8fG5bb10ubGVuZ3RoIT09ZVtvXS5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigid2hlbiBtYXhQb2ludHMgaXMgc2V0IGFzIGEga2V5OnZhbHVlIG9iamVjdCBpdCBtdXN0IGNvbnRhaW4gYSAxOjEgY29ycmlzcG9uZGVuY2Ugd2l0aCB0aGUga2V5cyBhbmQgbnVtYmVyIG9mIHRyYWNlcyBpbiB0aGUgdXBkYXRlIG9iamVjdCIpfX1mdW5jdGlvbiB5KHQsZSxyLG4pe3ZhciBpLG8sYSxzLGwsYz16LmlzUGxhaW5PYmplY3QobiksdT1bXTtBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pLHI9ZChyLHQuZGF0YS5sZW5ndGgtMSk7Zm9yKHZhciBoIGluIGUpZm9yKHZhciBmPTA7ZjxyLmxlbmd0aDtmKyspe2lmKGk9dC5kYXRhW3JbZl1dLGE9ei5uZXN0ZWRQcm9wZXJ0eShpLGgpLG89YS5nZXQoKSxzPWVbaF1bZl0sIUFycmF5LmlzQXJyYXkocykpdGhyb3cgbmV3IEVycm9yKCJhdHRyaWJ1dGU6ICIraCsiIGluZGV4OiAiK2YrIiBtdXN0IGJlIGFuIGFycmF5Iik7aWYoIUFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZXh0ZW5kIG1pc3Npbmcgb3Igbm9uLWFycmF5IGF0dHJpYnV0ZTogIitoKTtsPWM/bltoXVtmXTpuLEMobCl8fChsPS0xKSx1LnB1c2goe3Byb3A6YSx0YXJnZXQ6byxpbnNlcnQ6cyxtYXhwOk1hdGguZmxvb3IobCl9KX1yZXR1cm4gdX1mdW5jdGlvbiBiKHQsZSxyLG4saSxvKXttKHQsZSxyLG4pO2Zvcih2YXIgYSxzLGwsYz15KHQsZSxyLG4pLHU9W10saD17fSxmPXt9LGQ9MDtkPGMubGVuZ3RoO2QrKylzPWNbZF0ucHJvcCxsPWNbZF0ubWF4cCxhPWkoY1tkXS50YXJnZXQsY1tkXS5pbnNlcnQpLGw+PTAmJmw8YS5sZW5ndGgmJih1PW8oYSxsKSksbD1jW2RdLnRhcmdldC5sZW5ndGgscy5zZXQoYSksQXJyYXkuaXNBcnJheShoW3MuYXN0cl0pfHwoaFtzLmFzdHJdPVtdKSxBcnJheS5pc0FycmF5KGZbcy5hc3RyXSl8fChmW3MuYXN0cl09W10pLGhbcy5hc3RyXS5wdXNoKHUpLGZbcy5hc3RyXS5wdXNoKGwpO3JldHVybnt1cGRhdGU6aCxtYXhQb2ludHM6Zn19ZnVuY3Rpb24geCh0KXt2YXIgZTtpZih6LnN3YXBBdHRycyh0LFsiPyIsIj8wIiwiZD8iLCI/YmlucyIsIm5iaW5zPyIsImF1dG9iaW4/IiwiP3NyYyIsImVycm9yXz8iXSksQXJyYXkuaXNBcnJheSh0LnopJiZBcnJheS5pc0FycmF5KHQuelswXSkmJih0LnRyYW5zcG9zZT9kZWxldGUgdC50cmFuc3Bvc2U6dC50cmFuc3Bvc2U9ITApLHQuZXJyb3JfeCYmdC5lcnJvcl95KXt2YXIgcj10LmVycm9yX3ksbj0iY29weV95c3R5bGUiaW4gcj9yLmNvcHlfeXN0eWxlOiEoci5jb2xvcnx8ci50aGlja25lc3N8fHIud2lkdGgpO3ouc3dhcEF0dHJzKHQsWyJlcnJvcl8/LmNvcHlfeXN0eWxlIl0pLG4mJnouc3dhcEF0dHJzKHQsWyJlcnJvcl8/LmNvbG9yIiwiZXJyb3JfPy50aGlja25lc3MiLCJlcnJvcl8/LndpZHRoIl0pfWlmKHQuaG92ZXJpbmZvKXt2YXIgaT10LmhvdmVyaW5mby5zcGxpdCgiKyIpO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspIngiPT09aVtlXT9pW2VdPSJ5IjoieSI9PT1pW2VdJiYoaVtlXT0ieCIpO3QuaG92ZXJpbmZvPWkuam9pbigiKyIpfX1mdW5jdGlvbiBfKHQpe3ZhciBlLHI9e2xlZnQ6MCxyaWdodDowLGJvdHRvbTowLHRvcDowfTtpZih0KWZvcihlIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShlKSYmKHIubGVmdCs9dFtlXS5sZWZ0fHwwLHIucmlnaHQrPXRbZV0ucmlnaHR8fDAsci5ib3R0b20rPXRbZV0uYm90dG9tfHwwLHIudG9wKz10W2VdLnRvcHx8MCk7cmV0dXJuIHJ9ZnVuY3Rpb24gdyh0LGUpe3ZhciByLG4saSxvPXQuX2Z1bGxMYXlvdXQsYT10Ll9jb250ZXh0O2lmKHQuZW1pdCgicGxvdGx5X2F1dG9zaXplIiksdC5fY29udGV4dC5maWxsRnJhbWUpaT13aW5kb3cuaW5uZXJXaWR0aCxuPXdpbmRvdy5pbm5lckhlaWdodCxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Vsc2UgaWYoQyhhLmZyYW1lTWFyZ2lucykmJmEuZnJhbWVNYXJnaW5zPjApe3ZhciBzPV8odC5fYm91bmRpbmdCb3hNYXJnaW5zKSxsPXMubGVmdCtzLnJpZ2h0LGM9cy5ib3R0b20rcy50b3AsdT1vLl9jb250YWluZXIubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9MS0yKmEuZnJhbWVNYXJnaW5zO2k9TWF0aC5yb3VuZChoKih1LndpZHRoLWwpKSxuPU1hdGgucm91bmQoaCoodS5oZWlnaHQtYykpfWVsc2Ugcj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxuPXBhcnNlRmxvYXQoci5oZWlnaHQpfHxvLmhlaWdodCxpPXBhcnNlRmxvYXQoci53aWR0aCl8fG8ud2lkdGg7cmV0dXJuIE1hdGguYWJzKG8ud2lkdGgtaSk+MXx8TWF0aC5hYnMoby5oZWlnaHQtbik+MT8oby5oZWlnaHQ9dC5sYXlvdXQuaGVpZ2h0PW4sby53aWR0aD10LmxheW91dC53aWR0aD1pKToiaW5pdGlhbCIhPT1vLmF1dG9zaXplJiYoZGVsZXRlIGUuYXV0b3NpemUsby5hdXRvc2l6ZT10LmxheW91dC5hdXRvc2l6ZT0hMCksSS5zYW5pdGl6ZU1hcmdpbnMobyksZX1mdW5jdGlvbiBBKHQpe3ZhciBlPUwuc2VsZWN0KHQpLHI9dC5fZnVsbExheW91dDtpZihyLl9oYXNHTDNEJiZJLnN1YnBsb3RzUmVnaXN0cnkuZ2wzZC5pbml0QXhlcyh0KSxyLl9jb250YWluZXI9ZS5zZWxlY3RBbGwoIi5wbG90LWNvbnRhaW5lciIpLmRhdGEoWzBdKSxyLl9jb250YWluZXIuZW50ZXIoKS5pbnNlcnQoImRpdiIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQoInBsb3QtY29udGFpbmVyIiwhMCkuY2xhc3NlZCgicGxvdGx5IiwhMCksci5fcGFwZXJkaXY9ci5fY29udGFpbmVyLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXIiKS5kYXRhKFswXSksci5fcGFwZXJkaXYuZW50ZXIoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoInN2Zy1jb250YWluZXIiLCEwKS5zdHlsZSgicG9zaXRpb24iLCJyZWxhdGl2ZSIpLCJpbml0aWFsIj09PXIuYXV0b3NpemUmJih3KHQse30pLHIuYXV0b3NpemU9ITAsdC5sYXlvdXQuYXV0b3NpemU9ITApLHIuX2dsY29udGFpbmVyPXIuX3BhcGVyZGl2LnNlbGVjdEFsbCgiLmdsLWNvbnRhaW5lciIpLmRhdGEoWzBdKSxyLl9nbGNvbnRhaW5lci5lbnRlcigpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgiZ2wtY29udGFpbmVyIiwhMCksci5fZ2VvY29udGFpbmVyPXIuX3BhcGVyZGl2LnNlbGVjdEFsbCgiLmdlby1jb250YWluZXIiKS5kYXRhKFswXSksci5fZ2VvY29udGFpbmVyLmVudGVyKCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJnZW8tY29udGFpbmVyIiwhMCksci5fcGFwZXJkaXYuc2VsZWN0QWxsKCIubWFpbi1zdmciKS5yZW1vdmUoKSxyLl9wYXBlcj1yLl9wYXBlcmRpdi5pbnNlcnQoInN2ZyIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQoIm1haW4tc3ZnIiwhMCksci5fdG9wcGFwZXI9ci5fcGFwZXJkaXYuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJtYWluLXN2ZyIsITApLCFyLl91aWQpe3ZhciBuPVtdO0wuc2VsZWN0QWxsKCJkZWZzIikuZWFjaChmdW5jdGlvbigpe3RoaXMuaWQmJm4ucHVzaCh0aGlzLmlkLnNwbGl0KCItIilbMV0pfSksci5fdWlkPXoucmFuZHN0cihuKX1yLl9wYXBlcmRpdi5zZWxlY3RBbGwoIi5tYWluLXN2ZyIpLmF0dHIoWS5zdmdBdHRycyksci5fZGVmcz1yLl9wYXBlci5hcHBlbmQoImRlZnMiKS5hdHRyKCJpZCIsImRlZnMtIityLl91aWQpLHIuX3RvcGRlZnM9ci5fdG9wcGFwZXIuYXBwZW5kKCJkZWZzIikuYXR0cigiaWQiLCJ0b3BkZWZzLSIrci5fdWlkKSxyLl9kcmFnZ2Vycz1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJkcmFnbGF5ZXIiLCEwKTt2YXIgaT1QLkF4ZXMuZ2V0U3VicGxvdHModCk7aS5qb2luKCIiKSE9PU9iamVjdC5rZXlzKHQuX2Z1bGxMYXlvdXQuX3Bsb3RzfHx7fSkuam9pbigiIikmJmsodCxpKSxyLl9oYXNDYXJ0ZXNpYW4mJk0odCxpKSxyLl9zaGFwZWxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNoYXBlbGF5ZXIiLCEwKSxyLl9waWVsYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJwaWVsYXllciIsITApLHIuX2dsaW1hZ2VzPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdsaW1hZ2VzIiwhMCksci5fZ2VvaW1hZ2VzPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdlb2ltYWdlcyIsITApLHIuX2luZm9sYXllcj1yLl90b3BwYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJpbmZvbGF5ZXIiLCEwKSxyLl9ob3ZlcmxheWVyPXIuX3RvcHBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImhvdmVybGF5ZXIiLCEwKSx0LmVtaXQoInBsb3RseV9mcmFtZXdvcmsiKTt2YXIgbz16LnN5bmNPckFzeW5jKFtULGZ1bmN0aW9uKCl7cmV0dXJuIFAuQXhlcy5kb1RpY2tzKHQsInJlZHJhdyIpfSxOLmluaXRdLHQpO3JldHVybiBvJiZvLnRoZW4mJnQuX3Byb21pc2VzLnB1c2gobyksb31mdW5jdGlvbiBrKHQsZSl7ZnVuY3Rpb24gcihlLHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBQLkF4ZXMuZ2V0RnJvbUlkKHQsZSxyKX19Zm9yKHZhciBuLGksbz10Ll9mdWxsTGF5b3V0Ll9wbG90cz17fSxhPTA7YTxlLmxlbmd0aDthKyspbj1lW2FdLGk9b1tuXT17fSxpLmlkPW4saS54PXIobiwieCIpLGkueT1yKG4sInkiKSxpLnhheGlzPWkueCgpLGkueWF4aXM9aS55KCl9ZnVuY3Rpb24gTSh0LGUpe2Z1bmN0aW9uIHIodCl7dC5hcHBlbmQoImciKS5jbGFzc2VkKCJpbWFnZWxheWVyIiwhMCksdC5hcHBlbmQoImciKS5jbGFzc2VkKCJtYXBsYXllciIsITApLHQuYXBwZW5kKCJnIikuY2xhc3NlZCgiYmFybGF5ZXIiLCEwKSx0LmFwcGVuZCgiZyIpLmNsYXNzZWQoImJveGxheWVyIiwhMCksdC5hcHBlbmQoImciKS5jbGFzc2VkKCJzY2F0dGVybGF5ZXIiLCEwKX12YXIgbj10Ll9mdWxsTGF5b3V0LGk9W107bi5fcGFwZXIuc2VsZWN0QWxsKCJnLnN1YnBsb3QiKS5kYXRhKGUpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic3VicGxvdCIsITApLmVhY2goZnVuY3Rpb24obyl7dmFyIGE9bi5fcGxvdHNbb10scz1hLnBsb3Rncm91cD1MLnNlbGVjdCh0aGlzKS5jbGFzc2VkKG8sITApLGw9YS54YXhpcyxjPWEueWF4aXM7YS5vdmVybGF5cz1bXTt2YXIgdT1QLkF4ZXMuZ2V0RnJvbUlkKHQsbC5vdmVybGF5aW5nKXx8bDt1IT09bCYmdS5vdmVybGF5aW5nJiYodT1sLGwub3ZlcmxheWluZz0hMSk7dmFyIGg9UC5BeGVzLmdldEZyb21JZCh0LGMub3ZlcmxheWluZyl8fGM7aCE9PWMmJmgub3ZlcmxheWluZyYmKGg9YyxjLm92ZXJsYXlpbmc9ITEpO3ZhciBmPXUuX2lkK2guX2lkO2YhPT1vJiYtMSE9PWUuaW5kZXhPZihmKT8oYS5tYWlucGxvdD1mLGkucHVzaChhKSxsLmRvbWFpbj11LmRvbWFpbi5zbGljZSgpLGMuZG9tYWluPWguZG9tYWluLnNsaWNlKCkpOihhLmJnPXMuYXBwZW5kKCJyZWN0Iikuc3R5bGUoInN0cm9rZS13aWR0aCIsMCksYS5ncmlkbGF5ZXI9cy5hcHBlbmQoImciKSxhLm92ZXJncmlkPXMuYXBwZW5kKCJnIiksYS56ZXJvbGluZWxheWVyPXMuYXBwZW5kKCJnIiksYS5vdmVyemVybz1zLmFwcGVuZCgiZyIpLGEucGxvdD1zLmFwcGVuZCgic3ZnIikuY2FsbChyKSxhLm92ZXJwbG90PXMuYXBwZW5kKCJnIiksYS54bGluZXM9cy5hcHBlbmQoInBhdGgiKSxhLnlsaW5lcz1zLmFwcGVuZCgicGF0aCIpLGEub3ZlcmxpbmVzPXMuYXBwZW5kKCJnIiksYS54YXhpc2xheWVyPXMuYXBwZW5kKCJnIiksYS55YXhpc2xheWVyPXMuYXBwZW5kKCJnIiksYS5vdmVyYXhlcz1zLmFwcGVuZCgiZyIpKSxhLmRyYWdsYXllcj1uLl9kcmFnZ2Vycy5hcHBlbmQoImciKX0pLGkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLl9wbG90c1t0Lm1haW5wbG90XTtlLm92ZXJsYXlzLnB1c2godCksdC5ncmlkbGF5ZXI9ZS5vdmVyZ3JpZC5hcHBlbmQoImciKSx0Lnplcm9saW5lbGF5ZXI9ZS5vdmVyemVyby5hcHBlbmQoImciKSx0LnBsb3Q9ZS5vdmVycGxvdC5hcHBlbmQoInN2ZyIpLmNhbGwociksdC54bGluZXM9ZS5vdmVybGluZXMuYXBwZW5kKCJwYXRoIiksdC55bGluZXM9ZS5vdmVybGluZXMuYXBwZW5kKCJwYXRoIiksdC54YXhpc2xheWVyPWUub3ZlcmF4ZXMuYXBwZW5kKCJnIiksdC55YXhpc2xheWVyPWUub3ZlcmF4ZXMuYXBwZW5kKCJnIil9KSxlLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5fcGxvdHNbdF07ZS5wbG90LmF0dHIoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJub25lIikuc3R5bGUoImZpbGwiLCJub25lIiksZS54bGluZXMuc3R5bGUoImZpbGwiLCJub25lIikuY2xhc3NlZCgiY3Jpc3AiLCEwKSxlLnlsaW5lcy5zdHlsZSgiZmlsbCIsIm5vbmUiKS5jbGFzc2VkKCJjcmlzcCIsITApfSl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4gei5zeW5jT3JBc3luYyhbSS5kb0F1dG9NYXJnaW4sRV0sdCl9ZnVuY3Rpb24gRSh0KXt2YXIgZSxyPXQuX2Z1bGxMYXlvdXQsbj1yLl9zaXplLGk9UC5BeGVzLmxpc3QodCk7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKylpW2VdLl9saW5lcG9zaXRpb25zPXt9O3IuX3BhcGVyZGl2LnN0eWxlKHt3aWR0aDpyLndpZHRoKyJweCIsaGVpZ2h0OnIuaGVpZ2h0KyJweCJ9KS5zZWxlY3RBbGwoIi5tYWluLXN2ZyIpLmNhbGwoRi5zZXRTaXplLHIud2lkdGgsci5oZWlnaHQpLHQuX2NvbnRleHQuc2V0QmFja2dyb3VuZCh0LHIucGFwZXJfYmdjb2xvcik7dmFyIG89W107cmV0dXJuIHIuX3BhcGVyLnNlbGVjdEFsbCgiZy5zdWJwbG90IikuZWFjaChmdW5jdGlvbihlKXt2YXIgaT1yLl9wbG90c1tlXSxhPVAuQXhlcy5nZXRGcm9tSWQodCxlLCJ4Iikscz1QLkF4ZXMuZ2V0RnJvbUlkKHQsZSwieSIpO2Euc2V0U2NhbGUoKSxzLnNldFNjYWxlKCksaS5iZyYmaS5iZy5jYWxsKEYuc2V0UmVjdCxhLl9vZmZzZXQtbi5wLHMuX29mZnNldC1uLnAsYS5fbGVuZ3RoKzIqbi5wLHMuX2xlbmd0aCsyKm4ucCkuY2FsbChqLmZpbGwsci5wbG90X2JnY29sb3IpLGkucGxvdC5jYWxsKEYuc2V0UmVjdCxhLl9vZmZzZXQscy5fb2Zmc2V0LGEuX2xlbmd0aCxzLl9sZW5ndGgpO3ZhciBsPUYuY3Jpc3BSb3VuZCh0LGEubGluZXdpZHRoLDEpLGM9Ri5jcmlzcFJvdW5kKHQscy5saW5ld2lkdGgsMSksdT1uLnArYyxoPSJNIistdSsiLCIsZj0iaCIrKGEuX2xlbmd0aCsyKnUpLGQ9ImZyZWUiPT09YS5hbmNob3ImJi0xPT09by5pbmRleE9mKGEuX2lkKSxwPW4uaCooMS0oYS5wb3NpdGlvbnx8MCkpK2wvMiUxLGc9YS5hbmNob3I9PT1zLl9pZCYmKGEubWlycm9yfHwidG9wIiE9PWEuc2lkZSl8fCJhbGwiPT09YS5taXJyb3J8fCJhbGx0aWNrcyI9PT1hLm1pcnJvcnx8YS5taXJyb3JzJiZhLm1pcnJvcnNbcy5faWQrImJvdHRvbSJdLHY9cy5fbGVuZ3RoK24ucCtsLzIsbT1hLmFuY2hvcj09PXMuX2lkJiYoYS5taXJyb3J8fCJ0b3AiPT09YS5zaWRlKXx8ImFsbCI9PT1hLm1pcnJvcnx8ImFsbHRpY2tzIj09PWEubWlycm9yfHxhLm1pcnJvcnMmJmEubWlycm9yc1tzLl9pZCsidG9wIl0seT0tbi5wLWwvMixiPW4ucCx4PWc/MDpsLF89bT8wOmwsdz0iLCIrKC1iLV8pKyJ2Iisocy5fbGVuZ3RoKzIqYitfK3gpLEE9ImZyZWUiPT09cy5hbmNob3ImJi0xPT09by5pbmRleE9mKHMuX2lkKSxrPW4udyoocy5wb3NpdGlvbnx8MCkrYy8yJTEsTT1zLmFuY2hvcj09PWEuX2lkJiYocy5taXJyb3J8fCJyaWdodCIhPT1zLnNpZGUpfHwiYWxsIj09PXMubWlycm9yfHwiYWxsdGlja3MiPT09cy5taXJyb3J8fHMubWlycm9ycyYmcy5taXJyb3JzW2EuX2lkKyJsZWZ0Il0sVD0tbi5wLWMvMixFPXMuYW5jaG9yPT09YS5faWQmJihzLm1pcnJvcnx8InJpZ2h0Ij09PXMuc2lkZSl8fCJhbGwiPT09cy5taXJyb3J8fCJhbGx0aWNrcyI9PT1zLm1pcnJvcnx8cy5taXJyb3JzJiZzLm1pcnJvcnNbYS5faWQrInJpZ2h0Il0sTD1hLl9sZW5ndGgrbi5wK2MvMjsKYS5fbGluZXBvc2l0aW9uc1tlXT1bZz92OnZvaWQgMCxtP3k6dm9pZCAwLGQ/cDp2b2lkIDBdLGEuYW5jaG9yPT09cy5faWQ/YS5fbGluZXBvc2l0aW9uc1tlXVszXT0idG9wIj09PWEuc2lkZT95OnY6ZCYmKGEuX2xpbmVwb3NpdGlvbnNbZV1bM109cCkscy5fbGluZXBvc2l0aW9uc1tlXT1bTT9UOnZvaWQgMCxFP0w6dm9pZCAwLEE/azp2b2lkIDBdLHMuYW5jaG9yPT09YS5faWQ/cy5fbGluZXBvc2l0aW9uc1tlXVszXT0icmlnaHQiPT09cy5zaWRlP0w6VDpBJiYocy5fbGluZXBvc2l0aW9uc1tlXVszXT1rKTt2YXIgUz0idHJhbnNsYXRlKCIrYS5fb2Zmc2V0KyIsIitzLl9vZmZzZXQrIikiLEM9Uyx6PVM7ZCYmKEM9InRyYW5zbGF0ZSgiK2EuX29mZnNldCsiLCIrbi50KyIpIix5Kz1zLl9vZmZzZXQtbi50LHYrPXMuX29mZnNldC1uLnQpLEEmJih6PSJ0cmFuc2xhdGUoIituLmwrIiwiK3MuX29mZnNldCsiKSIsVCs9YS5fb2Zmc2V0LW4ubCxMKz1hLl9vZmZzZXQtbi5sKSxpLnhsaW5lcy5hdHRyKCJ0cmFuc2Zvcm0iLEMpLmF0dHIoImQiLChnP2grditmOiIiKSsobT9oK3krZjoiIikrKGQ/aCtwK2Y6IiIpfHwiTTAsMCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGwrInB4IikuY2FsbChqLnN0cm9rZSxhLnNob3dsaW5lP2EubGluZWNvbG9yOiJyZ2JhKDAsMCwwLDApIiksaS55bGluZXMuYXR0cigidHJhbnNmb3JtIix6KS5hdHRyKCJkIiwoTT8iTSIrVCt3OiIiKSsoRT8iTSIrTCt3OiIiKSsoQT8iTSIrayt3OiIiKXx8Ik0wLDAiKS5hdHRyKCJzdHJva2Utd2lkdGgiLGMrInB4IikuY2FsbChqLnN0cm9rZSxzLnNob3dsaW5lP3MubGluZWNvbG9yOiJyZ2JhKDAsMCwwLDApIiksaS54YXhpc2xheWVyLmF0dHIoInRyYW5zZm9ybSIsQyksaS55YXhpc2xheWVyLmF0dHIoInRyYW5zZm9ybSIseiksaS5ncmlkbGF5ZXIuYXR0cigidHJhbnNmb3JtIixTKSxpLnplcm9saW5lbGF5ZXIuYXR0cigidHJhbnNmb3JtIixTKSxpLmRyYWdsYXllci5hdHRyKCJ0cmFuc2Zvcm0iLFMpLGQmJm8ucHVzaChhLl9pZCksQSYmby5wdXNoKHMuX2lkKX0pLFAuQXhlcy5tYWtlQ2xpcFBhdGhzKHQpLEguZHJhdyh0LCJndGl0bGUiKSxHKHQpLHQuX3Byb21pc2VzLmxlbmd0aCYmUHJvbWlzZS5hbGwodC5fcHJvbWlzZXMpfXZhciBMPXQoImQzIiksUz10KCJnbC1tYXQ0L2Zyb21RdWF0IiksQz10KCJmYXN0LWlzbnVtZXJpYyIpLFA9dCgiLi4vcGxvdGx5Iiksej10KCIuLi9saWIiKSxSPXQoIi4uL2xpYi9ldmVudHMiKSxPPXQoIi4uL2xpYi9xdWV1ZSIpLEk9dCgiLi4vcGxvdHMvcGxvdHMiKSxOPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCIpLGo9dCgiLi4vY29tcG9uZW50cy9jb2xvciIpLEY9dCgiLi4vY29tcG9uZW50cy9kcmF3aW5nIiksRD10KCIuLi9jb21wb25lbnRzL2Vycm9yYmFycyIpLEI9dCgiLi4vY29tcG9uZW50cy9sZWdlbmQiKSxVPXQoIi4uL2NvbXBvbmVudHMvcmFuZ2VzbGlkZXIiKSxWPXQoIi4uL2NvbXBvbmVudHMvcmFuZ2VzZWxlY3RvciIpLHE9dCgiLi4vY29tcG9uZW50cy9zaGFwZXMiKSxIPXQoIi4uL2NvbXBvbmVudHMvdGl0bGVzIiksRz10KCIuLi9jb21wb25lbnRzL21vZGViYXIvbWFuYWdlIiksWT10KCIuLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpO1AucGxvdD1mdW5jdGlvbih0LGUscixpKXtmdW5jdGlvbiBsKCl7dmFyIGUscixuLGk9dC5jYWxjZGF0YTtmb3IoQi5kcmF3KHQpLFYuZHJhdyh0KSxlPTA7ZTxpLmxlbmd0aDtlKyspcj1pW2VdLG49clswXS50cmFjZSxuLnZpc2libGU9PT0hMCYmbi5fbW9kdWxlLmNvbG9yYmFyP24uX21vZHVsZS5jb2xvcmJhcih0LHIpOkkuYXV0b01hcmdpbih0LCJjYiIrbi51aWQpO3JldHVybiBJLmRvQXV0b01hcmdpbih0KSxJLnByZXZpb3VzUHJvbWlzZXModCl9ZnVuY3Rpb24gdSgpe3ZhciBlPUpTT04uc3RyaW5naWZ5KE0uX3NpemUpPT09Qz9bXTpbbCxUXTtyZXR1cm4gei5zeW5jT3JBc3luYyhlLmNvbmNhdChOLmluaXQpLHQpfWZ1bmN0aW9uIGgoKXtpZihFKXtmb3IodmFyIGUscixuPUkuZ2V0U3VicGxvdElkcyhNLCJjYXJ0ZXNpYW4iKSxpPXQuX21vZHVsZXMsbz0wO288bi5sZW5ndGg7bysrKXtlPU0uX3Bsb3RzW25bb11dO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKXI9aVthXSxyLnNldFBvc2l0aW9ucyYmci5zZXRQb3NpdGlvbnModCxlKX1yZXR1cm4gei5tYXJrVGltZSgiZG9uZSB3aXRoIGJhci9ib3ggYWRqdXN0bWVudHMiKSxELmNhbGModCksei5tYXJrVGltZSgiZG9uZSBFcnJvckJhcnMuY2FsYyIpLHouc3luY09yQXN5bmMoW3EuY2FsY0F1dG9yYW5nZSxQLkFubm90YXRpb25zLmNhbGNBdXRvcmFuZ2UsZF0sdCl9fWZ1bmN0aW9uIGQoKXtmb3IodmFyIGU9UC5BeGVzLmxpc3QodCwiIiwhMCkscj0wO3I8ZS5sZW5ndGg7cisrKVAuQXhlcy5kb0F1dG9SYW5nZShlW3JdKX1mdW5jdGlvbiBwKCl7cmV0dXJuIFUuZHJhdyh0KSxQLkF4ZXMuZG9UaWNrcyh0LCJyZWRyYXciKX1mdW5jdGlvbiBnKCl7Zm9yKHZhciBlPXQuY2FsY2RhdGEscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdWzBdLnRyYWNlLGk9bi52aXNpYmxlPT09ITAsbz1uLnVpZDtpJiZJLnRyYWNlSXMobiwiMmRNYXAiKXx8TS5fcGFwZXIuc2VsZWN0QWxsKCIuaG0iK28rIiwuY29udG91ciIrbysiLCNjbGlwIitvKS5yZW1vdmUoKSxpJiZuLl9tb2R1bGUuY29sb3JiYXJ8fE0uX2luZm9sYXllci5zZWxlY3RBbGwoIi5jYiIrbykucmVtb3ZlKCl9dmFyIGE9SS5zdWJwbG90c1JlZ2lzdHJ5O3JldHVybiBNLl9oYXNHTDNEJiZhLmdsM2QucGxvdCh0KSxNLl9oYXNHZW8mJmEuZ2VvLnBsb3QodCksTS5faGFzR0wyRCYmYS5nbDJkLnBsb3QodCksKE0uX2hhc0NhcnRlc2lhbnx8TS5faGFzUGllKSYmYS5jYXJ0ZXNpYW4ucGxvdCh0KSxJLnN0eWxlKHQpLHoubWFya1RpbWUoImRvbmUgUGxvdHMuc3R5bGUiKSxxLmRyYXdBbGwodCksUC5Bbm5vdGF0aW9ucy5kcmF3QWxsKHQpLEkuYWRkTGlua3ModCksdC5fcmVwbG90dGluZz0hMSxJLnByZXZpb3VzUHJvbWlzZXModCl9ZnVuY3Rpb24gdigpe3EuZHJhd0FsbCh0KSxQLkFubm90YXRpb25zLmRyYXdBbGwodCksQi5kcmF3KHQpLFYuZHJhdyh0KX1mdW5jdGlvbiBtKCl7ei5tYXJrVGltZSgiZG9uZSBwbG90IiksdC5lbWl0KCJwbG90bHlfYWZ0ZXJwbG90Iil9ei5tYXJrVGltZSgiaW4gcGxvdCIpLHQ9bih0KSxSLmluaXQodCk7dmFyIHk9Ui50cmlnZ2VySGFuZGxlcih0LCJwbG90bHlfYmVmb3JlcGxvdCIsW2UscixpXSk7aWYoeT09PSExKXJldHVybiBQcm9taXNlLnJlamVjdCgpO2V8fHJ8fHouaXNQbG90RGl2KHQpfHxjb25zb2xlLmxvZygiV2FybmluZzogY2FsbGluZyBQbG90bHkucGxvdCBhcyBpZiByZWRyYXdpbmcgYnV0IHRoaXMgY29udGFpbmVyIGRvZXNuJ3QgeWV0IGhhdmUgYSBwbG90LiIsdCksbyh0LGkpLHJ8fChyPXt9KSxMLnNlbGVjdCh0KS5jbGFzc2VkKCJqcy1wbG90bHktcGxvdCIsITApLEYubWFrZVRlc3Rlcih0KSx0Ll9wcm9taXNlcz1bXTt2YXIgYj0wPT09KHQuZGF0YXx8W10pLmxlbmd0aCYmQXJyYXkuaXNBcnJheShlKTtpZihBcnJheS5pc0FycmF5KGUpJiYoYyhlLHQuZGF0YSksYj90LmRhdGE9ZTp0LmRhdGEucHVzaC5hcHBseSh0LmRhdGEsZSksdC5lbXB0eT0hMSksdC5sYXlvdXQmJiFifHwodC5sYXlvdXQ9cyhyKSksdC5fZHJhZ2dpbmcpcmV0dXJuIHQuX3JlcGxvdFBlbmRpbmc9ITAsUHJvbWlzZS5yZWplY3QoKTtpZih0Ll9yZXBsb3RQZW5kaW5nPSExLEkuc3VwcGx5RGVmYXVsdHModCksZSYmZVswXSYmZVswXS5yKXJldHVybiBhKHQsZSxyKTt0Ll9yZXBsb3R0aW5nPSEwO3ZhciB4PXQuX2Z1bGxEYXRhLmxlbmd0aD4wLF89UC5BeGVzLmdldFN1YnBsb3RzKHQpLmpvaW4oIiIpLHc9T2JqZWN0LmtleXModC5fZnVsbExheW91dC5fcGxvdHN8fHt9KS5qb2luKCIiKSxrPXc9PT1fO3g/dC5mcmFtZXdvcms9PT1BJiYhYiYma3x8KHQuZnJhbWV3b3JrPUEsQSh0KSk6az9iJiZBKHQpOih0LmZyYW1ld29yaz1BLEEodCkpLGImJlAuQXhlcy5zYXZlUmFuZ2VJbml0aWFsKHQpO3ZhciBNPXQuX2Z1bGxMYXlvdXQsRT0hdC5jYWxjZGF0YXx8dC5jYWxjZGF0YS5sZW5ndGghPT0odC5kYXRhfHxbXSkubGVuZ3RoO0UmJmYodCk7Zm9yKHZhciBTPTA7Uzx0LmNhbGNkYXRhLmxlbmd0aDtTKyspdC5jYWxjZGF0YVtTXVswXS50cmFjZT10Ll9mdWxsRGF0YVtTXTt2YXIgQz1KU09OLnN0cmluZ2lmeShNLl9zaXplKSxPPXouc3luY09yQXN5bmMoW0kucHJldmlvdXNQcm9taXNlcyxsLFQsdSxoLHAsZyx2XSx0LG0pO3JldHVybiBPJiZPLnRoZW4/TzpQcm9taXNlLnJlc29sdmUodCl9LFAucmVkcmF3PWZ1bmN0aW9uKHQpe3JldHVybiB0PW4odCksei5pc1Bsb3REaXYodCk/KHQuY2FsY2RhdGE9dm9pZCAwLFAucGxvdCh0KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZW1pdCgicGxvdGx5X3JlZHJhdyIpLHR9KSk6dm9pZCBjb25zb2xlLmxvZygiVGhpcyBlbGVtZW50IGlzIG5vdCBhIFBsb3RseSBQbG90Iix0KX0sUC5uZXdQbG90PWZ1bmN0aW9uKHQsZSxyLGkpe3JldHVybiB0PW4odCksSS5wdXJnZSh0KSxQLnBsb3QodCxlLHIsaSl9LFAuZXh0ZW5kVHJhY2VzPWZ1bmN0aW9uIFgodCxlLHIsaSl7dD1uKHQpO3ZhciBvPWIodCxlLHIsaSxmdW5jdGlvbih0LGUpe3JldHVybiB0LmNvbmNhdChlKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zcGxpY2UoMCx0Lmxlbmd0aC1lKX0pLGE9UC5yZWRyYXcodCkscz1bdCxvLnVwZGF0ZSxyLG8ubWF4UG9pbnRzXTtyZXR1cm4gTyYmTy5hZGQodCxQLnByZXBlbmRUcmFjZXMscyxYLGFyZ3VtZW50cyksYX0sUC5wcmVwZW5kVHJhY2VzPWZ1bmN0aW9uIFcodCxlLHIsaSl7dD1uKHQpO3ZhciBvPWIodCxlLHIsaSxmdW5jdGlvbih0LGUpe3JldHVybiBlLmNvbmNhdCh0KX0sZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zcGxpY2UoZSx0Lmxlbmd0aCl9KSxhPVAucmVkcmF3KHQpLHM9W3Qsby51cGRhdGUscixvLm1heFBvaW50c107cmV0dXJuIE8mJk8uYWRkKHQsUC5leHRlbmRUcmFjZXMscyxXLGFyZ3VtZW50cyksYX0sUC5hZGRUcmFjZXM9ZnVuY3Rpb24gWih0LGUscil7dD1uKHQpO3ZhciBpLG8sYT1bXSxzPVAuZGVsZXRlVHJhY2VzLGw9Wix1PVt0LGFdLGg9W3QsZV07Zm9yKHYodCxlLHIpLEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksYyhlLHQuZGF0YSksaT0wO2k8ZS5sZW5ndGg7aSs9MSl0LmRhdGEucHVzaChlW2ldKTtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWEucHVzaCgtZS5sZW5ndGgraSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiByKXJldHVybiBvPVAucmVkcmF3KHQpLE8mJk8uYWRkKHQscyx1LGwsaCksbztBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pO3RyeXtnKHQsYSxyKX1jYXRjaChmKXt0aHJvdyB0LmRhdGEuc3BsaWNlKHQuZGF0YS5sZW5ndGgtZS5sZW5ndGgsZS5sZW5ndGgpLGZ9cmV0dXJuIE8mJk8uc3RhcnRTZXF1ZW5jZSh0KSxPJiZPLmFkZCh0LHMsdSxsLGgpLG89UC5tb3ZlVHJhY2VzKHQsYSxyKSxPJiZPLnN0b3BTZXF1ZW5jZSh0KSxvfSxQLmRlbGV0ZVRyYWNlcz1mdW5jdGlvbiAkKHQsZSl7dD1uKHQpO3ZhciByLGksbz1bXSxhPVAuYWRkVHJhY2VzLHM9JCxsPVt0LG8sZV0sYz1bdCxlXTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbmRpY2VzIG11c3QgYmUgYW4gaW50ZWdlciBvciBhcnJheSBvZiBpbnRlZ2Vycy4iKTtmb3IoQXJyYXkuaXNBcnJheShlKXx8KGU9W2VdKSxwKHQsZSwiaW5kaWNlcyIpLGU9ZChlLHQuZGF0YS5sZW5ndGgtMSksZS5zb3J0KHouc29ydGVyRGVzKSxyPTA7cjxlLmxlbmd0aDtyKz0xKWk9dC5kYXRhLnNwbGljZShlW3JdLDEpWzBdLG8ucHVzaChpKTt2YXIgdT1QLnJlZHJhdyh0KTtyZXR1cm4gTyYmTy5hZGQodCxhLGwscyxjKSx1fSxQLm1vdmVUcmFjZXM9ZnVuY3Rpb24gSyh0LGUscil7dD1uKHQpO3ZhciBpLG89W10sYT1bXSxzPUssbD1LLGM9W3QscixlXSx1PVt0LGUscl07aWYoZyh0LGUsciksZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdLCJ1bmRlZmluZWQiPT10eXBlb2Ygcilmb3Iocj1bXSxpPTA7aTxlLmxlbmd0aDtpKyspci5wdXNoKC1lLmxlbmd0aCtpKTtmb3Iocj1BcnJheS5pc0FycmF5KHIpP3I6W3JdLGU9ZChlLHQuZGF0YS5sZW5ndGgtMSkscj1kKHIsdC5kYXRhLmxlbmd0aC0xKSxpPTA7aTx0LmRhdGEubGVuZ3RoO2krKyktMT09PWUuaW5kZXhPZihpKSYmby5wdXNoKHQuZGF0YVtpXSk7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylhLnB1c2goe25ld0luZGV4OnJbaV0sdHJhY2U6dC5kYXRhW2VbaV1dfSk7Zm9yKGEuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm5ld0luZGV4LWUubmV3SW5kZXh9KSxpPTA7aTxhLmxlbmd0aDtpKz0xKW8uc3BsaWNlKGFbaV0ubmV3SW5kZXgsMCxhW2ldLnRyYWNlKTt0LmRhdGE9bzt2YXIgaD1QLnJlZHJhdyh0KTtyZXR1cm4gTyYmTy5hZGQodCxzLGMsbCx1KSxofSxQLnJlc3R5bGU9ZnVuY3Rpb24gUSh0LGUscixpKXtmdW5jdGlvbiBvKCl7cmV0dXJuIGkubWFwKGZ1bmN0aW9uKCl7fSl9ZnVuY3Rpb24gYSh0KXt2YXIgZT1QLkF4ZXMuaWQybmFtZSh0KTstMT09PXAuaW5kZXhPZihlKSYmcC5wdXNoKGUpfWZ1bmN0aW9uIHModCl7cmV0dXJuIkxBWU9VVCIrdCsiLmF1dG9yYW5nZSJ9ZnVuY3Rpb24gbCh0KXtyZXR1cm4iTEFZT1VUIit0KyIucmFuZ2UifWZ1bmN0aW9uIGMoZSxyLG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHZvaWQgZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2ModCxyLG4pfSk7aWYoIShlIGluIGYpKXt2YXIgYTthPSJMQVlPVVQiPT09ZS5zdWJzdHIoMCw2KT96Lm5lc3RlZFByb3BlcnR5KHQubGF5b3V0LGUucmVwbGFjZSgiTEFZT1VUIiwiIikpOnoubmVzdGVkUHJvcGVydHkodC5kYXRhW2lbbl1dLGUpLGUgaW4gVHx8KFRbZV09bygpKSx2b2lkIDA9PT1UW2VdW25dJiYoVFtlXVtuXT1hLmdldCgpKSx2b2lkIDAhPT1yJiZhLnNldChyKX19dD1uKHQpO3ZhciB1LGg9dC5fZnVsbExheW91dCxmPXt9O2lmKCJzdHJpbmciPT10eXBlb2YgZSlmW2VdPXI7ZWxzZXtpZighei5pc1BsYWluT2JqZWN0KGUpKXJldHVybiBjb25zb2xlLmxvZygicmVzdHlsZSBmYWlsIixlLHIsaSksUHJvbWlzZS5yZWplY3QoKTtmPWUsdm9pZCAwPT09aSYmKGk9cil9T2JqZWN0LmtleXMoZikubGVuZ3RoJiYodC5jaGFuZ2VkPSEwKSxDKGkpP2k9W2ldOkFycmF5LmlzQXJyYXkoaSkmJmkubGVuZ3RofHwoaT10Ll9mdWxsRGF0YS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKTt2YXIgZD1bIm1vZGUiLCJ2aXNpYmxlIiwidHlwZSIsIm9yaWVudGF0aW9uIiwiZmlsbCIsImhpc3RmdW5jIiwiaGlzdG5vcm0iLCJ0ZXh0IiwieCIsInkiLCJ6IiwieHR5cGUiLCJ4MCIsImR4IiwieXR5cGUiLCJ5MCIsImR5IiwieGF4aXMiLCJ5YXhpcyIsImxpbmUud2lkdGgiLCJjb25uZWN0Z2FwcyIsInRyYW5zcG9zZSIsInpzbW9vdGgiLCJzaG93c2NhbGUiLCJtYXJrZXIuc2hvd3NjYWxlIiwiemF1dG8iLCJtYXJrZXIuY2F1dG8iLCJhdXRvY29sb3JzY2FsZSIsIm1hcmtlci5hdXRvY29sb3JzY2FsZSIsImNvbG9yc2NhbGUiLCJtYXJrZXIuY29sb3JzY2FsZSIsInJldmVyc2VzY2FsZSIsIm1hcmtlci5yZXZlcnNlc2NhbGUiLCJhdXRvYmlueCIsIm5iaW5zeCIsInhiaW5zIiwieGJpbnMuc3RhcnQiLCJ4Ymlucy5lbmQiLCJ4Ymlucy5zaXplIiwiYXV0b2JpbnkiLCJuYmluc3kiLCJ5YmlucyIsInliaW5zLnN0YXJ0IiwieWJpbnMuZW5kIiwieWJpbnMuc2l6ZSIsImF1dG9jb250b3VyIiwibmNvbnRvdXJzIiwiY29udG91cnMiLCJjb250b3Vycy5jb2xvcmluZyIsImVycm9yX3kiLCJlcnJvcl95LnZpc2libGUiLCJlcnJvcl95LnZhbHVlIiwiZXJyb3JfeS50eXBlIiwiZXJyb3JfeS50cmFjZXJlZiIsImVycm9yX3kuYXJyYXkiLCJlcnJvcl95LnN5bW1ldHJpYyIsImVycm9yX3kuYXJyYXltaW51cyIsImVycm9yX3kudmFsdWVtaW51cyIsImVycm9yX3kudHJhY2VyZWZtaW51cyIsImVycm9yX3giLCJlcnJvcl94LnZpc2libGUiLCJlcnJvcl94LnZhbHVlIiwiZXJyb3JfeC50eXBlIiwiZXJyb3JfeC50cmFjZXJlZiIsImVycm9yX3guYXJyYXkiLCJlcnJvcl94LnN5bW1ldHJpYyIsImVycm9yX3guYXJyYXltaW51cyIsImVycm9yX3gudmFsdWVtaW51cyIsImVycm9yX3gudHJhY2VyZWZtaW51cyIsInN3YXB4eSIsInN3YXB4eWF4ZXMiLCJvcmllbnRhdGlvbmF4ZXMiLCJtYXJrZXIuY29sb3JzIiwidmFsdWVzIiwibGFiZWxzIiwibGFiZWwwIiwiZGxhYmVsIiwic29ydCIsInRleHRpbmZvIiwidGV4dHBvc2l0aW9uIiwidGV4dGZvbnQuc2l6ZSIsInRleHRmb250LmZhbWlseSIsInRleHRmb250LmNvbG9yIiwiaW5zaWRldGV4dGZvbnQuc2l6ZSIsImluc2lkZXRleHRmb250LmZhbWlseSIsImluc2lkZXRleHRmb250LmNvbG9yIiwib3V0c2lkZXRleHRmb250LnNpemUiLCJvdXRzaWRldGV4dGZvbnQuZmFtaWx5Iiwib3V0c2lkZXRleHRmb250LmNvbG9yIiwiaG9sZSIsInNjYWxlZ3JvdXAiLCJkb21haW4iLCJkb21haW4ueCIsImRvbWFpbi55IiwiZG9tYWluLnhbMF0iLCJkb21haW4ueFsxXSIsImRvbWFpbi55WzBdIiwiZG9tYWluLnlbMV0iLCJ0aWx0IiwidGlsdGF4aXMiLCJkZXB0aCIsImRpcmVjdGlvbiIsInJvdGF0aW9uIiwicHVsbCJdO2Zvcih1PTA7dTxpLmxlbmd0aDt1KyspaWYoSS50cmFjZUlzKHQuX2Z1bGxEYXRhW2lbdV1dLCJib3giKSl7ZC5wdXNoKCJuYW1lIik7YnJlYWt9dmFyIHAsZz1bIm1hcmtlciIsIm1hcmtlci5zaXplIiwidGV4dGZvbnQiLCJib3hwb2ludHMiLCJqaXR0ZXIiLCJwb2ludHBvcyIsIndoaXNrZXJ3aWR0aCIsImJveG1lYW4iXSx2PVsiem1pbiIsInptYXgiLCJ6YXV0byIsIm1hcmtlci5jbWluIiwibWFya2VyLmNtYXgiLCJtYXJrZXIuY2F1dG8iLCJjb250b3Vycy5zdGFydCIsImNvbnRvdXJzLmVuZCIsImNvbnRvdXJzLnNpemUiLCJjb250b3Vycy5zaG93bGluZXMiLCJsaW5lIiwibGluZS5zbW9vdGhpbmciLCJsaW5lLnNoYXBlIiwiZXJyb3JfeS53aWR0aCIsImVycm9yX3gud2lkdGgiLCJlcnJvcl94LmNvcHlfeXN0eWxlIiwibWFya2VyLm1heGRpc3BsYXllZCJdLG09WyJ0eXBlIiwieCIsInkiLCJ4MCIsInkwIiwib3JpZW50YXRpb24iLCJ4YXhpcyIsInlheGlzIl0seT0hMSxiPSExLF89ITEsdz0hMSxBPSExLGs9ITEsTT17fSxUPXt9LEU9e307KGguX2hhc0dMM0R8fGguX2hhc0dlb3x8aC5faGFzR0wyRCkmJihfPSEwKTt2YXIgTD1bInptaW4iLCJ6bWF4Il0sUz1bInhiaW5zLnN0YXJ0IiwieGJpbnMuZW5kIiwieGJpbnMuc2l6ZSJdLFI9WyJ5Ymlucy5zdGFydCIsInliaW5zLmVuZCIsInliaW5zLnNpemUiXSxOPVsiY29udG91cnMuc3RhcnQiLCJjb250b3Vycy5lbmQiLCJjb250b3Vycy5zaXplIl07Zm9yKHZhciBqIGluIGYpe3ZhciBGLEQsVSxWLHEsSD1mW2pdO2lmKE1bal09SCwiTEFZT1VUIiE9PWouc3Vic3RyKDAsNikpe2ZvcihUW2pdPW8oKSx1PTA7dTxpLmxlbmd0aDt1Kyspe2lmKEY9dC5kYXRhW2lbdV1dLEQ9dC5fZnVsbERhdGFbaVt1XV0sVT16Lm5lc3RlZFByb3BlcnR5KEYsaiksVj1VLmdldCgpLHE9QXJyYXkuaXNBcnJheShIKT9IW3UlSC5sZW5ndGhdOkgsLTEhPT1MLmluZGV4T2YoaikpYygiemF1dG8iLCExLHUpO2Vsc2UgaWYoImNvbG9yc2NhbGUiPT09ailjKCJhdXRvY29sb3JzY2FsZSIsITEsdSk7ZWxzZSBpZigiYXV0b2NvbG9yc2NhbGUiPT09ailjKCJjb2xvcnNjYWxlIix2b2lkIDAsdSk7ZWxzZSBpZigibWFya2VyLmNvbG9yc2NhbGUiPT09ailjKCJtYXJrZXIuYXV0b2NvbG9yc2NhbGUiLCExLHUpO2Vsc2UgaWYoIm1hcmtlci5hdXRvY29sb3JzY2FsZSI9PT1qKWMoIm1hcmtlci5jb2xvcnNjYWxlIix2b2lkIDAsdSk7ZWxzZSBpZigiemF1dG8iPT09ailjKEwsdm9pZCAwLHUpO2Vsc2UgaWYoLTEhPT1TLmluZGV4T2YoaikpYygiYXV0b2JpbngiLCExLHUpO2Vsc2UgaWYoImF1dG9iaW54Ij09PWopYyhTLHZvaWQgMCx1KTtlbHNlIGlmKC0xIT09Ui5pbmRleE9mKGopKWMoImF1dG9iaW55IiwhMSx1KTtlbHNlIGlmKCJhdXRvYmlueSI9PT1qKWMoUix2b2lkIDAsdSk7ZWxzZSBpZigtMSE9PU4uaW5kZXhPZihqKSljKCJhdXRvY29udG91ciIsITEsdSk7ZWxzZSBpZigiYXV0b2NvbnRvdXIiPT09ailjKE4sdm9pZCAwLHUpO2Vsc2UgaWYoLTEhPT1bIngwIiwiZHgiXS5pbmRleE9mKGopJiZELngmJiJzY2FsZWQiIT09RC54dHlwZSljKCJ4dHlwZSIsInNjYWxlZCIsdSk7ZWxzZSBpZigtMSE9PVsieTAiLCJkeSJdLmluZGV4T2YoaikmJkQueSYmInNjYWxlZCIhPT1ELnl0eXBlKWMoInl0eXBlIiwic2NhbGVkIix1KTtlbHNlIGlmKCJjb2xvcmJhci50aGlja25lc3Ntb2RlIj09PWomJlUuZ2V0KCkhPT1xJiYtMSE9PVsiZnJhY3Rpb24iLCJwaXhlbHMiXS5pbmRleE9mKHEpJiZELmNvbG9yYmFyKXt2YXIgRz0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihELmNvbG9yYmFyLm9yaWVudCk/aC5oZWlnaHQtaC5tYXJnaW4udC1oLm1hcmdpbi5iOmgud2lkdGgtaC5tYXJnaW4ubC1oLm1hcmdpbi5yO2MoImNvbG9yYmFyLnRoaWNrbmVzcyIsRC5jb2xvcmJhci50aGlja25lc3MqKCJmcmFjdGlvbiI9PT1xPzEvRzpHKSx1KX1lbHNlIGlmKCJjb2xvcmJhci5sZW5tb2RlIj09PWomJlUuZ2V0KCkhPT1xJiYtMSE9PVsiZnJhY3Rpb24iLCJwaXhlbHMiXS5pbmRleE9mKHEpJiZELmNvbG9yYmFyKXt2YXIgWT0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihELmNvbG9yYmFyLm9yaWVudCk/aC53aWR0aC1oLm1hcmdpbi5sLWgubWFyZ2luLnI6aC5oZWlnaHQtaC5tYXJnaW4udC1oLm1hcmdpbi5iO2MoImNvbG9yYmFyLmxlbiIsRC5jb2xvcmJhci5sZW4qKCJmcmFjdGlvbiI9PT1xPzEvWTpZKSx1KX1lbHNlImNvbG9yYmFyLnRpY2swIj09PWp8fCJjb2xvcmJhci5kdGljayI9PT1qP2MoImNvbG9yYmFyLnRpY2ttb2RlIiwibGluZWFyIix1KToiY29sb3JiYXIudGlja21vZGUiPT09aiYmYyhbImNvbG9yYmFyLnRpY2swIiwiY29sb3JiYXIuZHRpY2siXSx2b2lkIDAsdSk7aWYoInR5cGUiPT09aiYmInBpZSI9PT1xIT0oInBpZSI9PT1WKSl7dmFyIFg9IngiLFc9InkiOyJiYXIiIT09cSYmImJhciIhPT1WfHwiaCIhPT1GLm9yaWVudGF0aW9ufHwoWD0ieSIsVz0ieCIpLHouc3dhcEF0dHJzKEYsWyI/IiwiP3NyYyJdLCJsYWJlbHMiLFgpLHouc3dhcEF0dHJzKEYsWyJkPyIsIj8wIl0sImxhYmVsIixYKSx6LnN3YXBBdHRycyhGLFsiPyIsIj9zcmMiXSwidmFsdWVzIixXKSwicGllIj09PVY/KHoubmVzdGVkUHJvcGVydHkoRiwibWFya2VyLmNvbG9yIikuc2V0KHoubmVzdGVkUHJvcGVydHkoRiwibWFya2VyLmNvbG9ycyIpLmdldCgpKSxoLl9waWVsYXllci5zZWxlY3RBbGwoImcudHJhY2UiKS5yZW1vdmUoKSk6SS50cmFjZUlzKEYsImNhcnRlc2lhbiIpJiYoei5uZXN0ZWRQcm9wZXJ0eShGLCJtYXJrZXIuY29sb3JzIikuc2V0KHoubmVzdGVkUHJvcGVydHkoRiwibWFya2VyLmNvbG9yIikuZ2V0KCkpLEVbRi54YXhpc3x8IngiXT0hMCxFW0YueWF4aXN8fCJ5Il09ITApfVRbal1bdV09Vjt2YXIgWj1bInN3YXB4eSIsInN3YXB4eWF4ZXMiLCJvcmllbnRhdGlvbiIsIm9yaWVudGF0aW9uYXhlcyJdO2lmKC0xIT09Wi5pbmRleE9mKGopKXtpZigib3JpZW50YXRpb24iPT09ail7aWYoVS5zZXQocSksVS5nZXQoKT09PVRbal1bdV0pY29udGludWV9ZWxzZSJvcmllbnRhdGlvbmF4ZXMiPT09aiYmKEYub3JpZW50YXRpb249e3Y6ImgiLGg6InYifVtELm9yaWVudGF0aW9uXSk7eChGKX1lbHNlIFUuc2V0KHEpfWlmKC0xIT09WyJzd2FweHlheGVzIiwib3JpZW50YXRpb25heGVzIl0uaW5kZXhPZihqKSYmUC5BeGVzLnN3YXAodCxpKSwib3JpZW50YXRpb25heGVzIj09PWope3ZhciAkPXoubmVzdGVkUHJvcGVydHkodC5sYXlvdXQsImhvdmVybW9kZSIpOyJ4Ij09PSQuZ2V0KCk/JC5zZXQoInkiKToieSI9PT0kLmdldCgpJiYkLnNldCgieCIpfWlmKC0xIT09aS5pbmRleE9mKDApJiYtMSE9PW0uaW5kZXhPZihqKSYmKFAuQXhlcy5jbGVhclR5cGVzKHQsaSkseT0hMCksLTEhPT1bImF1dG9iaW54IiwiYXV0b2JpbnkiLCJ6YXV0byJdLmluZGV4T2YoaikmJnE9PT0hMXx8KEE9ITApLCgtMSE9PVsiY29sb3JiYXIiLCJsaW5lIl0uaW5kZXhPZihVLnBhcnRzWzBdKXx8Im1hcmtlciI9PT1VLnBhcnRzWzBdJiYiY29sb3JiYXIiPT09VS5wYXJ0c1sxXSkmJihrPSEwKSwtMSE9PWQuaW5kZXhPZihqKSl7aWYoLTEhPT1bIm9yaWVudGF0aW9uIiwidHlwZSJdLmluZGV4T2Yoaikpe2ZvcihwPVtdLHU9MDt1PGkubGVuZ3RoO3UrKyl7dmFyIEs9dC5kYXRhW2lbdV1dO0kudHJhY2VJcyhLLCJjYXJ0ZXNpYW4iKSYmKGEoSy54YXhpc3x8IngiKSxhKEsueWF4aXN8fCJ5IiksInR5cGUiPT09ZSYmYyhbImF1dG9iaW54IiwiYXV0b2JpbnkiXSwhMCx1KSl9YyhwLm1hcChzKSwhMCwwKSxjKHAubWFwKGwpLFswLDFdLDApfXk9ITB9ZWxzZS0xIT09di5pbmRleE9mKGopP189ITA6LTEhPT1nLmluZGV4T2YoaikmJihiPSEwKX1lbHNlIFU9ei5uZXN0ZWRQcm9wZXJ0eSh0LmxheW91dCxqLnJlcGxhY2UoIkxBWU9VVCIsIiIpKSxUW2pdPVtVLmdldCgpXSxVLnNldChBcnJheS5pc0FycmF5KEgpP0hbMF06SCkseT0hMH12YXIgSj1PYmplY3Qua2V5cyhFKTt0OmZvcih1PTA7dTxKLmxlbmd0aDt1Kyspe2Zvcih2YXIgdHQ9Slt1XSxldD10dC5jaGFyQXQoMCkscnQ9ZXQrImF4aXMiLG50PTA7bnQ8dC5kYXRhLmxlbmd0aDtudCsrKWlmKEkudHJhY2VJcyh0LmRhdGFbbnRdLCJjYXJ0ZXNpYW4iKSYmKHQuZGF0YVtudF1bcnRdfHxldCk9PT10dCljb250aW51ZSB0O2MoIkxBWU9VVCIrUC5BeGVzLmlkMm5hbWUodHQpLG51bGwsMCl9TyYmTy5hZGQodCxRLFt0LFQsaV0sUSxbdCxNLGldKTt2YXIgaXQ9ITE7UC5BeGVzLmxpc3QodCkuZm9yRWFjaChmdW5jdGlvbih0KXt0LmF1dG9yYW5nZSYmKGl0PSEwKX0pLCh5fHx3fHxiJiZpdCkmJih0LmNhbGNkYXRhPXZvaWQgMCk7dmFyIG90O3c/b3Q9W2Z1bmN0aW9uKCl7dmFyIGU9dC5sYXlvdXQ7cmV0dXJuIHQubGF5b3V0PXZvaWQgMCxQLnBsb3QodCwiIixlKX1dOnl8fF98fGI/b3Q9W1AucGxvdF06KEkuc3VwcGx5RGVmYXVsdHModCksb3Q9W0kucHJldmlvdXNQcm9taXNlc10sQSYmb3QucHVzaChmdW5jdGlvbigpe3ZhciBlLHIsbjtmb3IoZT0wO2U8dC5jYWxjZGF0YS5sZW5ndGg7ZSsrKXI9dC5jYWxjZGF0YVtlXSxuPSgoKHJbMF18fHt9KS50cmFjZXx8e30pLl9tb2R1bGV8fHt9KS5hcnJheXNUb0NhbGNkYXRhLG4mJm4ocik7cmV0dXJuIEkuc3R5bGUodCksQi5kcmF3KHQpLEkucHJldmlvdXNQcm9taXNlcyh0KX0pLGsmJm90LnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxjZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCh0WzBdLnR8fHt9KS5jYil7dmFyIGU9dFswXS50cmFjZSxyPXRbMF0udC5jYjtJLnRyYWNlSXMoZSwiY29udG91ciIpJiZyLmxpbmUoe3dpZHRoOmUuY29udG91cnMuc2hvd2xpbmVzIT09ITE/ZS5saW5lLndpZHRoOjAsZGFzaDplLmxpbmUuZGFzaCxjb2xvcjoibGluZSI9PT1lLmNvbnRvdXJzLmNvbG9yaW5nP3IuX29wdHMubGluZS5jb2xvcjplLmxpbmUuY29sb3J9KSxJLnRyYWNlSXMoZSwibWFya2VyQ29sb3JzY2FsZSIpP3Iub3B0aW9ucyhlLm1hcmtlci5jb2xvcmJhcikoKTpyLm9wdGlvbnMoZS5jb2xvcmJhcikoKX19KSxJLnByZXZpb3VzUHJvbWlzZXModCl9KSk7dmFyIGF0PXouc3luY09yQXN5bmMob3QsdCk7cmV0dXJuIGF0JiZhdC50aGVufHwoYXQ9UHJvbWlzZS5yZXNvbHZlKCkpLGF0LnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfcmVzdHlsZSIsei5leHRlbmREZWVwKFtdLFtNLGldKSksdH0pfSxQLnJlbGF5b3V0PWZ1bmN0aW9uIEoodCxlLHIpe2Z1bmN0aW9uIGkodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB2b2lkIHQuZm9yRWFjaChmdW5jdGlvbih0KXtpKHQsZSl9KTtpZighKHQgaW4gdikpe3ZhciByPXoubmVzdGVkUHJvcGVydHkocCx0KTt0IGluIEV8fChFW3RdPXIuZ2V0KCkpLHZvaWQgMCE9PWUmJnIuc2V0KGUpfX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9UC5BeGVzLmlkMm5hbWUodFtlKyJyZWYiXXx8ZSk7cmV0dXJuKGdbcl18fHt9KS5hdXRvcmFuZ2V9ZnVuY3Rpb24gYSh0KXt2YXIgZT10WyJ4YXhpcy5yYW5nZVswXSJdLHI9dFsieGF4aXMucmFuZ2VbMV0iXSxuPWcueGF4aXMmJmcueGF4aXMucmFuZ2VzbGlkZXI/Zy54YXhpcy5yYW5nZXNsaWRlcjp7fTtuLnZpc2libGUmJihlfHxyP2cueGF4aXMucmFuZ2VzbGlkZXIuc2V0UmFuZ2UoZSxyKTp0WyJ4YXhpcy5hdXRvcmFuZ2UiXSYmZy54YXhpcy5yYW5nZXNsaWRlci5zZXRSYW5nZSgpKX1pZih0PW4odCksdC5mcmFtZXdvcmsmJnQuZnJhbWV3b3JrLmlzUG9sYXIpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTt2YXIgcyxsLGMsdSxoLGYsZCxwPXQubGF5b3V0LGc9dC5fZnVsbExheW91dCx2PXt9LG09ITEseT0hMSxiPSExLHg9ITEsXz0hMSxBPSExO2lmKCJzdHJpbmciPT10eXBlb2YgZSl2W2VdPXI7ZWxzZXtpZighei5pc1BsYWluT2JqZWN0KGUpKXJldHVybiBjb25zb2xlLmxvZygicmVsYXlvdXQgZmFpbCIsZSxyKSxQcm9taXNlLnJlamVjdCgpO3Y9ZX1mb3IoT2JqZWN0LmtleXModikubGVuZ3RoJiYodC5jaGFuZ2VkPSEwKSxjPU9iamVjdC5rZXlzKHYpLGw9UC5BeGVzLmxpc3QodCksZD0wO2Q8Yy5sZW5ndGg7ZCsrKXtpZigwPT09Y1tkXS5pbmRleE9mKCJhbGxheGVzIikpe2Zvcih2YXIgaz0wO2s8bC5sZW5ndGg7aysrKWg9bFtrXS5faWQuc3Vic3RyKDEpLGY9LTEhPT1oLmluZGV4T2YoInNjZW5lIik/aCsiLiI6IiIscz1jW2RdLnJlcGxhY2UoImFsbGF4ZXMiLGYrbFtrXS5fbmFtZSksdltzXXx8KHZbc109dltjW2RdXSk7ZGVsZXRlIHZbY1tkXV19Y1tkXS5tYXRjaCgvXmFubm90YXRpb25zXFtbMC05LV0rXF0ucmVmJC8pJiYodT12W2NbZF1dLnNwbGl0KCJ5IiksdltjW2RdLnJlcGxhY2UoInJlZiIsInhyZWYiKV09dVswXSx2W2NbZF0ucmVwbGFjZSgicmVmIiwieXJlZiIpXT0yPT09dS5sZW5ndGg/InkiK3VbMV06InBhcGVyIixkZWxldGUgdltjW2RdXSl9dmFyIE09e30sRT17fSxMPVsiaGVpZ2h0Iiwid2lkdGgiXTtmb3IodmFyIFMgaW4gdil7dmFyIEM9ei5uZXN0ZWRQcm9wZXJ0eShwLFMpLFI9dltTXSxOPUMucGFydHMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBDLnBhcnRzW04tMV0/Ti0xOk4tMixGPUMucGFydHNbal0sRD1DLnBhcnRzW2otMV0rIi4iK0YsVT1DLnBhcnRzLnNsaWNlKDAsaikuam9pbigiLiIpLFY9ei5uZXN0ZWRQcm9wZXJ0eSh0LmxheW91dCxVKS5nZXQoKSxxPXoubmVzdGVkUHJvcGVydHkoZyxVKS5nZXQoKTtpZihNW1NdPVIsRVtTXT0icmV2ZXJzZSI9PT1GP1I6Qy5nZXQoKSwtMSE9PUwuaW5kZXhPZihTKT9pKCJhdXRvc2l6ZSIsITEpOiJhdXRvc2l6ZSI9PT1TP2koTCx2b2lkIDApOkQubWF0Y2goL15beHl6XWF4aXNbMC05XSpcLnJhbmdlKFxbWzB8MV1cXSk/JC8pP2koVSsiLmF1dG9yYW5nZSIsITEpOkQubWF0Y2goL15beHl6XWF4aXNbMC05XSpcLmF1dG9yYW5nZSQvKT9pKFtVKyIucmFuZ2VbMF0iLFUrIi5yYW5nZVsxXSJdLHZvaWQgMCk6RC5tYXRjaCgvXmFzcGVjdHJhdGlvXC5beHl6XSQvKT9pKEMucGFydHNbMF0rIi5hc3BlY3Rtb2RlIiwibWFudWFsIik6RC5tYXRjaCgvXmFzcGVjdG1vZGUkLyk/aShbVSsiLngiLFUrIi55IixVKyIueiJdLHZvaWQgMCk6InRpY2swIj09PUZ8fCJkdGljayI9PT1GP2koVSsiLnRpY2ttb2RlIiwibGluZWFyIik6InRpY2ttb2RlIj09PUY/aShbVSsiLnRpY2swIixVKyIuZHRpY2siXSx2b2lkIDApOi9beHldYXhpc1swLTldKj8kLy50ZXN0KEYpJiYhT2JqZWN0LmtleXMoUnx8e30pLmxlbmd0aCYmKF89ITApLCJ0eXBlIj09PUYmJiJsb2ciPT09cS50eXBlIT0oImxvZyI9PT1SKSl7dmFyIFk9VjtpZihZJiZZLnJhbmdlKWlmKHEuYXV0b3JhbmdlKSJsb2ciPT09UiYmKFkucmFuZ2U9WS5yYW5nZVsxXT5ZLnJhbmdlWzBdP1sxLDJdOlsyLDFdKTtlbHNle3ZhciBYPVkucmFuZ2VbMF0sVz1ZLnJhbmdlWzFdOyJsb2ciPT09Uj8oMD49WCYmMD49VyYmaShVKyIuYXV0b3JhbmdlIiwhMCksMD49WD9YPVcvMWU2OjA+PVcmJihXPVgvMWU2KSxpKFUrIi5yYW5nZVswXSIsTWF0aC5sb2coWCkvTWF0aC5MTjEwKSxpKFUrIi5yYW5nZVsxXSIsTWF0aC5sb2coVykvTWF0aC5MTjEwKSk6KGkoVSsiLnJhbmdlWzBdIixNYXRoLnBvdygxMCxYKSksaShVKyIucmFuZ2VbMV0iLE1hdGgucG93KDEwLFcpKSl9ZWxzZSBpKFUrIi5hdXRvcmFuZ2UiLCEwKX1pZigicmV2ZXJzZSI9PT1GKVYucmFuZ2U/Vi5yYW5nZS5yZXZlcnNlKCk6KGkoVSsiLmF1dG9yYW5nZSIsITApLFYucmFuZ2U9WzEsMF0pLHEuYXV0b3JhbmdlP189ITA6eD0hMDtlbHNlIGlmKCJhbm5vdGF0aW9ucyI9PT1DLnBhcnRzWzBdfHwic2hhcGVzIj09PUMucGFydHNbMF0pe3ZhciBaPUMucGFydHNbMV0sJD1DLnBhcnRzWzBdLEs9cFskXXx8W10sUT1QW3oudGl0bGVDYXNlKCQpXSx0dD1LW1pdfHx7fTsyPT09Qy5wYXJ0cy5sZW5ndGgmJigiYWRkIj09PXZbU118fHouaXNQbGFpbk9iamVjdCh2W1NdKT9FW1NdPSJyZW1vdmUiOiJyZW1vdmUiPT09dltTXT8tMT09PVo/KEVbJF09SyxkZWxldGUgRVtTXSk6RVtTXT10dDpjb25zb2xlLmxvZygiPz8/Iix2KSksIW8odHQsIngiKSYmIW8odHQsInkiKXx8ei5jb250YWluc0FueShTLFsiY29sb3IiLCJvcGFjaXR5IiwiYWxpZ24iLCJkYXNoIl0pfHwoXz0hMCksUS5kcmF3KHQsWixDLnBhcnRzLnNsaWNlKDIpLmpvaW4oIi4iKSx2W1NdKSxkZWxldGUgdltTXX1lbHNlIDA9PT1DLnBhcnRzWzBdLmluZGV4T2YoInNjZW5lIik/eD0hMDowPT09Qy5wYXJ0c1swXS5pbmRleE9mKCJnZW8iKT94PSEwOiFnLl9oYXNHTDJEfHwtMT09PVMuaW5kZXhPZigiYXhpcyIpJiYicGxvdF9iZ2NvbG9yIiE9PUMucGFydHNbMF0/ImhpZGRlbmxhYmVscyI9PT1TP189ITA6LTEhPT1DLnBhcnRzWzBdLmluZGV4T2YoImxlZ2VuZCIpP209ITA6LTEhPT1TLmluZGV4T2YoInRpdGxlIik/eT0hMDotMSE9PUMucGFydHNbMF0uaW5kZXhPZigiYmdjb2xvciIpP2I9ITA6Qy5wYXJ0cy5sZW5ndGg+MSYmei5jb250YWluc0FueShDLnBhcnRzWzFdLFsidGljayIsImV4cG9uZW50IiwiZ3JpZCIsInplcm9saW5lIl0pP3k9ITA6LTEhPT1TLmluZGV4T2YoIi5saW5ld2lkdGgiKSYmLTEhPT1TLmluZGV4T2YoImF4aXMiKT95PWI9ITA6Qy5wYXJ0cy5sZW5ndGg+MSYmLTEhPT1DLnBhcnRzWzFdLmluZGV4T2YoImxpbmUiKT9iPSEwOkMucGFydHMubGVuZ3RoPjEmJiJtaXJyb3IiPT09Qy5wYXJ0c1sxXT95PWI9ITA6Im1hcmdpbi5wYWQiPT09Uz95PWI9ITA6Im1hcmdpbiI9PT1DLnBhcnRzWzBdfHwiYXV0b3JhbmdlIj09PUMucGFydHNbMV18fCJyYW5nZW1vZGUiPT09Qy5wYXJ0c1sxXXx8InR5cGUiPT09Qy5wYXJ0c1sxXXx8ImRvbWFpbiI9PT1DLnBhcnRzWzFdfHxTLm1hdGNoKC9eKGJhcnxib3h8Zm9udCkvKT9fPSEwOi0xIT09WyJob3Zlcm1vZGUiLCJkcmFnbW9kZSJdLmluZGV4T2YoUyk/QT0hMDotMT09PVsiaG92ZXJtb2RlIiwiZHJhZ21vZGUiLCJoZWlnaHQiLCJ3aWR0aCIsImF1dG9zaXplIl0uaW5kZXhPZihTKSYmKHg9ITApOng9ITAsQy5zZXQoUil9TyYmTy5hZGQodCxKLFt0LEVdLEosW3QsTV0pLHYuYXV0b3NpemUmJih2PXcodCx2KSksKHYuaGVpZ2h0fHx2LndpZHRofHx2LmF1dG9zaXplKSYmKF89ITApO3ZhciBldD1PYmplY3Qua2V5cyh2KSxydD1bSS5wcmV2aW91c1Byb21pc2VzXTtpZih4fHxfKXJ0LnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gdC5sYXlvdXQ9dm9pZCAwLF8mJih0LmNhbGNkYXRhPXZvaWQgMCksUC5wbG90KHQsIiIscCl9KTtlbHNlIGlmKGV0Lmxlbmd0aCYmKEkuc3VwcGx5RGVmYXVsdHModCksZz10Ll9mdWxsTGF5b3V0LG0mJnJ0LnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gQi5kcmF3KHQpLEkucHJldmlvdXNQcm9taXNlcyh0KX0pLGImJnJ0LnB1c2goVCkseSYmcnQucHVzaChmdW5jdGlvbigpe3JldHVybiBQLkF4ZXMuZG9UaWNrcyh0LCJyZWRyYXciKSxILmRyYXcodCwiZ3RpdGxlIiksSS5wcmV2aW91c1Byb21pc2VzKHQpfSksQSkpe3ZhciBudDtmb3IoRyh0KSxudD1JLmdldFN1YnBsb3RJZHMoZywiZ2wzZCIpLGQ9MDtkPG50Lmxlbmd0aDtkKyspaD1nW250W2RdXS5fc2NlbmUsaC51cGRhdGVGeChnLmRyYWdtb2RlLGcuaG92ZXJtb2RlKTtmb3IobnQ9SS5nZXRTdWJwbG90SWRzKGcsImdsMmQiKSxkPTA7ZDxudC5sZW5ndGg7ZCsrKWg9Zy5fcGxvdHNbbnRbZF1dLl9zY2VuZTJkLGgudXBkYXRlRngoZyk7Zm9yKG50PUkuZ2V0U3VicGxvdElkcyhnLCJnZW8iKSxkPTA7ZDxudC5sZW5ndGg7ZCsrKXt2YXIgaXQ9Z1tudFtkXV0uX2dlbztpdC51cGRhdGVGeChnLmhvdmVybW9kZSl9fXZhciBvdD16LnN5bmNPckFzeW5jKHJ0LHQpO3JldHVybiBvdCYmb3QudGhlbnx8KG90PVByb21pc2UucmVzb2x2ZSh0KSksb3QudGhlbihmdW5jdGlvbigpe3ZhciBlPXouZXh0ZW5kRGVlcCh7fSxNKTtyZXR1cm4gYShlKSx0LmVtaXQoInBsb3RseV9yZWxheW91dCIsZSksdH0pfSxQLnB1cmdlPWZ1bmN0aW9uKHQpe3Q9bih0KTt2YXIgZT10Ll9mdWxsTGF5b3V0fHx7fSxyPXQuX2Z1bGxEYXRhfHxbXTtyZXR1cm4gSS5jbGVhblBsb3QoW10se30scixlKSxJLnB1cmdlKHQpLFIucHVyZ2UodCksZS5fY29udGFpbmVyJiZlLl9jb250YWluZXIucmVtb3ZlKCksZGVsZXRlIHQuX2NvbnRleHQsZGVsZXRlIHQuX3JlcGxvdFBlbmRpbmcsZGVsZXRlIHQuX21vdXNlRG93blRpbWUsZGVsZXRlIHQuX2htcGl4Y291bnQsZGVsZXRlIHQuX2htbHVtY291bnQsdH19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuLi9jb21wb25lbnRzL2RyYXdpbmciOjMxOSwiLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiOjMyNSwiLi4vY29tcG9uZW50cy9sZWdlbmQiOjMzNSwiLi4vY29tcG9uZW50cy9tb2RlYmFyL21hbmFnZSI6MzM5LCIuLi9jb21wb25lbnRzL3Jhbmdlc2VsZWN0b3IiOjM0NiwiLi4vY29tcG9uZW50cy9yYW5nZXNsaWRlciI6MzUyLCIuLi9jb21wb25lbnRzL3NoYXBlcyI6MzU1LCIuLi9jb21wb25lbnRzL3RpdGxlcyI6MzU2LCIuLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6MzYyLCIuLi9saWIiOjM3MywiLi4vbGliL2V2ZW50cyI6MzY4LCIuLi9saWIvcXVldWUiOjM3OSwiLi4vcGxvdGx5IjozOTAsIi4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCI6Mzk4LCIuLi9wbG90cy9wbG90cyI6NDM3LGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzQsImdsLW1hdDQvZnJvbVF1YXQiOjkxfV0sMzg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt0cnl7dC5fZnVsbExheW91dC5fcGFwZXIuc3R5bGUoImJhY2tncm91bmQiLGUpfWNhdGNoKHIpe2NvbnNvbGUubG9nKHIpfX1lLmV4cG9ydHM9e3N0YXRpY1Bsb3Q6ITEsZWRpdGFibGU6ITEsYXV0b3NpemFibGU6ITEsZmlsbEZyYW1lOiExLGZyYW1lTWFyZ2luczowLHNjcm9sbFpvb206ITEsZG91YmxlQ2xpY2s6InJlc2V0K2F1dG9zaXplIixzaG93VGlwczohMCxzaG93TGluazohMSxzZW5kRGF0YTohMCxsaW5rVGV4dDoiRWRpdCBjaGFydCIsc2hvd1NvdXJjZXM6ITEsZGlzcGxheU1vZGVCYXI6ImhvdmVyIixtb2RlQmFyQnV0dG9uc1RvUmVtb3ZlOltdLG1vZGVCYXJCdXR0b25zVG9BZGQ6W10sbW9kZUJhckJ1dHRvbnM6ITEsZGlzcGxheWxvZ286ITAscGxvdEdsUGl4ZWxSYXRpbzoyLHNldEJhY2tncm91bmQ6bix0b3BvanNvblVSTDoiaHR0cHM6Ly9jZG4ucGxvdC5seS8ifX0se31dLDM4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlPXYuYXR0cmlidXRlcyxyPWwoe3R5cGU6dH0pLG49dSh0KSxpPWYodCksbz17fSxoPXt9O28udHlwZT1udWxsLGIobyxlKSxvPWEoci5hdHRyaWJ1dGVzLG8sImF0dHJpYnV0ZXMiLHQpLHZvaWQgMCE9PWkuYXR0cmlidXRlcyYmYihvLGkuYXR0cmlidXRlcyksby50eXBlPXQsbz1jKG8pLHMobyksRS50cmFjZXNbdF09eSh7fSxuLHthdHRyaWJ1dGVzOm99KSx2b2lkIDAhPT1yLmxheW91dEF0dHJpYnV0ZXMmJihoPWEoci5sYXlvdXRBdHRyaWJ1dGVzLGgsImxheW91dEF0dHJpYnV0ZXMiLHQpLHMoaCksRS50cmFjZXNbdF0ubGF5b3V0QXR0cmlidXRlcz1oKX1mdW5jdGlvbiBpKCl7dmFyIHQ9di5sYXlvdXRBdHRyaWJ1dGVzLGU9e307ZT1hKHQsZSwibGF5b3V0QXR0cmlidXRlcyIsIioiKSxlPWgoZSksZT1kKGUpLGU9YyhlKSxzKGUpLHAoZSksRS5sYXlvdXQ9e2xheW91dEF0dHJpYnV0ZXM6ZX19ZnVuY3Rpb24gbygpe0UuZGVmcz17dmFsT2JqZWN0czptLnZhbE9iamVjdHMsbWV0YUtleXM6VC5jb25jYXQoWyJkZXNjcmlwdGlvbiIsInJvbGUiXSl9fWZ1bmN0aW9uIGEodCxlLHIsbil7dmFyIGksbyxzLGMsdTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihoKXtyZXR1cm4gaD09PV8/dm9pZCBPYmplY3Qua2V5cyh0W2hdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2k9bCh7bW9kdWxlOnRbaF1bY119KSx2b2lkIDAhPT1pJiYobz1pW3JdLHM9YShvLHt9LHIsbiksbS5uZXN0ZWRQcm9wZXJ0eShlLGMpLnNldChiKHt9LHMpKSl9KTpoPT09dz92b2lkIE9iamVjdC5rZXlzKHRbaF0pLmZvckVhY2goZnVuY3Rpb24oaSl7aT09PW4mJihjPWwoe21vZHVsZTp0W2hdW2ldfSksdm9pZCAwIT09YyYmKHU9Y1tyXSx1PWEodSx7fSxyLG4pLHgoZSx1KSkpfSk6dm9pZChlW2hdPW0uaXNQbGFpbk9iamVjdCh0W2hdKT94KHt9LHRbaF0pOnRbaF0pfSksZX1mdW5jdGlvbiBzKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJue3ZhbFR5cGU6InN0cmluZyJ9fWZ1bmN0aW9uIHIodCxyLG4pe0MuaXNWYWxPYmplY3QodCk/ImRhdGFfYXJyYXkiPT09dC52YWxUeXBlPyh0LnJvbGU9ImRhdGEiLG5bcisic3JjIl09ZShyKSk6dC5hcnJheU9rPT09ITAmJihuW3IrInNyYyJdPWUocikpOm0uaXNQbGFpbk9iamVjdCh0KSYmKHQucm9sZT0ib2JqZWN0Iil9Qy5jcmF3bCh0LHIpfWZ1bmN0aW9uIGwodCl7aWYoInR5cGUiaW4gdClyZXR1cm4iYXJlYSI9PT10LnR5cGU/e2F0dHJpYnV0ZXM6TH06di5nZXRNb2R1bGUoe3R5cGU6dC50eXBlfSk7dmFyIGU9di5zdWJwbG90c1JlZ2lzdHJ5LHI9dC5tb2R1bGU7cmV0dXJuIGVbcl0/ZVtyXToibW9kdWxlImluIHQ/Z1tyXTp2b2lkIDB9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihlKXsiXyI9PT1lLmNoYXJBdCgwKSYmLTE9PT1ULmluZGV4T2YoZSkmJmRlbGV0ZSB0W2VdfSksdH1mdW5jdGlvbiB1KHQpe3JldHVybiJhcmVhIj09PXQ/e306di5tb2R1bGVzW3RdLm1ldGF8fHt9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHkodCx7cmFkaWFsYXhpczpTLnJhZGlhbGF4aXMsYW5ndWxhcmF4aXM6Uy5hbmd1bGFyYXhpc30pLHkodCxTLmxheW91dCksdH1mdW5jdGlvbiBmKHQpe2lmKCJhcmVhIj09PXQpcmV0dXJue307dmFyIGU9di5zdWJwbG90c1JlZ2lzdHJ5LHI9T2JqZWN0LmtleXMoZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB2LnRyYWNlSXMoe3R5cGU6dH0sZSl9KVswXTtyZXR1cm4gdm9pZCAwPT09cj97fTplW3JdfWZ1bmN0aW9uIGQodCl7dmFyIGU9di5zdWJwbG90c1JlZ2lzdHJ5O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGksbz1lW25dO2k9ImNhcnRlc2lhbiI9PT1ufHwiZ2wyZCI9PT1uP28uYXR0clJlZ2V4LngudGVzdChyKXx8by5hdHRyUmVnZXgueS50ZXN0KHIpOm8uYXR0clJlZ2V4LnRlc3QociksaSYmKHRbcl1bQV09ITApfSl9KSx0fWZ1bmN0aW9uIHAodCl7ZnVuY3Rpb24gZSh0LGUscil7aWYodFtrXT09PSEwKXt2YXIgbj1lLnN1YnN0cigwLGUubGVuZ3RoLTEpO2RlbGV0ZSB0W2tdLHJbZV09e2l0ZW1zOnt9fSxyW2VdLml0ZW1zW25dPXQscltlXS5yb2xlPSJvYmplY3QifX1DLmNyYXdsKHQsZSl9dmFyIGc9dCgiLi4vcGxvdGx5Iiksdj10KCIuLi9wbG90cy9wbG90cyIpLG09dCgiLi4vbGliIikseT1tLmV4dGVuZEZsYXQsYj1tLmV4dGVuZERlZXAseD1tLmV4dGVuZERlZXBBbGwsXz0iX25lc3RlZE1vZHVsZXMiLHc9Il9jb21wb3NlZE1vZHVsZXMiLEE9Il9pc1N1YnBsb3RPYmoiLGs9Il9pc0xpbmtlZFRvQXJyYXkiLE09Il9kZXByZWNhdGVkIixUPVtBLGssTV0sRT17dHJhY2VzOnt9LGxheW91dDp7fSxkZWZzOnt9fSxMPXQoIi4uL3Bsb3RzL3BvbGFyL2FyZWFfYXR0cmlidXRlcyIpLFM9dCgiLi4vcGxvdHMvcG9sYXIvYXhpc19hdHRyaWJ1dGVzIiksQz1lLmV4cG9ydHM9e307Qy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdi5hbGxUeXBlcy5jb25jYXQoImFyZWEiKS5mb3JFYWNoKG4pLGkoKSxvKCksRX0sQy5jcmF3bD1mdW5jdGlvbih0LGUpe09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49dFtyXTstMT09PVQuaW5kZXhPZihyKSYmKGUobixyLHQpLEMuaXNWYWxPYmplY3Qobil8fG0uaXNQbGFpbk9iamVjdChuKSYmQy5jcmF3bChuLGUpKX0pfSxDLmlzVmFsT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ2b2lkIDAhPT10LnZhbFR5cGV9fSx7Ii4uL2xpYiI6MzczLCIuLi9wbG90bHkiOjM5MCwiLi4vcGxvdHMvcGxvdHMiOjQzNywiLi4vcGxvdHMvcG9sYXIvYXJlYV9hdHRyaWJ1dGVzIjo0MzgsIi4uL3Bsb3RzL3BvbGFyL2F4aXNfYXR0cmlidXRlcyI6NDM5fV0sMzg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3Bsb3RseSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5MaWIuZXh0ZW5kRmxhdChuLmRlZmF1bHRDb25maWcsdCl9fSx7Ii4uL3Bsb3RseSI6MzkwfV0sMzkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3QoImVzNi1wcm9taXNlIikucG9seWZpbGwoKSxyLkxpYj10KCIuL2xpYiIpLHIudXRpbD10KCIuL2xpYi9zdmdfdGV4dF91dGlscyIpLHIuUXVldWU9dCgiLi9saWIvcXVldWUiKSx0KCIuLi9idWlsZC9wbG90Y3NzIiksci5NYXRoSmF4Q29uZmlnPXQoIi4vZm9udHMvbWF0aGpheF9jb25maWciKSxyLmRlZmF1bHRDb25maWc9dCgiLi9wbG90X2FwaS9wbG90X2NvbmZpZyIpO3ZhciBuPXIuUGxvdHM9dCgiLi9wbG90cy9wbG90cyIpO3IuQXhlcz10KCIuL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksci5GeD10KCIuL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCIpLHIubWljcm9wb2xhcj10KCIuL3Bsb3RzL3BvbGFyL21pY3JvcG9sYXIiKSxyLkNvbG9yPXQoIi4vY29tcG9uZW50cy9jb2xvciIpLHIuRHJhd2luZz10KCIuL2NvbXBvbmVudHMvZHJhd2luZyIpLHIuQ29sb3JzY2FsZT10KCIuL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHIuQ29sb3JiYXI9dCgiLi9jb21wb25lbnRzL2NvbG9yYmFyIiksci5FcnJvckJhcnM9dCgiLi9jb21wb25lbnRzL2Vycm9yYmFycyIpLHIuQW5ub3RhdGlvbnM9dCgiLi9jb21wb25lbnRzL2Fubm90YXRpb25zIiksci5TaGFwZXM9dCgiLi9jb21wb25lbnRzL3NoYXBlcyIpLHIuTGVnZW5kPXQoIi4vY29tcG9uZW50cy9sZWdlbmQiKSxyLk1vZGVCYXI9dCgiLi9jb21wb25lbnRzL21vZGViYXIiKSxyLnJlZ2lzdGVyPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiTm8gYXJndW1lbnQgcGFzc2VkIHRvIFBsb3RseS5yZWdpc3Rlci4iKTt0JiYhQXJyYXkuaXNBcnJheSh0KSYmKHQ9W3RdKTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dFtlXTtpZihyJiYidHJhY2UiIT09ci5tb2R1bGVUeXBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBtb2R1bGUgd2FzIGF0dGVtcHRlZCB0byBiZSByZWdpc3RlcmVkISIpO24ucmVnaXN0ZXIocixyLm5hbWUsci5jYXRlZ29yaWVzLHIubWV0YSksbi5zdWJwbG90c1JlZ2lzdHJ5W3IuYmFzZVBsb3RNb2R1bGUubmFtZV18fG4ucmVnaXN0ZXJTdWJwbG90KHIuYmFzZVBsb3RNb2R1bGUpfX0sci5yZWdpc3Rlcih0KCIuL3RyYWNlcy9zY2F0dGVyIikpLHQoIi4vcGxvdF9hcGkvcGxvdF9hcGkiKSxyLlBsb3RTY2hlbWE9dCgiLi9wbG90X2FwaS9wbG90X3NjaGVtYSIpLHIuU25hcHNob3Q9dCgiLi9zbmFwc2hvdCIpfSx7Ii4uL2J1aWxkL3Bsb3Rjc3MiOjEsIi4vY29tcG9uZW50cy9hbm5vdGF0aW9ucyI6Mjk5LCIuL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi9jb21wb25lbnRzL2NvbG9yYmFyIjozMDYsIi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjozMTQsIi4vY29tcG9uZW50cy9kcmF3aW5nIjozMTksIi4vY29tcG9uZW50cy9lcnJvcmJhcnMiOjMyNSwiLi9jb21wb25lbnRzL2xlZ2VuZCI6MzM1LCIuL2NvbXBvbmVudHMvbW9kZWJhciI6MzM4LCIuL2NvbXBvbmVudHMvc2hhcGVzIjozNTUsIi4vZm9udHMvbWF0aGpheF9jb25maWciOjM2NCwiLi9saWIiOjM3MywiLi9saWIvcXVldWUiOjM3OSwiLi9saWIvc3ZnX3RleHRfdXRpbHMiOjM4NCwiLi9wbG90X2FwaS9wbG90X2FwaSI6Mzg2LCIuL3Bsb3RfYXBpL3Bsb3RfY29uZmlnIjozODcsIi4vcGxvdF9hcGkvcGxvdF9zY2hlbWEiOjM4OCwiLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCI6Mzk4LCIuL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vcGxvdHMvcG9sYXIvbWljcm9wb2xhciI6NDQwLCIuL3NuYXBzaG90Ijo0NDQsIi4vdHJhY2VzL3NjYXR0ZXIiOjUzNywiZXM2LXByb21pc2UiOjczfV0sMzkxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOltdLGRmbHQ6InNjYXR0ZXIifSx2aXNpYmxlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJsZWdlbmRvbmx5Il0sZGZsdDohMH0sc2hvd2xlZ2VuZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sbGVnZW5kZ3JvdXA6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIn0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LG5hbWU6e3ZhbFR5cGU6InN0cmluZyJ9LHVpZDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIifSxob3ZlcmluZm86e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbIngiLCJ5IiwieiIsInRleHQiLCJuYW1lIl0sZXh0cmFzOlsiYWxsIiwibm9uZSJdLGRmbHQ6ImFsbCJ9LHN0cmVhbTp7dG9rZW46e3ZhbFR5cGU6InN0cmluZyIsbm9CbGFuazohMCxzdHJpY3Q6ITB9LG1heHBvaW50czp7dmFsVHlwZToibnVtYmVyIixtaW46MH19fX0se31dLDM5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3hheGlzOnt2YWxUeXBlOiJheGlzaWQiLGRmbHQ6IngifSx5YXhpczp7dmFsVHlwZToiYXhpc2lkIixkZmx0OiJ5In19fSx7fV0sMzkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGUscixuPXQudGlja3ZhbHMsaT10LnRpY2t0ZXh0LG89bmV3IEFycmF5KG4ubGVuZ3RoKSxhPTEuMDAwMSp0LnJhbmdlWzBdLTFlLTQqdC5yYW5nZVsxXSxsPTEuMDAwMSp0LnJhbmdlWzFdLTFlLTQqdC5yYW5nZVswXSxjPU1hdGgubWluKGEsbCksdT1NYXRoLm1heChhLGwpLGg9MDtmb3IoQXJyYXkuaXNBcnJheShpKXx8KGk9W10pLHI9MDtyPG4ubGVuZ3RoO3IrKyllPXQuZDJsKG5bcl0pLGU+YyYmdT5lJiYodm9pZCAwPT09aVtyXT9vW2hdPUEudGlja1RleHQodCxlKTpvW2hdPXModCxlLFN0cmluZyhpW3JdKSksaCsrKTtyZXR1cm4gaDxuLmxlbmd0aCYmby5zcGxpY2UoaCxuLmxlbmd0aC1oKSxvfWZ1bmN0aW9uIGkodCxlLHIpe3JldHVybiBlKl8uTGliLnJvdW5kVXAodC9lLHIpfWZ1bmN0aW9uIG8odCl7dmFyIGUscj10LmR0aWNrO2lmKHQuX3RpY2tleHBvbmVudD0wLHgocil8fCJzdHJpbmciPT10eXBlb2Ygcnx8KHI9MSksImNhdGVnb3J5Ij09PXQudHlwZSl0Ll90aWNrcm91bmQ9bnVsbDtlbHNlIGlmKHgocil8fCJMIj09PXIuY2hhckF0KDApKWlmKCJkYXRlIj09PXQudHlwZSlyPj04NjRlNT90Ll90aWNrcm91bmQ9ImQiOnI+PTM2ZTU/dC5fdGlja3JvdW5kPSJIIjpyPj02ZTQ/dC5fdGlja3JvdW5kPSJNIjpyPj0xZTM/dC5fdGlja3JvdW5kPSJTIjp0Ll90aWNrcm91bmQ9My1NYXRoLnJvdW5kKE1hdGgubG9nKHIvMikvTWF0aC5MTjEwKTtlbHNle3gocil8fChyPU51bWJlcihyLnN1YnN0cigxKSkpLHQuX3RpY2tyb3VuZD0yLU1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjEwKy4wMSksZT0ibG9nIj09PXQudHlwZT9NYXRoLnBvdygxMCxNYXRoLm1heCh0LnJhbmdlWzBdLHQucmFuZ2VbMV0pKTpNYXRoLm1heChNYXRoLmFicyh0LnJhbmdlWzBdKSxNYXRoLmFicyh0LnJhbmdlWzFdKSk7dmFyIG49TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMTArLjAxKTtNYXRoLmFicyhuKT4zJiYoIlNJIj09PXQuZXhwb25lbnRmb3JtYXR8fCJCIj09PXQuZXhwb25lbnRmb3JtYXQ/dC5fdGlja2V4cG9uZW50PTMqTWF0aC5yb3VuZCgobi0xKS8zKTp0Ll90aWNrZXhwb25lbnQ9bil9ZWxzZSJNIj09PXIuY2hhckF0KDApP3QuX3RpY2tyb3VuZD0yPT09ci5sZW5ndGg/Im0iOiJ5Ijp0Ll90aWNrcm91bmQ9bnVsbH1mdW5jdGlvbiBhKHQsZSl7dmFyIHI9dC5tYXRjaChGKSxuPW5ldyBEYXRlKGUpO2lmKHIpe3ZhciBpPU1hdGgubWluKCtyWzFdfHw2LDYpLG89U3RyaW5nKGUvMWUzJTErMi4wMDAwMDA1KS5zdWJzdHIoMixpKS5yZXBsYWNlKC8wKyQvLCIiKXx8IjAiO3JldHVybiBiLnRpbWUuZm9ybWF0KHQucmVwbGFjZShGLG8pKShuKX1yZXR1cm4gYi50aW1lLmZvcm1hdCh0KShuKX1mdW5jdGlvbiBzKHQsZSxyKXt2YXIgbj10LnRpY2tmb250fHx0Ll90ZC5fZnVsbExheW91dC5mb250O3JldHVybnt4OmUsZHg6MCxkeTowLHRleHQ6cnx8IiIsZm9udFNpemU6bi5zaXplLGZvbnQ6bi5mYW1pbHksZm9udENvbG9yOm4uY29sb3J9fWZ1bmN0aW9uIGwodCxlLHIsbil7dmFyIGksbz1lLngscz10Ll90aWNrcm91bmQsbD1uZXcgRGF0ZShvKSxjPSIiO3ImJnQuaG92ZXJmb3JtYXQ/aT1hKHQuaG92ZXJmb3JtYXQsbyk6dC50aWNrZm9ybWF0P2k9YSh0LnRpY2tmb3JtYXQsbyk6KG4mJih4KHMpP3MrPTI6cz17eToibSIsbToiZCIsZDoiSCIsSDoiTSIsTToiUyIsUzoyfVtzXSksInkiPT09cz9pPXoobCk6Im0iPT09cz9pPVIobCk6KG8hPT10Ll90bWlufHxyfHwoYz0iPGJyPiIreihsKSksImQiPT09cz9pPU8obCk6IkgiPT09cz9pPUkobCk6KG8hPT10Ll90bWlufHxyfHwoYz0iPGJyPiIrTyhsKSsiLCAiK3oobCkpLGk9TihsKSwiTSIhPT1zJiYoaSs9aihsKSwiUyIhPT1zJiYoaSs9Zih5KG8vMWUzLDEpLHQsIm5vbmUiLHIpLnN1YnN0cigxKSkpKSkpLGUudGV4dD1pK2N9ZnVuY3Rpb24gYyh0LGUscixuLGkpe3ZhciBvPXQuZHRpY2ssYT1lLng7aWYoIW58fCJzdHJpbmciPT10eXBlb2YgbyYmIkwiPT09by5jaGFyQXQoMCl8fChvPSJMMyIpLHQudGlja2Zvcm1hdHx8InN0cmluZyI9PXR5cGVvZiBvJiYiTCI9PT1vLmNoYXJBdCgwKSllLnRleHQ9ZihNYXRoLnBvdygxMCxhKSx0LGksbik7ZWxzZSBpZih4KG8pfHwiRCI9PT1vLmNoYXJBdCgwKSYmeShhKy4wMSwxKTwuMSlpZigtMSE9PVsiZSIsIkUiLCJwb3dlciJdLmluZGV4T2YodC5leHBvbmVudGZvcm1hdCkpe3ZhciBzPU1hdGgucm91bmQoYSk7MD09PXM/ZS50ZXh0PTE6MT09PXM/ZS50ZXh0PSIxMCI6cz4xP2UudGV4dD0iMTA8c3VwPiIrcysiPC9zdXA+IjplLnRleHQ9IjEwPHN1cD5cdTIyMTIiKy1zKyI8L3N1cD4iLGUuZm9udFNpemUqPTEuMjV9ZWxzZSBlLnRleHQ9ZihNYXRoLnBvdygxMCxhKSx0LCIiLCJmYWtlaG92ZXIiKSwiRDEiPT09byYmInkiPT09dC5faWQuY2hhckF0KDApJiYoZS5keS09ZS5mb250U2l6ZS82KTtlbHNle2lmKCJEIiE9PW8uY2hhckF0KDApKXRocm93InVucmVjb2duaXplZCBkdGljayAiK1N0cmluZyhvKTtlLnRleHQ9U3RyaW5nKE1hdGgucm91bmQoTWF0aC5wb3coMTAseShhLDEpKSkpLGUuZm9udFNpemUqPS43NX1pZigiRDEiPT09dC5kdGljayl7dmFyIGw9U3RyaW5nKGUudGV4dCkuY2hhckF0KDApOyIwIiE9PWwmJiIxIiE9PWx8fCgieSI9PT10Ll9pZC5jaGFyQXQoMCk/ZS5keC09ZS5mb250U2l6ZS80OihlLmR5Kz1lLmZvbnRTaXplLzIsZS5keCs9KHQucmFuZ2VbMV0+dC5yYW5nZVswXT8xOi0xKSplLmZvbnRTaXplKigwPmE/LjU6LjI1KSkpfX1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9dC5fY2F0ZWdvcmllc1tNYXRoLnJvdW5kKGUueCldO3ZvaWQgMD09PXImJihyPSIiKSxlLnRleHQ9U3RyaW5nKHIpfWZ1bmN0aW9uIGgodCxlLHIsbixpKXsiYWxsIj09PXQuc2hvd2V4cG9uZW50JiZNYXRoLmFicyhlLngvdC5kdGljayk8MWUtNiYmKGk9ImhpZGUiKSxlLnRleHQ9ZihlLngsdCxpLG4pfWZ1bmN0aW9uIGYodCxlLHIsbil7dmFyIGk9MD50LGE9ZS5fdGlja3JvdW5kLHM9cnx8ZS5leHBvbmVudGZvcm1hdHx8IkIiLGw9ZS5fdGlja2V4cG9uZW50LGM9ZS50aWNrZm9ybWF0O2lmKG4pe3ZhciB1PXtleHBvbmVudGZvcm1hdDplLmV4cG9uZW50Zm9ybWF0LGR0aWNrOiJub25lIj09PWUuc2hvd2V4cG9uZW50P2UuZHRpY2s6eCh0KT9NYXRoLmFicyh0KXx8MToxLHJhbmdlOiJub25lIj09PWUuc2hvd2V4cG9uZW50P2UucmFuZ2U6WzAsdHx8MV19O28odSksYT0oTnVtYmVyKHUuX3RpY2tyb3VuZCl8fDApKzQsbD11Ll90aWNrZXhwb25lbnQsZS5ob3ZlcmZvcm1hdCYmKGM9ZS5ob3ZlcmZvcm1hdCl9aWYoYylyZXR1cm4gYi5mb3JtYXQoYykodCkucmVwbGFjZSgvLS9nLCJcdTIyMTIiKTt2YXIgaD1NYXRoLnBvdygxMCwtYSkvMjtpZigibm9uZSI9PT1zJiYobD0wKSx0PU1hdGguYWJzKHQpLGg+dCl0PSIwIixpPSExO2Vsc2V7aWYodCs9aCxsJiYodCo9TWF0aC5wb3coMTAsLWwpLGErPWwpLDA9PT1hKXQ9U3RyaW5nKE1hdGguZmxvb3IodCkpO2Vsc2UgaWYoMD5hKXt0PVN0cmluZyhNYXRoLnJvdW5kKHQpKSx0PXQuc3Vic3RyKDAsdC5sZW5ndGgrYSk7Zm9yKHZhciBmPWE7MD5mO2YrKyl0Kz0iMCJ9ZWxzZXt0PVN0cmluZyh0KTt2YXIgcD10LmluZGV4T2YoIi4iKSsxO3AmJih0PXQuc3Vic3RyKDAscCthKS5yZXBsYWNlKC9cLj8wKyQvLCIiKSl9dD1kKHQsZS5fdGQuX2Z1bGxMYXlvdXQuc2VwYXJhdG9ycyl9aWYobCYmImhpZGUiIT09cyl7dmFyIGc7Zz0wPmw/Ilx1MjIxMiIrLWw6InBvd2VyIiE9PXM/IisiK2w6U3RyaW5nKGwpLCJlIj09PXN8fCgiU0kiPT09c3x8IkIiPT09cykmJihsPjEyfHwtMTU+bCk/dCs9ImUiK2c6IkUiPT09cz90Kz0iRSIrZzoicG93ZXIiPT09cz90Kz0iJnRpbWVzOzEwPHN1cD4iK2crIjwvc3VwPiI6IkIiPT09cyYmOT09PWw/dCs9IkIiOiJTSSIhPT1zJiYiQiIhPT1zfHwodCs9RFtsLzMrNV0pfXJldHVybiBpPyJcdTIyMTIiK3Q6dH1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9ZS5jaGFyQXQoMCksbj1lLmNoYXJBdCgxKSxpPXQuc3BsaXQoIi4iKSxvPWlbMF0sYT1pLmxlbmd0aD4xP3IraVsxXToiIjtpZihuJiYoaS5sZW5ndGg+MXx8by5sZW5ndGg+NCkpZm9yKDtCLnRlc3Qobyk7KW89by5yZXBsYWNlKEIsIiQxIituKyIkMiIpO3JldHVybiBvK2F9ZnVuY3Rpb24gcCh0LGUpe3ZhciByLG4saT1bXTtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1bXSxhPXQuX2Z1bGxEYXRhW2Vbcl1dLnhheGlzLHM9dC5fZnVsbERhdGFbZVtyXV0ueWF4aXM7aWYoYSYmcyl7Zm9yKG49MDtuPGkubGVuZ3RoO24rKyktMT09PWlbbl0ueC5pbmRleE9mKGEpJiYtMT09PWlbbl0ueS5pbmRleE9mKHMpfHxvLnB1c2gobik7aWYoby5sZW5ndGgpe3ZhciBsLGM9aVtvWzBdXTtpZihvLmxlbmd0aD4xKWZvcihuPTE7bjxvLmxlbmd0aDtuKyspbD1pW29bbl1dLGcoYy54LGwueCksZyhjLnksbC55KTtnKGMueCxbYV0pLGcoYy55LFtzXSl9ZWxzZSBpLnB1c2goe3g6W2FdLHk6W3NdfSl9fXJldHVybiBpfWZ1bmN0aW9uIGcodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyktMT09PXQuaW5kZXhPZihlW3JdKSYmdC5wdXNoKGVbcl0pfWZ1bmN0aW9uIHYodCxlLHIpe3ZhciBuLGksbz1bXSxhPVtdLHM9dC5sYXlvdXQ7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylvLnB1c2goQS5nZXRGcm9tSWQodCxlW25dKSk7Zm9yKG49MDtuPHIubGVuZ3RoO24rKylhLnB1c2goQS5nZXRGcm9tSWQodCxyW25dKSk7dmFyIGw9T2JqZWN0LmtleXMob1swXSksYz1bImFuY2hvciIsImRvbWFpbiIsIm92ZXJsYXlpbmciLCJwb3NpdGlvbiIsInNpZGUiLCJ0aWNrYW5nbGUiXSx1PVsibGluZWFyIiwibG9nIl07Zm9yKG49MDtuPGwubGVuZ3RoO24rKyl7dmFyIGg9bFtuXSxmPW9bMF1baF0sZD1hWzBdW2hdLHA9ITAsZz0hMSx2PSExO2lmKCJfIiE9PWguY2hhckF0KDApJiYiZnVuY3Rpb24iIT10eXBlb2YgZiYmLTE9PT1jLmluZGV4T2YoaCkpe2ZvcihpPTE7aTxvLmxlbmd0aCYmcDtpKyspe3ZhciB5PW9baV1baF07InR5cGUiPT09aCYmLTEhPT11LmluZGV4T2YoZikmJi0xIT09dS5pbmRleE9mKHkpJiZmIT09eT9nPSEwOnkhPT1mJiYocD0hMSl9Zm9yKGk9MTtpPGEubGVuZ3RoJiZwO2krKyl7dmFyIGI9YVtpXVtoXTsidHlwZSI9PT1oJiYtMSE9PXUuaW5kZXhPZihkKSYmLTEhPT11LmluZGV4T2YoYikmJmQhPT1iP3Y9ITA6YVtpXVtoXSE9PWQmJihwPSExKX1wJiYoZyYmKHNbb1swXS5fbmFtZV0udHlwZT0ibGluZWFyIiksdiYmKHNbYVswXS5fbmFtZV0udHlwZT0ibGluZWFyIiksbShzLGgsbyxhKSl9fWZvcihuPTA7bjx0Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zLmxlbmd0aDtuKyspe3ZhciB4PXQuX2Z1bGxMYXlvdXQuYW5ub3RhdGlvbnNbbl07LTEhPT1lLmluZGV4T2YoeC54cmVmKSYmLTEhPT1yLmluZGV4T2YoeC55cmVmKSYmXy5MaWIuc3dhcEF0dHJzKHMuYW5ub3RhdGlvbnNbbl0sWyI/Il0pfX1mdW5jdGlvbiBtKHQsZSxyLG4pe3ZhciBpLG89Xy5MaWIubmVzdGVkUHJvcGVydHksYT1vKHRbclswXS5fbmFtZV0sZSkuZ2V0KCkscz1vKHRbblswXS5fbmFtZV0sZSkuZ2V0KCk7Zm9yKCJ0aXRsZSI9PT1lJiYoIkNsaWNrIHRvIGVudGVyIFggYXhpcyB0aXRsZSI9PT1hJiYoYT0iQ2xpY2sgdG8gZW50ZXIgWSBheGlzIHRpdGxlIiksIkNsaWNrIHRvIGVudGVyIFkgYXhpcyB0aXRsZSI9PT1zJiYocz0iQ2xpY2sgdG8gZW50ZXIgWCBheGlzIHRpdGxlIikpLGk9MDtpPHIubGVuZ3RoO2krKylvKHQscltpXS5fbmFtZSsiLiIrZSkuc2V0KHMpO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspbyh0LG5baV0uX25hbWUrIi4iK2UpLnNldChhKX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuKHQlZStlKSVlfXZhciBiPXQoImQzIikseD10KCJmYXN0LWlzbnVtZXJpYyIpLF89dCgiLi4vLi4vcGxvdGx5Iiksdz10KCIuLi8uLi9jb21wb25lbnRzL3RpdGxlcyIpLEE9ZS5leHBvcnRzPXt9O0EubGF5b3V0QXR0cmlidXRlcz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksQS5zdXBwbHlMYXlvdXREZWZhdWx0cz10KCIuL2xheW91dF9kZWZhdWx0cyIpLEEuc2V0Q29udmVydD10KCIuL3NldF9jb252ZXJ0Iik7dmFyIGs9dCgiLi9heGlzX2lkcyIpO0EuaWQybmFtZT1rLmlkMm5hbWUsQS5jbGVhbklkPWsuY2xlYW5JZCxBLmxpc3Q9ay5saXN0LEEubGlzdElkcz1rLmxpc3RJZHMsQS5nZXRGcm9tSWQ9ay5nZXRGcm9tSWQsQS5nZXRGcm9tVHJhY2U9ay5nZXRGcm9tVHJhY2UsQS5jb2VyY2VSZWY9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9ci5fZnVsbExheW91dC5faGFzR0wyRD9bXTpBLmxpc3RJZHMocixuKSxvPW4rInJlZiIsYT17fTtyZXR1cm4gYVtvXT17dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOmkuY29uY2F0KFsicGFwZXIiXSksZGZsdDppWzBdfHwicGFwZXIifSxfLkxpYi5jb2VyY2UodCxlLGEsbyl9LEEuY2xlYXJUeXBlcz1mdW5jdGlvbih0LGUpewpBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aHx8KGU9dC5fZnVsbERhdGEubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPXQuZGF0YVtlXTtkZWxldGUoQS5nZXRGcm9tSWQodCxyLnhheGlzKXx8e30pLnR5cGUsZGVsZXRlKEEuZ2V0RnJvbUlkKHQsci55YXhpcyl8fHt9KS50eXBlfSl9LEEuY291bnRlckxldHRlcj1mdW5jdGlvbih0KXt2YXIgZT10LmNoYXJBdCgwKTtyZXR1cm4ieCI9PT1lPyJ5IjoieSI9PT1lPyJ4Ijp2b2lkIDB9LEEubWluRHRpY2s9ZnVuY3Rpb24odCxlLHIsbil7LTE9PT1bImxvZyIsImNhdGVnb3J5Il0uaW5kZXhPZih0LnR5cGUpJiZuP251bGw9PT10Ll9taW5EdGljaz8odC5fbWluRHRpY2s9ZSx0Ll9mb3JjZVRpY2swPXIpOnQuX21pbkR0aWNrJiYoKHQuX21pbkR0aWNrL2UrMWUtNiklMTwyZS02JiYoKHItdC5fZm9yY2VUaWNrMCkvZSUxKzEuMDAwMDAxKSUxPDJlLTY/KHQuX21pbkR0aWNrPWUsdC5fZm9yY2VUaWNrMD1yKTooKGUvdC5fbWluRHRpY2srMWUtNiklMT4yZS02fHwoKHItdC5fZm9yY2VUaWNrMCkvdC5fbWluRHRpY2slMSsxLjAwMDAwMSklMT4yZS02KSYmKHQuX21pbkR0aWNrPTApKTp0Ll9taW5EdGljaz0wfSxBLmRvQXV0b1JhbmdlPWZ1bmN0aW9uKHQpe2lmKHQuX2xlbmd0aHx8dC5zZXRTY2FsZSgpLHQuYXV0b3JhbmdlJiZ0Ll9taW4mJnQuX21heCYmdC5fbWluLmxlbmd0aCYmdC5fbWF4Lmxlbmd0aCl7dmFyIGUscj10Ll9taW5bMF0udmFsLG49dC5fbWF4WzBdLnZhbDtmb3IoZT0xO2U8dC5fbWluLmxlbmd0aCYmcj09PW47ZSsrKXI9TWF0aC5taW4ocix0Ll9taW5bZV0udmFsKTtmb3IoZT0xO2U8dC5fbWF4Lmxlbmd0aCYmcj09PW47ZSsrKW49TWF0aC5tYXgobix0Ll9tYXhbZV0udmFsKTt2YXIgaSxvLGEscyxsLGMsdSxoPTAsZj10LnJhbmdlJiZ0LnJhbmdlWzFdPHQucmFuZ2VbMF07Zm9yKCJyZXZlcnNlZCI9PT10LmF1dG9yYW5nZSYmKGY9ITAsdC5hdXRvcmFuZ2U9ITApLGU9MDtlPHQuX21pbi5sZW5ndGg7ZSsrKWZvcihvPXQuX21pbltlXSxpPTA7aTx0Ll9tYXgubGVuZ3RoO2krKylhPXQuX21heFtpXSx1PWEudmFsLW8udmFsLGM9dC5fbGVuZ3RoLW8ucGFkLWEucGFkLHU+MCYmYz4wJiZ1L2M+aCYmKHM9byxsPWEsaD11L2MpO3I9PT1uP3QucmFuZ2U9Zj9bcisxLCJub3JtYWwiIT09dC5yYW5nZW1vZGU/MDpyLTFdOlsibm9ybWFsIiE9PXQucmFuZ2Vtb2RlPzA6ci0xLHIrMV06aCYmKCJsaW5lYXIiIT09dC50eXBlJiYiLSIhPT10LnR5cGV8fCgidG96ZXJvIj09PXQucmFuZ2Vtb2RlJiZzLnZhbD49MD9zPXt2YWw6MCxwYWQ6MH06Im5vbm5lZ2F0aXZlIj09PXQucmFuZ2Vtb2RlJiYocy52YWwtaCpzLnBhZDwwJiYocz17dmFsOjAscGFkOjB9KSxsLnZhbDwwJiYobD17dmFsOjEscGFkOjB9KSksaD0obC52YWwtcy52YWwpLyh0Ll9sZW5ndGgtcy5wYWQtbC5wYWQpKSx0LnJhbmdlPVtzLnZhbC1oKnMucGFkLGwudmFsK2gqbC5wYWRdLHQucmFuZ2VbMF09PT10LnJhbmdlWzFdJiYodC5yYW5nZT1bdC5yYW5nZVswXS0xLHQucmFuZ2VbMF0rMV0pLGYmJnQucmFuZ2UucmV2ZXJzZSgpKTt2YXIgZD10Ll90ZC5sYXlvdXRbdC5fbmFtZV07ZHx8KHQuX3RkLmxheW91dFt0Ll9uYW1lXT1kPXt9KSxkIT09dCYmKGQucmFuZ2U9dC5yYW5nZS5zbGljZSgpLGQuYXV0b3JhbmdlPXQuYXV0b3JhbmdlKX19LEEuc2F2ZVJhbmdlSW5pdGlhbD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1BLmxpc3QodCwiIiwhMCksbj0hMSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV0sYT12b2lkIDA9PT1vLl9yYW5nZUluaXRpYWwscz1hfHwhKG8ucmFuZ2VbMF09PT1vLl9yYW5nZUluaXRpYWxbMF0mJm8ucmFuZ2VbMV09PT1vLl9yYW5nZUluaXRpYWxbMV0pOyhhJiZvLmF1dG9yYW5nZT09PSExfHxlJiZzKSYmKG8uX3JhbmdlSW5pdGlhbD1vLnJhbmdlLnNsaWNlKCksbj0hMCl9cmV0dXJuIG59O3ZhciBNPU51bWJlci5NQVhfVkFMVUUvMjtBLmV4cGFuZD1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoTnVtYmVyKHRbZV18fDApLDApfTt2YXIgZT1NYXRoLm1heChOdW1iZXIodHx8MCksMCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWZ1bmN0aW9uIGkocil7ZnVuY3Rpb24gbih0KXtyZXR1cm4geCh0KSYmTWF0aC5hYnModCk8TX1pZihsPWVbcl0seChsKSl7aWYoaD1iKHIpK20sZj1fKHIpK20scD1sLUEociksZz1sK3cociksImxvZyI9PT10LnR5cGUmJmcvMTA+cCYmKHA9Zy8xMCksYz10LmMybChwKSx1PXQuYzJsKGcpLHkmJihjPU1hdGgubWluKDAsYyksdT1NYXRoLm1heCgwLHUpKSxuKGMpKXtmb3IoZD0hMCxhPTA7YTx0Ll9taW4ubGVuZ3RoJiZkO2ErKylzPXQuX21pblthXSxzLnZhbDw9YyYmcy5wYWQ+PWY/ZD0hMTpzLnZhbD49YyYmcy5wYWQ8PWYmJih0Ll9taW4uc3BsaWNlKGEsMSksYS0tKTtkJiZ0Ll9taW4ucHVzaCh7dmFsOmMscGFkOnkmJjA9PT1jPzA6Zn0pfWlmKG4odSkpe2ZvcihkPSEwLGE9MDthPHQuX21heC5sZW5ndGgmJmQ7YSsrKXM9dC5fbWF4W2FdLHMudmFsPj11JiZzLnBhZD49aD9kPSExOnMudmFsPD11JiZzLnBhZDw9aCYmKHQuX21heC5zcGxpY2UoYSwxKSxhLS0pO2QmJnQuX21heC5wdXNoKHt2YWw6dSxwYWQ6eSYmMD09PXU/MDpofSl9fX1pZih0LmF1dG9yYW5nZSYmZSl7dC5fbWlufHwodC5fbWluPVtdKSx0Ll9tYXh8fCh0Ll9tYXg9W10pLHJ8fChyPXt9KSx0Ll9tfHx0LnNldFNjYWxlKCk7dmFyIG8sYSxzLGwsYyx1LGgsZixkLHAsZyx2PWUubGVuZ3RoLG09ci5wYWRkZWQ/LjA1KnQuX2xlbmd0aDowLHk9ci50b3plcm8mJigibGluZWFyIj09PXQudHlwZXx8Ii0iPT09dC50eXBlKSxiPW4oKHQuX20+MD9yLnBwYWRwbHVzOnIucHBhZG1pbnVzKXx8ci5wcGFkfHwwKSxfPW4oKHQuX20+MD9yLnBwYWRtaW51czpyLnBwYWRwbHVzKXx8ci5wcGFkfHwwKSx3PW4oci52cGFkcGx1c3x8ci52cGFkKSxBPW4oci52cGFkbWludXN8fHIudnBhZCk7Zm9yKG89MDs2Pm87bysrKWkobyk7Zm9yKG89di0xO28+NTtvLS0paShvKX19LEEuYXV0b0Jpbj1mdW5jdGlvbih0LGUscixuKXtmdW5jdGlvbiBpKHQpe3JldHVybigxKzEwMCoodC1kKS9oLmR0aWNrKSUxMDA8Mn12YXIgbz1fLkxpYi5hZ2dOdW1zKE1hdGgubWluLG51bGwsdCksYT1fLkxpYi5hZ2dOdW1zKE1hdGgubWF4LG51bGwsdCk7aWYoImNhdGVnb3J5Ij09PWUudHlwZSlyZXR1cm57c3RhcnQ6by0uNSxlbmQ6YSsuNSxzaXplOjF9O3ZhciBzO2lmKHIpcz0oYS1vKS9yO2Vsc2V7dmFyIGw9Xy5MaWIuZGlzdGluY3RWYWxzKHQpLGM9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhsLm1pbkRpZmYpL01hdGguTE4xMCkpLHU9YypfLkxpYi5yb3VuZFVwKGwubWluRGlmZi9jLFsuOSwxLjksNC45LDkuOV0sITApO3M9TWF0aC5tYXgodSwyKl8uTGliLnN0ZGV2KHQpL01hdGgucG93KHQubGVuZ3RoLG4/LjI1Oi40KSl9dmFyIGg9e3R5cGU6ImxvZyI9PT1lLnR5cGU/ImxpbmVhciI6ZS50eXBlLHJhbmdlOltvLGFdfTtBLmF1dG9UaWNrcyhoLHMpO3ZhciBmLGQ9QS50aWNrSW5jcmVtZW50KEEudGlja0ZpcnN0KGgpLGguZHRpY2ssInJldmVyc2UiKTtpZigibnVtYmVyIj09dHlwZW9mIGguZHRpY2spe2Zvcih2YXIgcD0wLGc9MCx2PTAsbT0wLHk9MDt5PHQubGVuZ3RoO3krKyl0W3ldJTE9PT0wP3YrKzp4KHRbeV0pfHxtKyssaSh0W3ldKSYmcCsrLGkodFt5XStoLmR0aWNrLzIpJiZnKys7dmFyIGI9dC5sZW5ndGgtbTtpZih2PT09YiYmImRhdGUiIT09ZS50eXBlKWguZHRpY2s8MT9kPW8tLjUqaC5kdGljazpkLT0uNTtlbHNlIGlmKC4xKmI+ZyYmKHA+LjMqYnx8aShvKXx8aShhKSkpe3ZhciB3PWguZHRpY2svMjtkKz1vPmQrdz93Oi13fXZhciBrPTErTWF0aC5mbG9vcigoYS1kKS9oLmR0aWNrKTtmPWQraypoLmR0aWNrfWVsc2UgZm9yKGY9ZDthPj1mOylmPUEudGlja0luY3JlbWVudChmLGguZHRpY2spO3JldHVybntzdGFydDpkLGVuZDpmLHNpemU6aC5kdGlja319LEEuY2FsY1RpY2tzPWZ1bmN0aW9uKHQpe2lmKCJhcnJheSI9PT10LnRpY2ttb2RlKXJldHVybiBuKHQpO2lmKCJhdXRvIj09PXQudGlja21vZGV8fCF0LmR0aWNrKXt2YXIgZSxyPXQubnRpY2tzO3J8fCgiY2F0ZWdvcnkiPT09dC50eXBlPyhlPXQudGlja2ZvbnQ/MS4yKih0LnRpY2tmb250LnNpemV8fDEyKToxNSxyPXQuX2xlbmd0aC9lKTooZT0ieSI9PT10Ll9pZC5jaGFyQXQoMCk/NDA6ODAscj1fLkxpYi5jb25zdHJhaW4odC5fbGVuZ3RoL2UsNCw5KSsxKSksQS5hdXRvVGlja3ModCxNYXRoLmFicyh0LnJhbmdlWzFdLXQucmFuZ2VbMF0pL3IpLHQuX21pbkR0aWNrPjAmJnQuZHRpY2s8Mip0Ll9taW5EdGljayYmKHQuZHRpY2s9dC5fbWluRHRpY2ssdC50aWNrMD10Ll9mb3JjZVRpY2swKX10LnRpY2swfHwodC50aWNrMD0iZGF0ZSI9PT10LnR5cGU/bmV3IERhdGUoMmUzLDAsMSkuZ2V0VGltZSgpOjApLG8odCksdC5fdG1pbj1BLnRpY2tGaXJzdCh0KTt2YXIgaT10LnJhbmdlWzFdPHQucmFuZ2VbMF0sYT1bXSxzPTEuMDAwMSp0LnJhbmdlWzFdLTFlLTQqdC5yYW5nZVswXTsiY2F0ZWdvcnkiPT09dC50eXBlJiYocz1pP01hdGgubWF4KC0uNSxzKTpNYXRoLm1pbih0Ll9jYXRlZ29yaWVzLmxlbmd0aC0uNSxzKSk7Zm9yKHZhciBsPXQuX3RtaW47KGk/bD49czpzPj1sKSYmKGEucHVzaChsKSwhKGEubGVuZ3RoPjFlMykpO2w9QS50aWNrSW5jcmVtZW50KGwsdC5kdGljayxpKSk7dC5fdG1heD1hW2EubGVuZ3RoLTFdO2Zvcih2YXIgYz1uZXcgQXJyYXkoYS5sZW5ndGgpLHU9MDt1PGEubGVuZ3RoO3UrKyljW3VdPUEudGlja1RleHQodCxhW3VdKTtyZXR1cm4gY307dmFyIFQ9WzIsNSwxMF0sRT1bMSwyLDMsNiwxMl0sTD1bMSwyLDUsMTAsMTUsMzBdLFM9WzEsMiwzLDcsMTRdLEM9Wy0uMDQ2LDAsLjMwMSwuNDc3LC42MDIsLjY5OSwuNzc4LC44NDUsLjkwMywuOTU0LDFdLFA9Wy0uMzAxLDAsLjMwMSwuNjk5LDFdO0EuYXV0b1RpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIHI7aWYoImRhdGUiPT09dC50eXBlKXQudGljazA9bmV3IERhdGUoMmUzLDAsMSkuZ2V0VGltZSgpLGU+MTU3Nzg4ZTU/KGUvPTMxNTU3NmU1LHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMTApKSx0LmR0aWNrPSJNIisxMippKGUscixUKSk6ZT4xMjA5NmU1PyhlLz0yNjI5OGU1LHQuZHRpY2s9Ik0iK2koZSwxLEUpKTplPjQzMmU1Pyh0LmR0aWNrPWkoZSw4NjRlNSxTKSx0LnRpY2swPW5ldyBEYXRlKDJlMywwLDIpLmdldFRpbWUoKSk6ZT4xOGU1P3QuZHRpY2s9aShlLDM2ZTUsRSk6ZT4zZTQ/dC5kdGljaz1pKGUsNmU0LEwpOmU+NTAwP3QuZHRpY2s9aShlLDFlMyxMKToocj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGguTE4xMCkpLHQuZHRpY2s9aShlLHIsVCkpO2Vsc2UgaWYoImxvZyI9PT10LnR5cGUpaWYodC50aWNrMD0wLGU+LjcpdC5kdGljaz1NYXRoLmNlaWwoZSk7ZWxzZSBpZihNYXRoLmFicyh0LnJhbmdlWzFdLXQucmFuZ2VbMF0pPDEpe3ZhciBuPTEuNSpNYXRoLmFicygodC5yYW5nZVsxXS10LnJhbmdlWzBdKS9lKTtlPU1hdGguYWJzKE1hdGgucG93KDEwLHQucmFuZ2VbMV0pLU1hdGgucG93KDEwLHQucmFuZ2VbMF0pKS9uLHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMTApKSx0LmR0aWNrPSJMIitpKGUscixUKX1lbHNlIHQuZHRpY2s9ZT4uMz8iRDIiOiJEMSI7ZWxzZSJjYXRlZ29yeSI9PT10LnR5cGU/KHQudGljazA9MCx0LmR0aWNrPU1hdGguY2VpbChNYXRoLm1heChlLDEpKSk6KHQudGljazA9MCxyPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjEwKSksdC5kdGljaz1pKGUscixUKSk7aWYoMD09PXQuZHRpY2smJih0LmR0aWNrPTEpLCF4KHQuZHRpY2spJiYic3RyaW5nIiE9dHlwZW9mIHQuZHRpY2spe3ZhciBvPXQuZHRpY2s7dGhyb3cgdC5kdGljaz0xLCJheC5kdGljayBlcnJvcjogIitTdHJpbmcobyl9fSxBLnRpY2tJbmNyZW1lbnQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXI/LTE6MTtpZih4KGUpKXJldHVybiB0K24qZTt2YXIgaT1lLmNoYXJBdCgwKSxvPW4qTnVtYmVyKGUuc3Vic3RyKDEpKTtpZigiTSI9PT1pKXt2YXIgYT1uZXcgRGF0ZSh0KTtyZXR1cm4gYS5zZXRNb250aChhLmdldE1vbnRoKCkrbyl9aWYoIkwiPT09aSlyZXR1cm4gTWF0aC5sb2coTWF0aC5wb3coMTAsdCkrbykvTWF0aC5MTjEwO2lmKCJEIj09PWkpe3ZhciBzPSJEMiI9PT1lP1A6QyxsPXQrLjAxKm4sYz1fLkxpYi5yb3VuZFVwKHkobCwxKSxzLHIpO3JldHVybiBNYXRoLmZsb29yKGwpK01hdGgubG9nKGIucm91bmQoTWF0aC5wb3coMTAsYyksMSkpL01hdGguTE4xMH10aHJvdyJ1bnJlY29nbml6ZWQgZHRpY2sgIitTdHJpbmcoZSl9LEEudGlja0ZpcnN0PWZ1bmN0aW9uKHQpe3ZhciBlPXQucmFuZ2VbMV08dC5yYW5nZVswXSxyPWU/TWF0aC5mbG9vcjpNYXRoLmNlaWwsbj0xLjAwMDEqdC5yYW5nZVswXS0xZS00KnQucmFuZ2VbMV0saT10LmR0aWNrLG89dC50aWNrMDtpZih4KGkpKXt2YXIgYT1yKChuLW8pL2kpKmkrbztyZXR1cm4iY2F0ZWdvcnkiPT09dC50eXBlJiYoYT1fLkxpYi5jb25zdHJhaW4oYSwwLHQuX2NhdGVnb3JpZXMubGVuZ3RoLTEpKSxhfXZhciBzLGwsYyx1PWkuY2hhckF0KDApLGg9TnVtYmVyKGkuc3Vic3RyKDEpKTtpZigiTSI9PT11KXtmb3Iocz1uZXcgRGF0ZShvKSxuPW5ldyBEYXRlKG4pLGw9MTIqKG4uZ2V0RnVsbFllYXIoKS1zLmdldEZ1bGxZZWFyKCkpK24uZ2V0TW9udGgoKS1zLmdldE1vbnRoKCksYz1zLnNldE1vbnRoKHMuZ2V0TW9udGgoKSsoTWF0aC5yb3VuZChsL2gpKyhlPzE6LTEpKSpoKTtlP2M+bjpuPmM7KWM9QS50aWNrSW5jcmVtZW50KGMsaSxlKTtyZXR1cm4gY31pZigiTCI9PT11KXJldHVybiBNYXRoLmxvZyhyKChNYXRoLnBvdygxMCxuKS1vKS9oKSpoK28pL01hdGguTE4xMDtpZigiRCI9PT11KXt2YXIgZj0iRDIiPT09aT9QOkMsZD1fLkxpYi5yb3VuZFVwKHkobiwxKSxmLGUpO3JldHVybiBNYXRoLmZsb29yKG4pK01hdGgubG9nKGIucm91bmQoTWF0aC5wb3coMTAsZCksMSkpL01hdGguTE4xMH10aHJvdyJ1bnJlY29nbml6ZWQgZHRpY2sgIitTdHJpbmcoaSl9O3ZhciB6PWIudGltZS5mb3JtYXQoIiVZIiksUj1iLnRpbWUuZm9ybWF0KCIlYiAlWSIpLE89Yi50aW1lLmZvcm1hdCgiJWIgJS1kIiksST1iLnRpbWUuZm9ybWF0KCIlYiAlLWQgJUhoIiksTj1iLnRpbWUuZm9ybWF0KCIlSDolTSIpLGo9Yi50aW1lLmZvcm1hdCgiOiVTIiksRj0vJShcZD8pZi9nO0EudGlja1RleHQ9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4obil7dmFyIGk7cmV0dXJuIHZvaWQgMD09PW4/ITA6cj8ibm9uZSI9PT1uOihpPXtmaXJzdDp0Ll90bWluLGxhc3Q6dC5fdG1heH1bbl0sImFsbCIhPT1uJiZlIT09aSl9dmFyIGksbyxhPXModCxlKSxmPSJhcnJheSI9PT10LnRpY2ttb2RlLGQ9cnx8ZjtpZihmJiZBcnJheS5pc0FycmF5KHQudGlja3RleHQpKXt2YXIgcD1NYXRoLmFicyh0LnJhbmdlWzFdLXQucmFuZ2VbMF0pLzFlNDtmb3Iobz0wO288dC50aWNrdGV4dC5sZW5ndGgmJiEoTWF0aC5hYnMoZS10LmQybCh0LnRpY2t2YWxzW29dKSk8cCk7bysrKTtpZihvPHQudGlja3RleHQubGVuZ3RoKXJldHVybiBhLnRleHQ9U3RyaW5nKHQudGlja3RleHRbb10pLGF9cmV0dXJuIGk9Im5vbmUiIT09dC5leHBvbmVudGZvcm1hdCYmbih0LnNob3dleHBvbmVudCk/ImhpZGUiOiIiLCJkYXRlIj09PXQudHlwZT9sKHQsYSxyLGQpOiJsb2ciPT09dC50eXBlP2ModCxhLHIsZCxpKToiY2F0ZWdvcnkiPT09dC50eXBlP3UodCxhKTpoKHQsYSxyLGQsaSksdC50aWNrcHJlZml4JiYhbih0LnNob3d0aWNrcHJlZml4KSYmKGEudGV4dD10LnRpY2twcmVmaXgrYS50ZXh0KSx0LnRpY2tzdWZmaXgmJiFuKHQuc2hvd3RpY2tzdWZmaXgpJiYoYS50ZXh0Kz10LnRpY2tzdWZmaXgpLGF9O3ZhciBEPVsiZiIsInAiLCJuIiwiJm11OyIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIl0sQj0vKFxkKykoXGR7M30pLztBLnN1YnBsb3RNYXRjaD0vXngoWzAtOV0qKXkoWzAtOV0qKSQvLEEuZ2V0U3VicGxvdHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQsZSl7cmV0dXJuLTEhPT10LmluZGV4T2YoZS5faWQpfXZhciBuLGksbyxhPVtdLHM9dC5kYXRhfHxbXTtmb3Iobj0wO248cy5sZW5ndGg7bisrKXt2YXIgbD1zW25dO2lmKGwudmlzaWJsZSE9PSExJiYibGVnZW5kb25seSIhPT1sLnZpc2libGUmJihfLlBsb3RzLnRyYWNlSXMobCwiY2FydGVzaWFuIil8fF8uUGxvdHMudHJhY2VJcyhsLCJnbDJkIikpKXt2YXIgYz1sLnhheGlzfHwieCIsdT1sLnlheGlzfHwieSI7bz1jK3UsLTE9PT1hLmluZGV4T2YobykmJmEucHVzaChvKX19dmFyIGg9QS5saXN0KHQsIiIsITApO2ZvcihuPTA7bjxoLmxlbmd0aDtuKyspe3ZhciBmPWhbbl0sZD1mLl9pZC5jaGFyQXQoMCkscD0iZnJlZSI9PT1mLmFuY2hvcj8ieCI9PT1kPyJ5IjoieCI6Zi5hbmNob3IsZz1BLmdldEZyb21JZCh0LHApLHY9ITE7Zm9yKGk9MDtpPGEubGVuZ3RoO2krKylpZihyKGFbaV0sZikpe3Y9ITA7YnJlYWt9ImZyZWUiPT09Zi5hbmNob3ImJnZ8fGcmJihvPSJ4Ij09PWQ/Zi5faWQrZy5faWQ6Zy5faWQrZi5faWQsLTE9PT1hLmluZGV4T2YobykmJmEucHVzaChvKSl9dmFyIG09QS5zdWJwbG90TWF0Y2gseT1bXTtmb3Iobj0wO248YS5sZW5ndGg7bisrKW89YVtuXSxtLnRlc3QobykmJnkucHVzaChvKTtyZXR1cm4geS5zb3J0KGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5tYXRjaChtKSxuPWUubWF0Y2gobSk7cmV0dXJuIHJbMV09PT1uWzFdPysoclsyXXx8MSktKG5bMl18fDEpOisoclsxXXx8MCktKG5bMV18fDApfSksZT9BLmZpbmRTdWJwbG90c1dpdGhBeGlzKHksZSk6eX0sQS5maW5kU3VicGxvdHNXaXRoQXhpcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgUmVnRXhwKCJ4Ij09PWUuX2lkLmNoYXJBdCgwKT8iXiIrZS5faWQrInkiOmUuX2lkKyIkIiksbj1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07ci50ZXN0KG8pJiZuLnB1c2gobyl9cmV0dXJuIG59LEEubWFrZUNsaXBQYXRocz1mdW5jdGlvbih0KXt2YXIgZSxyLG49dC5fZnVsbExheW91dCxpPW4uX2RlZnMsbz17X29mZnNldDowLF9sZW5ndGg6bi53aWR0aCxfaWQ6IiJ9LGE9e19vZmZzZXQ6MCxfbGVuZ3RoOm4uaGVpZ2h0LF9pZDoiIn0scz1BLmxpc3QodCwieCIsITApLGw9QS5saXN0KHQsInkiLCEwKSxjPVtdO2ZvcihlPTA7ZTxzLmxlbmd0aDtlKyspZm9yKGMucHVzaCh7eDpzW2VdLHk6YX0pLHI9MDtyPGwubGVuZ3RoO3IrKykwPT09ZSYmYy5wdXNoKHt4Om8seTpsW3JdfSksYy5wdXNoKHt4OnNbZV0seTpsW3JdfSk7dmFyIHU9aS5zZWxlY3RBbGwoImcuY2xpcHMiKS5kYXRhKFswXSk7dS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNsaXBzIiwhMCk7dmFyIGg9dS5zZWxlY3RBbGwoIi5heGVzY2xpcCIpLmRhdGEoYyxmdW5jdGlvbih0KXtyZXR1cm4gdC54Ll9pZCt0LnkuX2lkfSk7aC5lbnRlcigpLmFwcGVuZCgiY2xpcFBhdGgiKS5jbGFzc2VkKCJheGVzY2xpcCIsITApLmF0dHIoImlkIixmdW5jdGlvbih0KXtyZXR1cm4iY2xpcCIrbi5fdWlkK3QueC5faWQrdC55Ll9pZH0pLmFwcGVuZCgicmVjdCIpLGguZXhpdCgpLnJlbW92ZSgpLGguZWFjaChmdW5jdGlvbih0KXtiLnNlbGVjdCh0aGlzKS5zZWxlY3QoInJlY3QiKS5hdHRyKHt4OnQueC5fb2Zmc2V0fHwwLHk6dC55Ll9vZmZzZXR8fDAsd2lkdGg6dC54Ll9sZW5ndGh8fDEsaGVpZ2h0OnQueS5fbGVuZ3RofHwxfSl9KX0sQS5kb1RpY2tzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe3ZhciBlPWwubDJwKHQueCk7cmV0dXJuIGU+MSYmZTxsLl9sZW5ndGgtMX1mdW5jdGlvbiBpKHQsZSl7dmFyIHI9dC5zZWxlY3RBbGwoInBhdGguIitNKS5kYXRhKCJpbnNpZGUiPT09bC50aWNrcz9JOnksayk7ZSYmbC50aWNrcz8oci5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoTSwxKS5jbGFzc2VkKCJ0aWNrcyIsMSkuY2xhc3NlZCgiY3Jpc3AiLDEpLmNhbGwoXy5Db2xvci5zdHJva2UsbC50aWNrY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLHorInB4IikuYXR0cigiZCIsZSksci5hdHRyKCJ0cmFuc2Zvcm0iLGYpLHIuZXhpdCgpLnJlbW92ZSgpKTpyLnJlbW92ZSgpfWZ1bmN0aW9uIG8obixpKXtmdW5jdGlvbiBvKHQsZSl7dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPXAoZSksbj1iLnNlbGVjdCh0aGlzKSxpPW4uc2VsZWN0KCIudGV4dC1tYXRoLWdyb3VwIiksbz1mKHQpKyh4KGUpJiYwIT09K2U/IiByb3RhdGUoIitlKyIsIitoKHQpKyIsIisoZCh0KS10LmZvbnRTaXplLzIpKyIpIjoiIik7aWYoaS5lbXB0eSgpKXt2YXIgYT1uLnNlbGVjdCgidGV4dCIpLmF0dHIoe3RyYW5zZm9ybTpvLCJ0ZXh0LWFuY2hvciI6cn0pO2EuZW1wdHkoKXx8YS5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5hdHRyKHt4OmEuYXR0cigieCIpLHk6YS5hdHRyKCJ5Iil9KX1lbHNle3ZhciBzPV8uRHJhd2luZy5iQm94KGkubm9kZSgpKS53aWR0aCp7ZW5kOi0uNSxzdGFydDouNX1bcl07aS5hdHRyKCJ0cmFuc2Zvcm0iLG8rKHM/InRyYW5zbGF0ZSgiK3MrIiwwKSI6IiIpKX19KX1mdW5jdGlvbiBhKCl7cmV0dXJuIEMubGVuZ3RoJiZQcm9taXNlLmFsbChDKX1mdW5jdGlvbiBzKCl7aWYobyh1LGwudGlja2FuZ2xlKSwieCI9PT12JiYheChsLnRpY2thbmdsZSkmJigibG9nIiE9PWwudHlwZXx8IkQiIT09U3RyaW5nKGwuZHRpY2spLmNoYXJBdCgwKSkpe3ZhciBuPVtdO2Zvcih1LmVhY2goZnVuY3Rpb24odCl7dmFyIGU9Yi5zZWxlY3QodGhpcykscj1lLnNlbGVjdCgiLnRleHQtbWF0aC1ncm91cCIpLGk9bC5sMnAodC54KTtyLmVtcHR5KCkmJihyPWUuc2VsZWN0KCJ0ZXh0IikpO3ZhciBvPV8uRHJhd2luZy5iQm94KHIubm9kZSgpKTtuLnB1c2goe3RvcDowLGJvdHRvbToxMCxoZWlnaHQ6MTAsbGVmdDppLW8ud2lkdGgvMixyaWdodDppK28ud2lkdGgvMisyLHdpZHRoOm8ud2lkdGgrMn0pfSksZz0wO2c8bi5sZW5ndGgtMTtnKyspaWYoXy5MaWIuYkJveEludGVyc2VjdChuW2ddLG5bZysxXSkpe0U9MzA7YnJlYWt9aWYoRSl7dmFyIGk9TWF0aC5hYnMoKHlbeS5sZW5ndGgtMV0ueC15WzBdLngpKmwuX20pLyh5Lmxlbmd0aC0xKTsyLjUqVD5pJiYoRT05MCksbyh1LEUpfWwuX2xhc3RhbmdsZT1FfXJldHVybiByfHx3LmRyYXcodCxlKyJ0aXRsZSIpLGUrIiBkb25lIn1mdW5jdGlvbiBjKCl7bC5fYm91bmRpbmdCb3g9bi5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9dmFyIHU9bi5zZWxlY3RBbGwoImcuIitNKS5kYXRhKHksayk7aWYoIWwuc2hvd3RpY2tsYWJlbHN8fCF4KGkpKXJldHVybiB1LnJlbW92ZSgpLHZvaWQgdy5kcmF3KHQsZSsidGl0bGUiKTt2YXIgaCxkLHAsbTtpZigieCI9PT12KXt2YXIgQT0iYm90dG9tIj09PVI/MTotMTtoPWZ1bmN0aW9uKHQpe3JldHVybiB0LmR4fSxtPWkrKFMrTCkqQSxkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmR5K20rdC5mb250U2l6ZSooImJvdHRvbSI9PT1SPzE6LS41KX0scD1mdW5jdGlvbih0KXtyZXR1cm4geCh0KSYmMCE9PXQmJjE4MCE9PXQ/MD50KkE/ImVuZCI6InN0YXJ0IjoibWlkZGxlIn19ZWxzZSBkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmR5K3QuZm9udFNpemUvMn0saD1mdW5jdGlvbih0KXtyZXR1cm4gdC5keCtpKyhTK0wrKDkwPT09TWF0aC5hYnMobC50aWNrYW5nbGUpP3QuZm9udFNpemUvMjowKSkqKCJyaWdodCI9PT1SPzE6LTEpfSxwPWZ1bmN0aW9uKHQpe3JldHVybiB4KHQpJiY5MD09PU1hdGguYWJzKHQpPyJtaWRkbGUiOiJyaWdodCI9PT1SPyJzdGFydCI6ImVuZCJ9O3ZhciBUPTAsRT0wLEM9W107dS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoTSwxKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9Yi5zZWxlY3QodGhpcyksbj10Ll9wcm9taXNlcy5sZW5ndGg7ci5jYWxsKF8uRHJhd2luZy5zZXRQb3NpdGlvbixoKGUpLGQoZSkpLmNhbGwoXy5EcmF3aW5nLmZvbnQsZS5mb250LGUuZm9udFNpemUsZS5mb250Q29sb3IpLnRleHQoZS50ZXh0KS5jYWxsKF8udXRpbC5jb252ZXJ0VG9Uc3BhbnMpLG49dC5fcHJvbWlzZXNbbl0sbj9DLnB1c2godC5fcHJvbWlzZXMucG9wKCkudGhlbihmdW5jdGlvbigpe28ocixsLnRpY2thbmdsZSl9KSk6byhyLGwudGlja2FuZ2xlKX0pLHUuZXhpdCgpLnJlbW92ZSgpLHUuZWFjaChmdW5jdGlvbih0KXtUPU1hdGgubWF4KFQsdC5mb250U2l6ZSl9KSxvKHUsbC5fbGFzdGFuZ2xlfHxsLnRpY2thbmdsZSk7dmFyIFA9Xy5MaWIuc3luY09yQXN5bmMoW2EscyxjXSk7cmV0dXJuIFAmJlAudGhlbiYmdC5fcHJvbWlzZXMucHVzaChQKSxQfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdC52aXNpYmxlIT09ITB8fHQueGF4aXMrdC55YXhpcyE9PWU/ITE6Xy5QbG90cy50cmFjZUlzKHQsImJhciIpJiZ0Lm9yaWVudGF0aW9uPT09e3g6ImgiLHk6InYifVt2XT8hMDp0LmZpbGwmJnQuZmlsbC5jaGFyQXQodC5maWxsLmxlbmd0aC0xKT09PXZ9ZnVuY3Rpb24gcyhlLHIsaSl7dmFyIG89ZS5ncmlkbGF5ZXIscz1lLnplcm9saW5lbGF5ZXIsYz1lWyJoaWRlZ3JpZCIrdl0/W106SSx1PSJNMCwwIisoIngiPT09dj8idiI6ImgiKStyLl9sZW5ndGgsaD1vLnNlbGVjdEFsbCgicGF0aC4iK1QpLmRhdGEobC5zaG93Z3JpZD09PSExP1tdOmMsayk7aC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoVCwxKS5jbGFzc2VkKCJjcmlzcCIsMSkuYXR0cigiZCIsdSkuZWFjaChmdW5jdGlvbih0KXtsLnplcm9saW5lJiYoImxpbmVhciI9PT1sLnR5cGV8fCItIj09PWwudHlwZSkmJk1hdGguYWJzKHQueCk8bC5kdGljay8xMDAmJmIuc2VsZWN0KHRoaXMpLnJlbW92ZSgpfSksaC5hdHRyKCJ0cmFuc2Zvcm0iLGYpLmNhbGwoXy5Db2xvci5zdHJva2UsbC5ncmlkY29sb3J8fCIjZGRkIikuc3R5bGUoInN0cm9rZS13aWR0aCIsQysicHgiKSxoLmV4aXQoKS5yZW1vdmUoKTtmb3IodmFyIGQ9ITEscD0wO3A8dC5fZnVsbERhdGEubGVuZ3RoO3ArKylpZihhKHQuX2Z1bGxEYXRhW3BdLGkpKXtkPSEwO2JyZWFrfXZhciBnPWwucmFuZ2VbMF0qbC5yYW5nZVsxXTw9MCYmbC56ZXJvbGluZSYmKCJsaW5lYXIiPT09bC50eXBlfHwiLSI9PT1sLnR5cGUpJiZjLmxlbmd0aCYmKGR8fG4oe3g6MH0pfHwhbC5zaG93bGluZSksbT1zLnNlbGVjdEFsbCgicGF0aC4iK0UpLmRhdGEoZz9be3g6MH1dOltdKTttLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZChFLDEpLmNsYXNzZWQoInpsIiwxKS5jbGFzc2VkKCJjcmlzcCIsMSkuYXR0cigiZCIsdSksbS5hdHRyKCJ0cmFuc2Zvcm0iLGYpLmNhbGwoXy5Db2xvci5zdHJva2UsbC56ZXJvbGluZWNvbG9yfHxfLkNvbG9yLmRlZmF1bHRMaW5lKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixQKyJweCIpLG0uZXhpdCgpLnJlbW92ZSgpfXZhciBsLGM9dC5fZnVsbExheW91dCx1PSExO2lmKCJvYmplY3QiPT10eXBlb2YgZSlsPWUsZT1sLl9pZCx1PSEwO2Vsc2UgaWYobD1BLmdldEZyb21JZCh0LGUpLCJyZWRyYXciPT09ZSYmYy5fcGFwZXIuc2VsZWN0QWxsKCJnLnN1YnBsb3QiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWMuX3Bsb3RzW3RdLHI9ZS54KCksbj1lLnkoKTtlLnBsb3QuYXR0cigidmlld0JveCIsIjAgMCAiK3IuX2xlbmd0aCsiICIrbi5fbGVuZ3RoKSxlLnhheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIityLl9pZCsidGljayIpLnJlbW92ZSgpLGUueWF4aXNsYXllci5zZWxlY3RBbGwoIi4iK24uX2lkKyJ0aWNrIikucmVtb3ZlKCksZS5ncmlkbGF5ZXIuc2VsZWN0QWxsKCJwYXRoIikucmVtb3ZlKCksZS56ZXJvbGluZWxheWVyLnNlbGVjdEFsbCgicGF0aCIpLnJlbW92ZSgpfSksIWV8fCJyZWRyYXciPT09ZSlyZXR1cm4gXy5MaWIuc3luY09yQXN5bmMoQS5saXN0KHQsIiIsITApLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihyLl9pZCl7dmFyIG49QS5kb1RpY2tzKHQsci5faWQpO3JldHVybiJyZWRyYXciPT09ZSYmKHIuX3I9ci5yYW5nZS5zbGljZSgpKSxufX19KSk7bC50aWNrZm9ybWF0fHwoLTE9PT1bIm5vbmUiLCJlIiwiRSIsInBvd2VyIiwiU0kiLCJCIl0uaW5kZXhPZihsLmV4cG9uZW50Zm9ybWF0KSYmKGwuZXhwb25lbnRmb3JtYXQ9ImUiKSwtMT09PVsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwibm9uZSJdLmluZGV4T2YobC5zaG93ZXhwb25lbnQpJiYobC5zaG93ZXhwb25lbnQ9ImFsbCIpKSxsLnJhbmdlPVsrbC5yYW5nZVswXSwrbC5yYW5nZVsxXV0sbC5zZXRTY2FsZSgpO3ZhciBoLGYsZCxwLGcsdj1lLmNoYXJBdCgwKSxtPUEuY291bnRlckxldHRlcihlKSx5PUEuY2FsY1RpY2tzKGwpLGs9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGV4dCt0LngrbC5taXJyb3J9LE09ZSsidGljayIsVD1lKyJncmlkIixFPWUrInpsIixMPShsLmxpbmV3aWR0aHx8MSkvMixTPSgib3V0c2lkZSI9PT1sLnRpY2tzP2wudGlja2xlbjoxKSsobC5saW5ld2lkdGh8fDApLEM9Xy5EcmF3aW5nLmNyaXNwUm91bmQodCxsLmdyaWR3aWR0aCwxKSxQPV8uRHJhd2luZy5jcmlzcFJvdW5kKHQsbC56ZXJvbGluZXdpZHRoLEMpLHo9Xy5EcmF3aW5nLmNyaXNwUm91bmQodCxsLnRpY2t3aWR0aCwxKTtpZigieCI9PT12KWg9WyJib3R0b20iLCJ0b3AiXSxmPWZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIitsLmwycCh0LngpKyIsMCkifSxkPSJNMCwiLHA9InYiO2Vsc2V7aWYoInkiIT09dilyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygidW5yZWNvZ25pemVkIGRvVGlja3MgYXhpcyIsZSk7aD1bImxlZnQiLCJyaWdodCJdLGY9ZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrbC5sMnAodC54KSsiKSJ9LGQ9Ik0iLHA9IiwwaCJ9dmFyIFI9bC5zaWRlfHxoWzBdLE89Wy0xLDEsUj09PWhbMV0/MTotMV07Imluc2lkZSIhPT1sLnRpY2tzPT0oIngiPT09dikmJihPPU8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpO3ZhciBJPXkuZmlsdGVyKG4pO2lmKHUpcmV0dXJuIGkobC5fYXhpc2xheWVyLGQrKGwuX3BvcytMKk9bMl0pK3ArT1syXSpsLnRpY2tsZW4pLG8obC5fYXhpc2xheWVyLGwuX3Bvcyk7dmFyIE49QS5nZXRTdWJwbG90cyh0LGwpLm1hcChmdW5jdGlvbih0KXt2YXIgZT1jLl9wbG90c1t0XTtpZihjLl9oYXNDYXJ0ZXNpYW4pe3ZhciByPWVbdisiYXhpc2xheWVyIl0sbj1sLl9saW5lcG9zaXRpb25zW3RdfHxbXSxhPWVbbV0oKSx1PWEuX2lkPT09bC5hbmNob3IsZj1bITEsITEsITFdLHk9IiI7aWYoImFsbHRpY2tzIj09PWwubWlycm9yP2Y9WyEwLCEwLCExXTp1JiYoInRpY2tzIj09PWwubWlycm9yP2Y9WyEwLCEwLCExXTpmW2guaW5kZXhPZihSKV09ITApLGwubWlycm9ycylmb3IoZz0wOzI+ZztnKyspe3ZhciBiPWwubWlycm9yc1thLl9pZCtoW2ddXTsidGlja3MiIT09YiYmImxhYmVscyIhPT1ifHwoZltnXT0hMCl9cmV0dXJuIHZvaWQgMCE9PW5bMl0mJihmWzJdPSEwKSxmLmZvckVhY2goZnVuY3Rpb24odCxlKXt2YXIgcj1uW2VdLGk9T1tlXTt0JiZ4KHIpJiYoeSs9ZCsocitMKmkpK3AraSpsLnRpY2tsZW4pfSksaShyLHkpLHMoZSxhLHQpLG8ocixuWzNdKX19KS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQudGhlbn0pO3JldHVybiBOLmxlbmd0aD9Qcm9taXNlLmFsbChOKTowfSxBLnN3YXA9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9cCh0LGUpLG49MDtuPHIubGVuZ3RoO24rKyl2KHQscltuXS54LHJbbl0ueSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvdGl0bGVzIjozNTYsIi4uLy4uL3Bsb3RseSI6MzkwLCIuL2F4aXNfaWRzIjozOTUsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQwMCwiLi9sYXlvdXRfZGVmYXVsdHMiOjQwMSwiLi9zZXRfY29udmVydCI6NDA0LGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSwzOTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2lmKCItIj09PXQudHlwZSl7dmFyIHI9dC5faWQsbj1yLmNoYXJBdCgwKTstMSE9PXIuaW5kZXhPZigic2NlbmUiKSYmKHI9bik7dmFyIGw9cyhlLHIsbik7aWYobCl7aWYoImhpc3RvZ3JhbSI9PT1sLnR5cGUmJm49PT17djoieSIsaDoieCJ9W2wub3JpZW50YXRpb258fCJ2Il0pcmV0dXJuIHZvaWQodC50eXBlPSJsaW5lYXIiKTtpZihvKGwsbikpe2Zvcih2YXIgYyx1PWkobCksaD1bXSxmPTA7ZjxlLmxlbmd0aDtmKyspYz1lW2ZdLGQudHJhY2VJcyhjLCJib3giKSYmKGNbbisiYXhpcyJdfHxuKT09PXImJih2b2lkIDAhPT1jW3VdP2gucHVzaChjW3VdWzBdKTp2b2lkIDAhPT1jLm5hbWU/aC5wdXNoKGMubmFtZSk6aC5wdXNoKCJ0ZXh0IikpO3QudHlwZT1hKGgpfWVsc2UgdC50eXBlPWEobFtuXXx8W2xbbisiMCJdXSl9fX1mdW5jdGlvbiBpKHQpe3JldHVybnt2OiJ4IixoOiJ5In1bdC5vcmllbnRhdGlvbnx8InYiXX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9aSh0KTtyZXR1cm4gZC50cmFjZUlzKHQsImJveCIpJiZlPT09ciYmdm9pZCAwPT09dFtyXSYmdm9pZCAwPT09dFtyKyIwIl19ZnVuY3Rpb24gYSh0KXtyZXR1cm4gYyh0KT8iZGF0ZSI6dSh0KT8iY2F0ZWdvcnkiOmwodCk/ImxpbmVhciI6Ii0ifWZ1bmN0aW9uIHModCxlLHIpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2lmKChpW3IrImF4aXMiXXx8cik9PT1lKXtpZihvKGkscikpcmV0dXJuIGk7aWYoKGlbcl18fFtdKS5sZW5ndGh8fGlbcisiMCJdKXJldHVybiBpfX19ZnVuY3Rpb24gbCh0KXtpZighdClyZXR1cm4hMTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZihoKHRbZV0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGModCl7Zm9yKHZhciBlLHI9MCxuPTAsaT1NYXRoLm1heCgxLCh0Lmxlbmd0aC0xKS8xZTMpLG89MDtvPHQubGVuZ3RoO28rPWkpZT10W01hdGgucm91bmQobyldLGYuaXNEYXRlVGltZShlKSYmKHIrPTEpLGgoZSkmJihuKz0xKTtyZXR1cm4gcj4yKm59ZnVuY3Rpb24gdSh0KXtmb3IodmFyIGUscj1NYXRoLm1heCgxLCh0Lmxlbmd0aC0xKS8xZTMpLG49MCxpPTAsbz0wO288dC5sZW5ndGg7bys9cillPXkodFtNYXRoLnJvdW5kKG8pXSksaChlKT9uKys6InN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWUmJiJOb25lIiE9PWUmJmkrKztyZXR1cm4gaT4yKm59dmFyIGg9dCgiZmFzdC1pc251bWVyaWMiKSxmPXQoIi4uLy4uL2xpYiIpLGQ9dCgiLi4vcGxvdHMiKSxwPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxnPXQoIi4vdGlja192YWx1ZV9kZWZhdWx0cyIpLHY9dCgiLi90aWNrX2RlZmF1bHRzIiksbT10KCIuL3NldF9jb252ZXJ0IikseT10KCIuL2NsZWFuX2RhdHVtIiksYj10KCIuL2F4aXNfaWRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPWkubGV0dGVyLGE9aS5mb250fHx7fSxzPSJDbGljayB0byBlbnRlciAiKyhpLnRpdGxlfHxvLnRvVXBwZXJDYXNlKCkrIiBheGlzIikrIiB0aXRsZSI7aS5uYW1lJiYoZS5fbmFtZT1pLm5hbWUsZS5faWQ9Yi5uYW1lMmlkKGkubmFtZSkpO3ZhciBsPXIoInR5cGUiKTsiLSI9PT1sJiYobihlLGkuZGF0YSksIi0iPT09ZS50eXBlP2UudHlwZT0ibGluZWFyIjpsPXQudHlwZT1lLnR5cGUpLG0oZSkscigidGl0bGUiLHMpLGYuY29lcmNlRm9udChyLCJ0aXRsZWZvbnQiLHtmYW1pbHk6YS5mYW1pbHksc2l6ZTpNYXRoLnJvdW5kKDEuMiphLnNpemUpLGNvbG9yOmEuY29sb3J9KTt2YXIgYz0yPT09KHQucmFuZ2V8fFtdKS5sZW5ndGgmJmgodC5yYW5nZVswXSkmJmgodC5yYW5nZVsxXSksdT1yKCJhdXRvcmFuZ2UiLCFjKTt1JiZyKCJyYW5nZW1vZGUiKTt2YXIgZD1yKCJyYW5nZSIsWy0xLCJ4Ij09PW8/Njo0XSk7ZFswXT09PWRbMV0mJihlLnJhbmdlPVtkWzBdLTEsZFswXSsxXSksZi5ub25lT3JBbGwodC5yYW5nZSxlLnJhbmdlLFswLDFdKSxyKCJmaXhlZHJhbmdlIiksZyh0LGUscixsKSx2KHQsZSxyLGwsaSk7dmFyIHk9Zi5jb2VyY2UyKHQsZSxwLCJsaW5lY29sb3IiKSx4PWYuY29lcmNlMih0LGUscCwibGluZXdpZHRoIiksXz1yKCJzaG93bGluZSIsISF5fHwhIXgpO198fChkZWxldGUgZS5saW5lY29sb3IsZGVsZXRlIGUubGluZXdpZHRoKSwoX3x8ZS50aWNrcykmJnIoIm1pcnJvciIpO3ZhciB3PWYuY29lcmNlMih0LGUscCwiZ3JpZGNvbG9yIiksQT1mLmNvZXJjZTIodCxlLHAsImdyaWR3aWR0aCIpLGs9cigic2hvd2dyaWQiLGkuc2hvd0dyaWR8fCEhd3x8ISFBKTtrfHwoZGVsZXRlIGUuZ3JpZGNvbG9yLGRlbGV0ZSBlLmdyaWR3aWR0aCk7dmFyIE09Zi5jb2VyY2UyKHQsZSxwLCJ6ZXJvbGluZWNvbG9yIiksVD1mLmNvZXJjZTIodCxlLHAsInplcm9saW5ld2lkdGgiKSxFPXIoInplcm9saW5lIixpLnNob3dHcmlkfHwhIU18fCEhVCk7cmV0dXJuIEV8fChkZWxldGUgZS56ZXJvbGluZWNvbG9yLGRlbGV0ZSBlLnplcm9saW5ld2lkdGgpLGV9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi9wbG90cyI6NDM3LCIuL2F4aXNfaWRzIjozOTUsIi4vY2xlYW5fZGF0dW0iOjM5NiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NDAwLCIuL3NldF9jb252ZXJ0Ijo0MDQsIi4vdGlja19kZWZhdWx0cyI6NDA1LCIuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjQwNiwiZmFzdC1pc251bWVyaWMiOjc0fV0sMzk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe2Z1bmN0aW9uIG4odCxyKXtmb3IodmFyIG49T2JqZWN0LmtleXModCksaT0vXlt4eXpdYXhpc1swLTldKi8sbz1bXSxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBzPW5bYV07ZSYmcy5jaGFyQXQoMCkhPT1lfHxpLnRlc3QocykmJm8ucHVzaChyK3MpfXJldHVybiBvLnNvcnQoKX12YXIgbz10Ll9mdWxsTGF5b3V0O2lmKCFvKXJldHVybltdO3ZhciBhPW4obywiIik7aWYocilyZXR1cm4gYTtmb3IodmFyIHM9aS5nZXRTdWJwbG90SWRzKG8sImdsM2QiKXx8W10sbD0wO2w8cy5sZW5ndGg7bCsrKXt2YXIgYz1zW2xdO2E9YS5jb25jYXQobihvW2NdLGMrIi4iKSl9cmV0dXJuIGF9dmFyIGk9dCgiLi4vcGxvdHMiKSxvPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9jb25zdGFudHMiKTtyLmlkMm5hbWU9ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0JiZ0Lm1hdGNoKGEuQVhfSURfUEFUVEVSTikpe3ZhciBlPXQuc3Vic3RyKDEpO3JldHVybiIxIj09PWUmJihlPSIiKSx0LmNoYXJBdCgwKSsiYXhpcyIrZX19LHIubmFtZTJpZD1mdW5jdGlvbih0KXtpZih0Lm1hdGNoKGEuQVhfTkFNRV9QQVRURVJOKSl7dmFyIGU9dC5zdWJzdHIoNSk7cmV0dXJuIjEiPT09ZSYmKGU9IiIpLHQuY2hhckF0KDApK2V9fSxyLmNsZWFuSWQ9ZnVuY3Rpb24odCxlKXtpZih0Lm1hdGNoKGEuQVhfSURfUEFUVEVSTikmJighZXx8dC5jaGFyQXQoMCk9PT1lKSl7dmFyIHI9dC5zdWJzdHIoMSkucmVwbGFjZSgvXjArLywiIik7cmV0dXJuIjEiPT09ciYmKHI9IiIpLHQuY2hhckF0KDApK3J9fSxyLmxpc3Q9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuKHQsZSxyKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG8ubmVzdGVkUHJvcGVydHkodC5fZnVsbExheW91dCxlKS5nZXQoKX0pfSxyLmxpc3RJZHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LGUsITApLm1hcChyLm5hbWUyaWQpfSxyLmdldEZyb21JZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC5fZnVsbExheW91dDtyZXR1cm4ieCI9PT1uP2U9ZS5yZXBsYWNlKC95WzAtOV0qLywiIik6InkiPT09biYmKGU9ZS5yZXBsYWNlKC94WzAtOV0qLywiIikpLGlbci5pZDJuYW1lKGUpXX0sci5nZXRGcm9tVHJhY2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXQuX2Z1bGxMYXlvdXQsYT1udWxsO2lmKGkudHJhY2VJcyhlLCJnbDNkIikpe3ZhciBzPWUuc2NlbmU7InNjZW5lIj09PXMuc3Vic3RyKDAsNSkmJihhPW9bc11bbisiYXhpcyJdKX1lbHNlIGE9ci5nZXRGcm9tSWQodCxlW24rImF4aXMiXXx8bik7cmV0dXJuIGF9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi9wbG90cyI6NDM3LCIuL2NvbnN0YW50cyI6Mzk3fV0sMzk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e2lmKCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJnQuZ2V0VGltZSlyZXR1cm4gaS5tczJEYXRlVGltZSh0KTtpZigic3RyaW5nIiE9dHlwZW9mIHQmJiFuKHQpKXJldHVybiIiO3Q9dC50b1N0cmluZygpLnJlcGxhY2UoL1snIiUsJCMgXS9nLCIiKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlLHQpfXJldHVybiB0fX0seyIuLi8uLi9saWIiOjM3MywiZmFzdC1pc251bWVyaWMiOjc0fV0sMzk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17QkFETlVNOnZvaWQgMCx4QXhpc01hdGNoOi9eeGF4aXNbMC05XSokLyx5QXhpc01hdGNoOi9eeWF4aXNbMC05XSokLyxBWF9JRF9QQVRURVJOOi9eW3h5el1bMC05XSokLyxBWF9OQU1FX1BBVFRFUk46L15beHl6XWF4aXNbMC05XSokLyxEQkxDTElDS0RFTEFZOjMwMCxNSU5EUkFHOjgsTUlOU0VMRUNUOjEyLE1JTlpPT006MjAsRFJBR0dFUlNJWkU6MjAsTUFYRElTVDoyMCxZQU5HTEU6NjAsSE9WRVJBUlJPV1NJWkU6NixIT1ZFUlRFWFRQQUQ6MyxIT1ZFUkZPTlRTSVpFOjEzLEhPVkVSRk9OVDoiQXJpYWwsIHNhbnMtc2VyaWYiLEhPVkVSTUlOVElNRToxMDAsQkVORFBYOjEuNX19LHt9XSwzOTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgcj1bXSxuPXQubGVuZ3RoO24+MDtuLS0pci5wdXNoKGUpO3JldHVybiByfWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9W10sbj0wO248dC5sZW5ndGg7bisrKXIucHVzaCh0W25dLnAyYyhlKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj10KHIpLGk9ZShyKTtyZXR1cm4gTWF0aC5zcXJ0KG4qbitpKmkpfX1mdW5jdGlvbiBhKHQsZSxyKXtpZigicGllIj09PXIpcmV0dXJuIHZvaWQgdC5lbWl0KCJwbG90bHlfaG92ZXIiLHtwb2ludHM6W2VdfSk7cnx8KHI9Inh5Iik7dmFyIG89dC5fZnVsbExheW91dCxhPW8uX3Bsb3RzW3JdLGQ9QXJyYXkuaXNBcnJheShyKT9yOltyXS5jb25jYXQoYS5vdmVybGF5cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSkscD1kLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdy5BeGVzLmdldEZyb21JZCh0LGUsIngiKX0pLGc9ZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHcuQXhlcy5nZXRGcm9tSWQodCxlLCJ5Iil9KSx2PWUuaG92ZXJtb2RlfHxvLmhvdmVybW9kZTtpZigtMT09PVsieCIsInkiLCJjbG9zZXN0Il0uaW5kZXhPZih2KXx8IXQuY2FsY2RhdGF8fHQucXVlcnlTZWxlY3RvcigiLnpvb21ib3giKXx8dC5fZHJhZ2dpbmcpcmV0dXJuIGYodCxlKTt2YXIgbSx5LGIseCxBLE0sRSxMLFMsQyxQLHosUj1bXSxPPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHY9ImFycmF5IixiPTA7YjxlLmxlbmd0aDtiKyspQT10LmNhbGNkYXRhW2VbYl0uY3VydmVOdW1iZXJ8fDBdLCJub25lIiE9PUFbMF0udHJhY2UuaG92ZXJpbmZvJiZPLnB1c2goQSk7ZWxzZXtmb3IoeD0wO3g8dC5jYWxjZGF0YS5sZW5ndGg7eCsrKUE9dC5jYWxjZGF0YVt4XSxNPUFbMF0udHJhY2UsIm5vbmUiIT09TS5ob3ZlcmluZm8mJi0xIT09ZC5pbmRleE9mKE0ueGF4aXMrTS55YXhpcykmJk8ucHVzaChBKTt2YXIgSSxOO2lmKGUudGFyZ2V0JiYiY2xpZW50WCJpbiBlJiYiY2xpZW50WSJpbiBlKXtpZihrLnRyaWdnZXJIYW5kbGVyKHQsInBsb3RseV9iZWZvcmVob3ZlciIsZSk9PT0hMSlyZXR1cm47dmFyIGo9ZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoST1lLmNsaWVudFgtai5sZWZ0LE49ZS5jbGllbnRZLWoudG9wLDA+SXx8ST5qLndpZHRofHwwPk58fE4+ai5oZWlnaHQpcmV0dXJuIGYodCxlKX1lbHNlIEk9InhweCJpbiBlP2UueHB4OnBbMF0uX2xlbmd0aC8yLE49InlweCJpbiBlP2UueXB4OmdbMF0uX2xlbmd0aC8yO2lmKG09Inh2YWwiaW4gZT9uKGQsZS54dmFsKTppKHAsSSkseT0ieXZhbCJpbiBlP24oZCxlLnl2YWwpOmkoZyxOKSwhXyhtWzBdKXx8IV8oeVswXSkpcmV0dXJuIGNvbnNvbGUubG9nKCJQbG90bHkuRnguaG92ZXIgZmFpbGVkIixlLHQpLGYodCxlKX12YXIgRj0xLzA7Zm9yKHg9MDt4PE8ubGVuZ3RoO3grKylpZihBPU9beF0sQSYmQVswXSYmQVswXS50cmFjZSYmQVswXS50cmFjZS52aXNpYmxlPT09ITApe2lmKE09QVswXS50cmFjZSxFPWQuaW5kZXhPZihNLnhheGlzK00ueWF4aXMpLEw9dixQPXtjZDpBLHRyYWNlOk0seGE6cFtFXSx5YTpnW0VdLG5hbWU6dC5kYXRhLmxlbmd0aD4xfHwtMSE9PU0uaG92ZXJpbmZvLmluZGV4T2YoIm5hbWUiKT9NLm5hbWU6dm9pZCAwLGluZGV4OiExLGRpc3RhbmNlOk1hdGgubWluKEYsVC5NQVhESVNUKSxjb2xvcjp3LkNvbG9yLmRlZmF1bHRMaW5lLHgwOnZvaWQgMCx4MTp2b2lkIDAseTA6dm9pZCAwLHkxOnZvaWQgMCx4TGFiZWxWYWw6dm9pZCAwLHlMYWJlbFZhbDp2b2lkIDAsekxhYmVsVmFsOnZvaWQgMCx0ZXh0OnZvaWQgMH0sej1SLmxlbmd0aCwiYXJyYXkiPT09TCl7dmFyIEQ9ZVt4XTsicG9pbnROdW1iZXIiaW4gRD8oUC5pbmRleD1ELnBvaW50TnVtYmVyLEw9ImNsb3Nlc3QiKTooTD0iIiwieHZhbCJpbiBEJiYoUz1ELnh2YWwsTD0ieCIpLCJ5dmFsImluIEQmJihDPUQueXZhbCxMPUw/ImNsb3Nlc3QiOiJ5IikpfWVsc2UgUz1tW0VdLEM9eVtFXTtpZihNLl9tb2R1bGUmJk0uX21vZHVsZS5ob3ZlclBvaW50cyl7dmFyIEI9TS5fbW9kdWxlLmhvdmVyUG9pbnRzKFAsUyxDLEwpO2lmKEIpZm9yKHZhciBVLFY9MDtWPEIubGVuZ3RoO1YrKylVPUJbVl0sXyhVLngwKSYmXyhVLnkwKSYmUi5wdXNoKHMoVSx2KSl9ZWxzZSBjb25zb2xlLmxvZygidW5yZWNvZ25pemVkIHRyYWNlIHR5cGUgaW4gaG92ZXIiLE0pOyJjbG9zZXN0Ij09PXYmJlIubGVuZ3RoPnomJihSLnNwbGljZSgwLHopLEY9UlswXS5kaXN0YW5jZSl9aWYoMD09PVIubGVuZ3RoKXJldHVybiBmKHQsZSk7dmFyIHE9InkiPT09diYmTy5sZW5ndGg+MTtSLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXN0YW5jZS1lLmRpc3RhbmNlfSk7dmFyIEg9e2hvdmVybW9kZTp2LHJvdGF0ZUxhYmVsczpxLGJnQ29sb3I6dy5Db2xvci5jb21iaW5lKG8ucGxvdF9iZ2NvbG9yLG8ucGFwZXJfYmdjb2xvciksY29udGFpbmVyOm8uX2hvdmVybGF5ZXIsb3V0ZXJDb250YWluZXI6by5fcGFwZXJkaXZ9LEc9bChSLEgpO2MoUixxPyJ4YSI6InlhIiksdShHLHEpO3ZhciBZPXQuX2hvdmVyZGF0YSxYPVtdO2ZvcihiPTA7YjxSLmxlbmd0aDtiKyspe3ZhciBXPVJbYl0sWj17ZGF0YTpXLnRyYWNlLl9pbnB1dCxmdWxsRGF0YTpXLnRyYWNlLGN1cnZlTnVtYmVyOlcudHJhY2UuaW5kZXgscG9pbnROdW1iZXI6Vy5pbmRleCx4OlcueFZhbCx5OlcueVZhbCx4YXhpczpXLnhhLHlheGlzOlcueWF9O3ZvaWQgMCE9PVcuekxhYmVsVmFsJiYoWi56PVcuekxhYmVsVmFsKSxYLnB1c2goWil9dC5faG92ZXJkYXRhPVgsaCh0LGUsWSkmJihZJiZ0LmVtaXQoInBsb3RseV91bmhvdmVyIix7cG9pbnRzOll9KSx0LmVtaXQoInBsb3RseV9ob3ZlciIse3BvaW50czp0Ll9ob3ZlcmRhdGEseGF4ZXM6cCx5YXhlczpnLHh2YWxzOm0seXZhbHM6eX0pKX1mdW5jdGlvbiBzKHQsZSl7dC5wb3NyZWY9InkiPT09ZT8odC54MCt0LngxKS8yOih0LnkwK3QueTEpLzIsdC54MD13LkxpYi5jb25zdHJhaW4odC54MCwwLHQueGEuX2xlbmd0aCksdC54MT13LkxpYi5jb25zdHJhaW4odC54MSwwLHQueGEuX2xlbmd0aCksdC55MD13LkxpYi5jb25zdHJhaW4odC55MCwwLHQueWEuX2xlbmd0aCksdC55MT13LkxpYi5jb25zdHJhaW4odC55MSwwLHQueWEuX2xlbmd0aCk7dmFyIHI7aWYodm9pZCAwIT09dC54TGFiZWxWYWwpe3I9ImxvZyI9PT10LnhhLnR5cGUmJnQueExhYmVsVmFsPD0wO3ZhciBuPXcuQXhlcy50aWNrVGV4dCh0LnhhLHQueGEuYzJsKHI/LXQueExhYmVsVmFsOnQueExhYmVsVmFsKSwiaG92ZXIiKTtyPzA9PT10LnhMYWJlbFZhbD90LnhMYWJlbD0iMCI6dC54TGFiZWw9Ii0iK24udGV4dDp0LnhMYWJlbD1uLnRleHQsdC54VmFsPXQueGEuYzJkKHQueExhYmVsVmFsKX1pZih2b2lkIDAhPT10LnlMYWJlbFZhbCl7cj0ibG9nIj09PXQueWEudHlwZSYmdC55TGFiZWxWYWw8PTA7dmFyIGk9dy5BeGVzLnRpY2tUZXh0KHQueWEsdC55YS5jMmwocj8tdC55TGFiZWxWYWw6dC55TGFiZWxWYWwpLCJob3ZlciIpO3I/MD09PXQueUxhYmVsVmFsP3QueUxhYmVsPSIwIjp0LnlMYWJlbD0iLSIraS50ZXh0OnQueUxhYmVsPWkudGV4dCx0LnlWYWw9dC55YS5jMmQodC55TGFiZWxWYWwpfWlmKHZvaWQgMCE9PXQuekxhYmVsVmFsJiYodC56TGFiZWw9U3RyaW5nKHQuekxhYmVsVmFsKSksdm9pZCAwIT09dC54ZXJyKXt2YXIgbz13LkF4ZXMudGlja1RleHQodC54YSx0LnhhLmMybCh0LnhlcnIpLCJob3ZlciIpLnRleHQ7dm9pZCAwIT09dC54ZXJybmVnP3QueExhYmVsKz0iICsiK28rIiAvIC0iK3cuQXhlcy50aWNrVGV4dCh0LnhhLHQueGEuYzJsKHQueGVycm5lZyksImhvdmVyIikudGV4dDp0LnhMYWJlbCs9IiAmcGx1c21uOyAiK28sIngiPT09ZSYmKHQuZGlzdGFuY2UrPTEpfWlmKHZvaWQgMCE9PXQueWVycil7dmFyIGE9dy5BeGVzLnRpY2tUZXh0KHQueWEsdC55YS5jMmwodC55ZXJyKSwiaG92ZXIiKS50ZXh0O3ZvaWQgMCE9PXQueWVycm5lZz90LnlMYWJlbCs9IiArIithKyIgLyAtIit3LkF4ZXMudGlja1RleHQodC55YSx0LnlhLmMybCh0LnllcnJuZWcpLCJob3ZlciIpLnRleHQ6dC55TGFiZWwrPSIgJnBsdXNtbjsgIithLCJ5Ij09PWUmJih0LmRpc3RhbmNlKz0xKX12YXIgcz10LnRyYWNlLmhvdmVyaW5mbztyZXR1cm4iYWxsIiE9PXMmJihzPXMuc3BsaXQoIisiKSwtMT09PXMuaW5kZXhPZigieCIpJiYodC54TGFiZWw9dm9pZCAwKSwtMT09PXMuaW5kZXhPZigieSIpJiYodC55TGFiZWw9dm9pZCAwKSwtMT09PXMuaW5kZXhPZigieiIpJiYodC56TGFiZWw9dm9pZCAwKSwtMT09PXMuaW5kZXhPZigidGV4dCIpJiYodC50ZXh0PXZvaWQgMCksLTE9PT1zLmluZGV4T2YoIm5hbWUiKSYmKHQubmFtZT12b2lkIDApKSx0fWZ1bmN0aW9uIGwodCxlKXt2YXIgcixuLGk9ZS5ob3Zlcm1vZGUsbz1lLnJvdGF0ZUxhYmVscyxhPWUuYmdDb2xvcixzPWUuY29udGFpbmVyLGw9ZS5vdXRlckNvbnRhaW5lcixjPXRbMF0sdT1jLnhhLGg9Yy55YSxmPSJ5Ij09PWk/InlMYWJlbCI6InhMYWJlbCIsZD1jW2ZdLHA9KFN0cmluZyhkKXx8IiIpLnNwbGl0KCIgIilbMF0sZz1sLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PWcudG9wLG09Zy53aWR0aCx5PWcuaGVpZ2h0LF89Yy5kaXN0YW5jZTw9VC5NQVhESVNUJiYoIngiPT09aXx8InkiPT09aSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7bj10W3JdLnRyYWNlLmhvdmVyaW5mbzt2YXIgQT1uLnNwbGl0KCIrIik7aWYoLTE9PT1BLmluZGV4T2YoImFsbCIpJiYtMT09PUEuaW5kZXhPZihpKSl7Xz0hMTticmVha319dmFyIGs9cy5zZWxlY3RBbGwoImcuYXhpc3RleHQiKS5kYXRhKF8/WzBdOltdKTtrLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYXhpc3RleHQiLCEwKSxrLmV4aXQoKS5yZW1vdmUoKSxrLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1iLnNlbGVjdCh0aGlzKSxyPWUuc2VsZWN0QWxsKCJwYXRoIikuZGF0YShbMF0pLG49ZS5zZWxlY3RBbGwoInRleHQiKS5kYXRhKFswXSk7ci5lbnRlcigpLmFwcGVuZCgicGF0aCIpLnN0eWxlKHtmaWxsOncuQ29sb3IuZGVmYXVsdExpbmUsInN0cm9rZS13aWR0aCI6IjFweCIsc3Ryb2tlOncuQ29sb3IuYmFja2dyb3VuZH0pLG4uZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jYWxsKHcuRHJhd2luZy5mb250LE4sSSx3LkNvbG9yLmJhY2tncm91bmQpLmF0dHIoImRhdGEtbm90ZXgiLDEpLG4udGV4dChkKS5jYWxsKHcudXRpbC5jb252ZXJ0VG9Uc3BhbnMpLmNhbGwody5EcmF3aW5nLnNldFBvc2l0aW9uLDAsMCkuc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuY2FsbCh3LkRyYXdpbmcuc2V0UG9zaXRpb24sMCwwKSxlLmF0dHIoInRyYW5zZm9ybSIsIiIpO3ZhciBvPW4ubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCJ4Ij09PWkpe24uYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5jYWxsKHcuRHJhd2luZy5zZXRQb3NpdGlvbiwwLCJ0b3AiPT09dS5zaWRlP3Ytby5ib3R0b20tUi1POnYtby50b3ArUitPKS5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5hdHRyKHt4Om4uYXR0cigieCIpLHk6bi5hdHRyKCJ5Iil9KTt2YXIgYT0idG9wIj09PXUuc2lkZT8iLSI6IiI7ci5hdHRyKCJkIiwiTTAsMEwiK1IrIiwiK2ErUisiSCIrKE8rby53aWR0aC8yKSsidiIrYSsoMipPK28uaGVpZ2h0KSsiSC0iKyhPK28ud2lkdGgvMikrIlYiK2ErUisiSC0iK1IrIloiKSxlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh1Ll9vZmZzZXQrKGMueDArYy54MSkvMikrIiwiKyhoLl9vZmZzZXQrKCJ0b3AiPT09dS5zaWRlPzA6aC5fbGVuZ3RoKSkrIikiKX1lbHNle24uYXR0cigidGV4dC1hbmNob3IiLCJyaWdodCI9PT1oLnNpZGU/InN0YXJ0IjoiZW5kIikuY2FsbCh3LkRyYXdpbmcuc2V0UG9zaXRpb24sKCJyaWdodCI9PT1oLnNpZGU/MTotMSkqKE8rUiksdi1vLnRvcC1vLmhlaWdodC8yKS5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5hdHRyKHt4Om4uYXR0cigieCIpLHk6bi5hdHRyKCJ5Iil9KTt2YXIgcz0icmlnaHQiPT09aC5zaWRlPyIiOiItIjtyLmF0dHIoImQiLCJNMCwwTCIrcytSKyIsIitSKyJWIisoTytvLmhlaWdodC8yKSsiaCIrcysoMipPK28ud2lkdGgpKyJWLSIrKE8rby5oZWlnaHQvMikrIkgiK3MrUisiVi0iK1IrIloiKSxlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh1Ll9vZmZzZXQrKCJyaWdodCI9PT1oLnNpZGU/dS5fbGVuZ3RoOjApKSsiLCIrKGguX29mZnNldCsoYy55MCtjLnkxKS8yKSsiKSIpfXQ9dC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQuekxhYmVsVmFsfHwodFtmXXx8IiIpLnNwbGl0KCIgIilbMF09PT1wfSl9KTt2YXIgTT1zLnNlbGVjdEFsbCgiZy5ob3ZlcnRleHQiKS5kYXRhKHQsZnVuY3Rpb24odCl7cmV0dXJuW3QudHJhY2UuaW5kZXgsdC5pbmRleCx0LngwLHQueTAsdC5uYW1lLHQuYXR0cix0LnhhLHQueWF8fCIiXS5qb2luKCIsIil9KTtyZXR1cm4gTS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImhvdmVydGV4dCIsITApLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1iLnNlbGVjdCh0aGlzKTt0LmFwcGVuZCgicmVjdCIpLmNhbGwody5Db2xvci5maWxsLHcuQ29sb3IuYWRkT3BhY2l0eShhLC44KSksdC5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJuYW1lIiwhMCkuY2FsbCh3LkRyYXdpbmcuZm9udCxOLEkpLHQuYXBwZW5kKCJwYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsIjFweCIpLHQuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZCgibnVtcyIsITApLmNhbGwody5EcmF3aW5nLmZvbnQsTixJKX0pLE0uZXhpdCgpLnJlbW92ZSgpLE0uZWFjaChmdW5jdGlvbih0KXt2YXIgZT1iLnNlbGVjdCh0aGlzKS5hdHRyKCJ0cmFuc2Zvcm0iLCIiKSxyPSIiLG49IiIscz13LkNvbG9yLm9wYWNpdHkodC5jb2xvcik/dC5jb2xvcjp3LkNvbG9yLmRlZmF1bHRMaW5lLGw9dy5Db2xvci5jb21iaW5lKHMsYSksYz14KGwpLmdldEJyaWdodG5lc3MoKT4xMjg/IiMwMDAiOncuQ29sb3IuYmFja2dyb3VuZDtpZih0Lm5hbWUmJnZvaWQgMD09PXQuekxhYmVsVmFsKXt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7dS5pbm5lckhUTUw9dC5uYW1lLHI9dS50ZXh0Q29udGVudHx8IiIsci5sZW5ndGg+MTUmJihyPXIuc3Vic3RyKDAsMTIpKyIuLi4iKX12b2lkIDAhPT10LnpMYWJlbD8odm9pZCAwIT09dC54TGFiZWwmJihuKz0ieDogIit0LnhMYWJlbCsiPGJyPiIpLHZvaWQgMCE9PXQueUxhYmVsJiYobis9Ink6ICIrdC55TGFiZWwrIjxicj4iKSxuKz0obj8iejogIjoiIikrdC56TGFiZWwpOl8mJnRbaSsiTGFiZWwiXT09PWQ/bj10WygieCI9PT1pPyJ5IjoieCIpKyJMYWJlbCJdfHwiIjp2b2lkIDA9PT10LnhMYWJlbD92b2lkIDAhPT10LnlMYWJlbCYmKG49dC55TGFiZWwpOm49dm9pZCAwPT09dC55TGFiZWw/dC54TGFiZWw6IigiK3QueExhYmVsKyIsICIrdC55TGFiZWwrIikiLHQudGV4dCYmIUFycmF5LmlzQXJyYXkodC50ZXh0KSYmKG4rPShuPyI8YnI+IjoiIikrdC50ZXh0KSwiIj09PW4mJigiIj09PXImJmUucmVtb3ZlKCksbj1yKTt2YXIgaD1lLnNlbGVjdCgidGV4dC5udW1zIikuc3R5bGUoImZpbGwiLGMpLmNhbGwody5EcmF3aW5nLnNldFBvc2l0aW9uLDAsMCkudGV4dChuKS5hdHRyKCJkYXRhLW5vdGV4IiwxKS5jYWxsKHcudXRpbC5jb252ZXJ0VG9Uc3BhbnMpO2guc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuY2FsbCh3LkRyYXdpbmcuc2V0UG9zaXRpb24sMCwwKTt2YXIgZj1lLnNlbGVjdCgidGV4dC5uYW1lIikscD0wO3ImJnIhPT1uPyhmLnN0eWxlKCJmaWxsIixsKS50ZXh0KHIpLmNhbGwody5EcmF3aW5nLnNldFBvc2l0aW9uLDAsMCkuYXR0cigiZGF0YS1ub3RleCIsMSkuY2FsbCh3LnV0aWwuY29udmVydFRvVHNwYW5zKSxmLnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLmNhbGwody5EcmF3aW5nLnNldFBvc2l0aW9uLDAsMCkscD1mLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCsyKk8pOihmLnJlbW92ZSgpLGUuc2VsZWN0KCJyZWN0IikucmVtb3ZlKCkpLGUuc2VsZWN0KCJwYXRoIikuc3R5bGUoe2ZpbGw6bCxzdHJva2U6Y30pO3ZhciBnLEEsaz1oLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxNPXQueGEuX29mZnNldCsodC54MCt0LngxKS8yLFQ9dC55YS5fb2Zmc2V0Kyh0LnkwK3QueTEpLzIsRT1NYXRoLmFicyh0LngxLXQueDApLFM9TWF0aC5hYnModC55MS10LnkwKSxDPWsud2lkdGgrUitPK3A7dC50eTA9di1rLnRvcCx0LmJ4PWsud2lkdGgrMipPLHQuYnk9ay5oZWlnaHQrMipPLHQuYW5jaG9yPSJzdGFydCIsdC50eHdpZHRoPWsud2lkdGgsdC50eDJ3aWR0aD1wLHQub2Zmc2V0PTAsbz8odC5wb3M9TSxnPXk+PVQrUy8yK0MsQT1ULVMvMi1DPj0wLCJ0b3AiIT09dC5pZGVhbEFsaWduJiZnfHwhQT9nPyhUKz1TLzIsdC5hbmNob3I9InN0YXJ0Iik6dC5hbmNob3I9Im1pZGRsZSI6KFQtPVMvMix0LmFuY2hvcj0iZW5kIikpOih0LnBvcz1ULGc9bT49TStFLzIrQyxBPU0tRS8yLUM+PTAsImxlZnQiIT09dC5pZGVhbEFsaWduJiZnfHwhQT9nPyhNKz1FLzIsdC5hbmNob3I9InN0YXJ0Iik6dC5hbmNob3I9Im1pZGRsZSI6KE0tPUUvMix0LmFuY2hvcj0iZW5kIikpLGguYXR0cigidGV4dC1hbmNob3IiLHQuYW5jaG9yKSxwJiZmLmF0dHIoInRleHQtYW5jaG9yIix0LmFuY2hvciksZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitNKyIsIitUKyIpIisobz8icm90YXRlKCIrTCsiKSI6IiIpKX0pLE19ZnVuY3Rpb24gYyh0LGUpe2Z1bmN0aW9uIHIodCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07aWYoaT1lLnBtaW4tZS5wb3MtZS5kcCtlLnNpemUsbz1yLnBvcytyLmRwK3Iuc2l6ZS1lLnBtYXgsaT4uMDEpe2ZvcihzPXQubGVuZ3RoLTE7cz49MDtzLS0pdFtzXS5kcCs9aTtuPSExfWlmKCEoLjAxPm8pKXtpZigtLjAxPmkpe2ZvcihzPXQubGVuZ3RoLTE7cz49MDtzLS0pdFtzXS5kcC09bztuPSExfWlmKG4pe3ZhciBjPTA7Zm9yKGE9MDthPHQubGVuZ3RoO2ErKylsPXRbYV0sbC5wb3MrbC5kcCtsLnNpemU+ZS5wbWF4JiZjKys7Zm9yKGE9dC5sZW5ndGgtMTthPj0wJiYhKDA+PWMpO2EtLSlsPXRbYV0sbC5wb3M+ZS5wbWF4LTEmJihsLmRlbD0hMCxjLS0pO2ZvcihhPTA7YTx0Lmxlbmd0aCYmISgwPj1jKTthKyspaWYobD10W2FdLGwucG9zPGUucG1pbisxKWZvcihsLmRlbD0hMCxjLS0sbz0yKmwuc2l6ZSxzPXQubGVuZ3RoLTE7cz49MDtzLS0pdFtzXS5kcC09bztmb3IoYT10Lmxlbmd0aC0xO2E+PTAmJiEoMD49Yyk7YS0tKWw9dFthXSxsLnBvcytsLmRwK2wuc2l6ZT5lLnBtYXgmJihsLmRlbD0hMCxjLS0pfX19Zm9yKHZhciBuLGksbyxhLHMsbCxjLHU9MCxoPXQubWFwKGZ1bmN0aW9uKHQscil7dmFyIG49dFtlXTtyZXR1cm5be2k6cixkcDowLHBvczp0LnBvcyxwb3NyZWY6dC5wb3NyZWYsc2l6ZTp0LmJ5KigieCI9PT1uLl9pZC5jaGFyQXQoMCk/QzoxKS8yLHBtaW46bi5fb2Zmc2V0LHBtYXg6bi5fb2Zmc2V0K24uX2xlbmd0aH1dfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0WzBdLnBvc3JlZi1lWzBdLnBvc3JlZn0pOyFuJiZ1PD10Lmxlbmd0aDspe2Zvcih1Kyssbj0hMCxhPTA7YTxoLmxlbmd0aC0xOyl7dmFyIGY9aFthXSxkPWhbYSsxXSxwPWZbZi5sZW5ndGgtMV0sZz1kWzBdO2lmKGk9cC5wb3MrcC5kcCtwLnNpemUtZy5wb3MtZy5kcCtnLnNpemUsaT4uMDEmJnAucG1pbj09PWcucG1pbiYmcC5wbWF4PT09Zy5wbWF4KXtmb3Iocz1kLmxlbmd0aC0xO3M+PTA7cy0tKWRbc10uZHArPWk7Zm9yKGYucHVzaC5hcHBseShmLGQpLGguc3BsaWNlKGErMSwxKSxjPTAscz1mLmxlbmd0aC0xO3M+PTA7cy0tKWMrPWZbc10uZHA7Zm9yKG89Yy9mLmxlbmd0aCxzPWYubGVuZ3RoLTE7cz49MDtzLS0pZltzXS5kcC09bztuPSExfWVsc2UgYSsrfWguZm9yRWFjaChyKX1mb3IoYT1oLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgdj1oW2FdO2ZvcihzPXYubGVuZ3RoLTE7cz49MDtzLS0pe3ZhciBtPXZbc10seT10W20uaV07eS5vZmZzZXQ9bS5kcCx5LmRlbD1tLmRlbH19fWZ1bmN0aW9uIHUodCxlKXt0LmVhY2goZnVuY3Rpb24odCl7dmFyIHI9Yi5zZWxlY3QodGhpcyk7aWYodC5kZWwpcmV0dXJuIHZvaWQgci5yZW1vdmUoKTt2YXIgbj0iZW5kIj09PXQuYW5jaG9yPy0xOjEsaT1yLnNlbGVjdCgidGV4dC5udW1zIiksbz17c3RhcnQ6MSxlbmQ6LTEsbWlkZGxlOjB9W3QuYW5jaG9yXSxhPW8qKFIrTykscz1hK28qKHQudHh3aWR0aCtPKSxsPTAsYz10Lm9mZnNldDsibWlkZGxlIj09PXQuYW5jaG9yJiYoYS09dC50eDJ3aWR0aC8yLHMtPXQudHgyd2lkdGgvMiksZSYmKGMqPS16LGw9dC5vZmZzZXQqUCksci5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIiwibWlkZGxlIj09PXQuYW5jaG9yPyJNLSIrdC5ieC8yKyIsLSIrdC5ieS8yKyJoIit0LmJ4KyJ2Iit0LmJ5KyJoLSIrdC5ieCsiWiI6Ik0wLDBMIisobipSK2wpKyIsIisoUitjKSsidiIrKHQuYnkvMi1SKSsiaCIrbip0LmJ4KyJ2LSIrdC5ieSsiSCIrKG4qUitsKSsiViIrKGMtUikrIloiKSxpLmNhbGwody5EcmF3aW5nLnNldFBvc2l0aW9uLGErbCxjK3QudHkwLXQuYnkvMitPKS5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5hdHRyKHt4OmkuYXR0cigieCIpLHk6aS5hdHRyKCJ5Iil9KSx0LnR4MndpZHRoJiYoci5zZWxlY3QoInRleHQubmFtZSwgdGV4dC5uYW1lIHRzcGFuLmxpbmUiKS5jYWxsKHcuRHJhd2luZy5zZXRQb3NpdGlvbixzK28qTytsLGMrdC50eTAtdC5ieS8yK08pLHIuc2VsZWN0KCJyZWN0IikuY2FsbCh3LkRyYXdpbmcuc2V0UmVjdCxzKyhvLTEpKnQudHgyd2lkdGgvMitsLGMtdC5ieS8yLTEsdC50eDJ3aWR0aCx0LmJ5KzIpKX0pfWZ1bmN0aW9uIGgodCxlLHIpe2lmKCFlLnRhcmdldClyZXR1cm4hMTtpZighcnx8ci5sZW5ndGghPT10Ll9ob3ZlcmRhdGEubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgbj1yLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgaT1yW25dLG89dC5faG92ZXJkYXRhW25dO2lmKGkuY3VydmVOdW1iZXIhPT1vLmN1cnZlTnVtYmVyfHxTdHJpbmcoaS5wb2ludE51bWJlcikhPT1TdHJpbmcoby5wb2ludE51bWJlcikpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gZih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQ7ZXx8KGU9e30pLGUudGFyZ2V0JiZrLnRyaWdnZXJIYW5kbGVyKHQsInBsb3RseV9iZWZvcmVob3ZlciIsZSk9PT0hMXx8KHIuX2hvdmVybGF5ZXIuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCksCmUudGFyZ2V0JiZ0Ll9ob3ZlcmRhdGEmJnQuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtwb2ludHM6dC5faG92ZXJkYXRhfSksdC5faG92ZXJkYXRhPXZvaWQgMCl9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiB0PyJuc2V3Ij09PXQ/InBhbiI9PT1lPyJtb3ZlIjoiY3Jvc3NoYWlyIjp0LnRvTG93ZXJDYXNlKCkrIi1yZXNpemUiOiJwb2ludGVyIn1mdW5jdGlvbiBwKHQsZSxyLG4saSxvLGEscyl7ZnVuY3Rpb24gbCh0LGUpe2ZvcihDPTA7Qzx0Lmxlbmd0aDtDKyspaWYoIXRbQ10uZml4ZWRyYW5nZSlyZXR1cm4gZTtyZXR1cm4iIn1mdW5jdGlvbiBjKHQpe3RbMF09TnVtYmVyKHRbMF0pLHRbMV09TnVtYmVyKHRbMV0pfWZ1bmN0aW9uIHUocixuLGkpe3ZhciBvPVcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zm9yKCQ9bi1vLmxlZnQsSz1pLW8udG9wLFE9e2w6JCxyOiQsdzowLHQ6SyxiOkssaDowfSxKPXQuX2htcGl4Y291bnQ/dC5faG1sdW1jb3VudC90Ll9obXBpeGNvdW50OngodC5fZnVsbExheW91dC5wbG90X2JnY29sb3IpLmdldEx1bWluYW5jZSgpLHR0PXR0PSJNMCwwSCIrRisiViIrRCsiSDBWMCIsZXQ9ITEscnQ9Inh5IixudD1lLnBsb3QuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94Iikuc3R5bGUoe2ZpbGw6Sj4uMj8icmdiYSgwLDAsMCwwKSI6InJnYmEoMjU1LDI1NSwyNTUsMCkiLCJzdHJva2Utd2lkdGgiOjB9KS5hdHRyKCJkIix0dCsiWiIpLGl0PWUucGxvdC5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInpvb21ib3gtY29ybmVycyIpLnN0eWxlKHtmaWxsOncuQ29sb3IuYmFja2dyb3VuZCxzdHJva2U6dy5Db2xvci5kZWZhdWx0TGluZSwic3Ryb2tlLXdpZHRoIjoxLG9wYWNpdHk6MH0pLmF0dHIoImQiLCJNMCwwWiIpLGgoKSxDPTA7QzxWLmxlbmd0aDtDKyspYyhWW0NdLnJhbmdlKX1mdW5jdGlvbiBoKCl7ZS5wbG90LnNlbGVjdEFsbCgiLnNlbGVjdC1vdXRsaW5lIikucmVtb3ZlKCl9ZnVuY3Rpb24gZih0LGUpe3ZhciByPU1hdGgubWF4KDAsTWF0aC5taW4oRix0KyQpKSxuPU1hdGgubWF4KDAsTWF0aC5taW4oRCxlK0spKSxpPU1hdGguYWJzKHItJCksbz1NYXRoLmFicyhuLUspLGE9TWF0aC5mbG9vcihNYXRoLm1pbihvLGksVSkvMik7US5sPU1hdGgubWluKCQsciksUS5yPU1hdGgubWF4KCQsciksUS50PU1hdGgubWluKEssbiksUS5iPU1hdGgubWF4KEssbiksIUh8fG88TWF0aC5taW4oTWF0aC5tYXgoLjYqaSxCKSxVKT9CPmk/KHJ0PSIiLFEucj1RLmwsUS50PVEuYixpdC5hdHRyKCJkIiwiTTAsMFoiKSk6KFEudD0wLFEuYj1ELHJ0PSJ4IixpdC5hdHRyKCJkIiwiTSIrKFEubC0uNSkrIiwiKyhLLVUtLjUpKyJoLTN2IisoMipVKzEpKyJoM1pNIisoUS5yKy41KSsiLCIrKEstVS0uNSkrImgzdiIrKDIqVSsxKSsiaC0zWiIpKTohcXx8aTxNYXRoLm1pbiguNipvLFUpPyhRLmw9MCxRLnI9RixydD0ieSIsaXQuYXR0cigiZCIsIk0iKygkLVUtLjUpKyIsIisoUS50LS41KSsidi0zaCIrKDIqVSsxKSsidjNaTSIrKCQtVS0uNSkrIiwiKyhRLmIrLjUpKyJ2M2giKygyKlUrMSkrInYtM1oiKSk6KHJ0PSJ4eSIsaXQuYXR0cigiZCIsIk0iKyhRLmwtMy41KSsiLCIrKFEudC0uNSthKSsiaDN2IistYSsiaCIrYSsidi0zaC0iKyhhKzMpKyJaTSIrKFEuciszLjUpKyIsIisoUS50LS41K2EpKyJoLTN2IistYSsiaCIrLWErInYtM2giKyhhKzMpKyJaTSIrKFEuciszLjUpKyIsIisoUS5iKy41LWEpKyJoLTN2IithKyJoIistYSsidjNoIisoYSszKSsiWk0iKyhRLmwtMy41KSsiLCIrKFEuYisuNS1hKSsiaDN2IithKyJoIithKyJ2M2gtIisoYSszKSsiWiIpKSxRLnc9US5yLVEubCxRLmg9US5iLVEudCxudC5hdHRyKCJkIix0dCsiTSIrUS5sKyIsIitRLnQrInYiK1EuaCsiaCIrUS53KyJ2LSIrUS5oKyJoLSIrUS53KyJaIiksZXR8fChudC50cmFuc2l0aW9uKCkuc3R5bGUoImZpbGwiLEo+LjI/InJnYmEoMCwwLDAsMC40KSI6InJnYmEoMjU1LDI1NSwyNTUsMC4zKSIpLmR1cmF0aW9uKDIwMCksaXQudHJhbnNpdGlvbigpLnN0eWxlKCJvcGFjaXR5IiwxKS5kdXJhdGlvbigyMDApLGV0PSEwKX1mdW5jdGlvbiBwKHQsZSxyKXt2YXIgbixpLG87Zm9yKG49MDtuPHQubGVuZ3RoO24rKylpPXRbbl0saS5maXhlZHJhbmdlfHwobz1pLnJhbmdlLGkucmFuZ2U9W29bMF0rKG9bMV0tb1swXSkqZSxvWzBdKyhvWzFdLW9bMF0pKnJdKX1mdW5jdGlvbiB2KGUscil7cmV0dXJuIE1hdGgubWluKFEuaCxRLncpPDIqQj8oMj09PXImJmsoKSxtKHQpKTooInh5IiE9PXJ0JiYieCIhPT1ydHx8cChJLFEubC9GLFEuci9GKSwieHkiIT09cnQmJiJ5IiE9PXJ0fHxwKE4sKEQtUS5iKS9ELChELVEudCkvRCksbSh0KSxMKHJ0KSx2b2lkKGomJnQuZGF0YSYmdC5fY29udGV4dC5zaG93VGlwcyYmKHcuTGliLm5vdGlmaWVyKCJEb3VibGUtY2xpY2sgdG88YnI+em9vbSBiYWNrIG91dCIsImxvbmciKSxqPSExKSkpfWZ1bmN0aW9uIHkoZSxyKXt2YXIgbj0xPT09KGErcykubGVuZ3RoO2lmKGUpTCgpO2Vsc2UgaWYoMiE9PXJ8fG4pe2lmKDE9PT1yJiZuKXt2YXIgaT1hP05bMF06SVswXSxvPSJzIj09PWF8fCJ3Ij09PXM/MDoxLGw9aS5fbmFtZSsiLnJhbmdlWyIrbysiXSIsYz1nKGksbyksdT0ibGVmdCIsaD0ibWlkZGxlIjtpZihpLmZpeGVkcmFuZ2UpcmV0dXJuO2E/KGg9Im4iPT09YT8idG9wIjoiYm90dG9tIiwicmlnaHQiPT09aS5zaWRlJiYodT0icmlnaHQiKSk6ImUiPT09cyYmKHU9InJpZ2h0IiksWC5jYWxsKHcudXRpbC5tYWtlRWRpdGFibGUsbnVsbCx7aW1tZWRpYXRlOiEwLGJhY2tncm91bmQ6Ui5wYXBlcl9iZ2NvbG9yLHRleHQ6U3RyaW5nKGMpLGZpbGw6aS50aWNrZm9udD9pLnRpY2tmb250LmNvbG9yOiIjNDQ0Iixob3Jpem9udGFsQWxpZ246dSx2ZXJ0aWNhbEFsaWduOmh9KS5vbigiZWRpdCIsZnVuY3Rpb24oZSl7dmFyIHI9ImNhdGVnb3J5Ij09PWkudHlwZT9pLmMybChlKTppLmQybChlKTt2b2lkIDAhPT1yJiZ3LnJlbGF5b3V0KHQsbCxyKX0pfX1lbHNlIGsoKX1mdW5jdGlvbiBiKGUpe2Z1bmN0aW9uIHIodCxlLHIpe2lmKCF0LmZpeGVkcmFuZ2Upe2ModC5yYW5nZSk7dmFyIG49dC5yYW5nZSxpPW5bMF0rKG5bMV0tblswXSkqZTt0LnJhbmdlPVtpKyhuWzBdLWkpKnIsaSsoblsxXS1pKSpyXX19aWYodC5fY29udGV4dC5zY3JvbGxab29tfHxSLl9lbmFibGVzY3JvbGx6b29tKXt2YXIgbj10LnF1ZXJ5U2VsZWN0b3IoIi5wbG90bHkiKTtpZighKG4uc2Nyb2xsSGVpZ2h0LW4uY2xpZW50SGVpZ2h0PjEwfHxuLnNjcm9sbFdpZHRoLW4uY2xpZW50V2lkdGg+MTApKXtjbGVhclRpbWVvdXQoYXQpO3ZhciBpPS1lLmRlbHRhWTtpZihpc0Zpbml0ZShpKXx8KGk9ZS53aGVlbERlbHRhLzEwKSwhaXNGaW5pdGUoaSkpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coImRpZCBub3QgZmluZCB3aGVlbCBtb3Rpb24gYXR0cmlidXRlcyIsZSk7dmFyIG8sbD1NYXRoLmV4cCgtTWF0aC5taW4oTWF0aC5tYXgoaSwtMjApLDIwKS8xMDApLHU9bHQuZHJhZ2xheWVyLnNlbGVjdCgiLm5zZXdkcmFnIikubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9KGUuY2xpZW50WC11LmxlZnQpL3Uud2lkdGgsZj1vdFswXStvdFsyXSpoLGQ9KHUuYm90dG9tLWUuY2xpZW50WSkvdS5oZWlnaHQscD1vdFsxXStvdFszXSooMS1kKTtpZihzKXtmb3Iobz0wO288SS5sZW5ndGg7bysrKXIoSVtvXSxoLGwpO290WzJdKj1sLG90WzBdPWYtb3RbMl0qaH1pZihhKXtmb3Iobz0wO288Ti5sZW5ndGg7bysrKXIoTltvXSxkLGwpO290WzNdKj1sLG90WzFdPXAtb3RbM10qKDEtZCl9cmV0dXJuIFMob3QpLEEoYSxzKSxhdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b3Q9WzAsMCxGLERdLEwoKX0sc3QpLHcuTGliLnBhdXNlRXZlbnQoZSl9fX1mdW5jdGlvbiBfKHQsZSl7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZml4ZWRyYW5nZXx8KG4ucmFuZ2U9W24uX3JbMF0tZS9uLl9tLG4uX3JbMV0tZS9uLl9tXSl9fWZ1bmN0aW9uIG4odCl7cmV0dXJuIDEtKHQ+PTA/TWF0aC5taW4odCwuOSk6MS8oMS9NYXRoLm1heCh0LC0uMykrMy4yMjIpKX1mdW5jdGlvbiBpKHQsZSxyKXtmb3IodmFyIGk9MS1lLG89MCxhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBzPXRbYV07cy5maXhlZHJhbmdlfHwobz1hLHMucmFuZ2VbZV09cy5fcltpXSsocy5fcltlXS1zLl9yW2ldKS9uKHIvcy5fbGVuZ3RoKSl9cmV0dXJuIHRbb10uX2xlbmd0aCoodFtvXS5fcltlXS10W29dLnJhbmdlW2VdKS8odFtvXS5fcltlXS10W29dLl9yW2ldKX1yZXR1cm4iZXciPT09cXx8Im5zIj09PUg/KHEmJnIoSSx0KSxIJiZyKE4sZSksUyhbcT8tdDowLEg/LWU6MCxGLERdKSx2b2lkIEEoSCxxKSk6KCJ3Ij09PXE/dD1pKEksMCx0KToiZSI9PT1xP3Q9aShJLDEsLXQpOnF8fCh0PTApLCJuIj09PUg/ZT1pKE4sMSxlKToicyI9PT1IP2U9aShOLDAsLWUpOkh8fChlPTApLFMoWyJ3Ij09PXE/dDowLCJuIj09PUg/ZTowLEYtdCxELWVdKSx2b2lkIEEoSCxxKSl9ZnVuY3Rpb24gQShlLHIpe2Z1bmN0aW9uIG4odCl7Zm9yKG89MDtvPHQubGVuZ3RoO28rKyl0W29dLmZpeGVkcmFuZ2V8fGEucHVzaCh0W29dLl9pZCl9ZnVuY3Rpb24gaShuLGkpe3ZhciBzO2ZvcihvPTA7bzxuLmxlbmd0aDtvKyspcz1uW29dLChyJiYtMSE9PWEuaW5kZXhPZihzLnhyZWYpfHxlJiYtMSE9PWEuaW5kZXhPZihzLnlyZWYpKSYmaS5kcmF3KHQsbyl9dmFyIG8sYT1bXTtmb3IociYmbihJKSxlJiZuKE4pLG89MDtvPGEubGVuZ3RoO28rKyl3LkF4ZXMuZG9UaWNrcyh0LGFbb10sITApO2koUi5hbm5vdGF0aW9uc3x8W10sdy5Bbm5vdGF0aW9ucyksaShSLnNoYXBlc3x8W10sdy5TaGFwZXMpfWZ1bmN0aW9uIGsoKXt2YXIgZSxyLG49dC5fY29udGV4dC5kb3VibGVDbGljayxpPShxP0k6W10pLmNvbmNhdChIP046W10pLG89e307aWYoImF1dG9zaXplIj09PW4pZm9yKHI9MDtyPGkubGVuZ3RoO3IrKyllPWlbcl0sZS5maXhlZHJhbmdlfHwob1tlLl9uYW1lKyIuYXV0b3JhbmdlIl09ITApO2Vsc2UgaWYoInJlc2V0Ij09PW4pZm9yKHI9MDtyPGkubGVuZ3RoO3IrKyllPWlbcl0sZS5fcmFuZ2VJbml0aWFsP29bZS5fbmFtZSsiLnJhbmdlIl09ZS5fcmFuZ2VJbml0aWFsLnNsaWNlKCk6b1tlLl9uYW1lKyIuYXV0b3JhbmdlIl09ITA7ZWxzZSBpZigicmVzZXQrYXV0b3NpemUiPT09bilmb3Iocj0wO3I8aS5sZW5ndGg7cisrKWU9aVtyXSxlLmZpeGVkcmFuZ2V8fCh2b2lkIDA9PT1lLl9yYW5nZUluaXRpYWx8fGUucmFuZ2VbMF09PT1lLl9yYW5nZUluaXRpYWxbMF0mJmUucmFuZ2VbMV09PT1lLl9yYW5nZUluaXRpYWxbMV0/b1tlLl9uYW1lKyIuYXV0b3JhbmdlIl09ITA6b1tlLl9uYW1lKyIucmFuZ2UiXT1lLl9yYW5nZUluaXRpYWwuc2xpY2UoKSk7dC5lbWl0KCJwbG90bHlfZG91YmxlY2xpY2siLG51bGwpLHcucmVsYXlvdXQodCxvKX1mdW5jdGlvbiBMKGUpe2Zvcih2YXIgcj17fSxuPTA7bjxWLmxlbmd0aDtuKyspe3ZhciBpPVZbbl07ZSYmLTE9PT1lLmluZGV4T2YoaS5faWQuY2hhckF0KDApKXx8KGkuX3JbMF0hPT1pLnJhbmdlWzBdJiYocltpLl9uYW1lKyIucmFuZ2VbMF0iXT1pLnJhbmdlWzBdKSxpLl9yWzFdIT09aS5yYW5nZVsxXSYmKHJbaS5fbmFtZSsiLnJhbmdlWzFdIl09aS5yYW5nZVsxXSksaS5yYW5nZT1pLl9yLnNsaWNlKCkpfVMoWzAsMCxGLERdKSx3LnJlbGF5b3V0KHQscil9ZnVuY3Rpb24gUyh0KXt2YXIgZSxyLG4saSxvLGwsYz1SLl9wbG90cyx1PU9iamVjdC5rZXlzKGMpO2ZvcihlPTA7ZTx1Lmxlbmd0aDtlKyspaWYocj1jW3VbZV1dLG49ci54KCksaT1yLnkoKSxvPXMmJi0xIT09SS5pbmRleE9mKG4pJiYhbi5maXhlZHJhbmdlLGw9YSYmLTEhPT1OLmluZGV4T2YoaSkmJiFpLmZpeGVkcmFuZ2Usb3x8bCl7dmFyIGg9WzAsMCxuLl9sZW5ndGgsaS5fbGVuZ3RoXTtvJiYoaFswXT10WzBdLGhbMl09dFsyXSksbCYmKGhbMV09dFsxXSxoWzNdPXRbM10pLHIucGxvdC5hdHRyKCJ2aWV3Qm94IixoLmpvaW4oIiAiKSl9fXZhciBDLFAseixSPXQuX2Z1bGxMYXlvdXQsTz1bZV0uY29uY2F0KGEmJnM/ZS5vdmVybGF5czpbXSksST1bZS54KCldLE49W2UueSgpXSxGPUlbMF0uX2xlbmd0aCxEPU5bMF0uX2xlbmd0aCxCPVQuTUlORFJBRyxVPVQuTUlOWk9PTTtmb3IoQz0xO0M8Ty5sZW5ndGg7QysrKVA9T1tDXS54KCksej1PW0NdLnkoKSwtMT09PUkuaW5kZXhPZihQKSYmSS5wdXNoKFApLC0xPT09Ti5pbmRleE9mKHopJiZOLnB1c2goeik7dmFyIFY9SS5jb25jYXQoTikscT1sKEkscyksSD1sKE4sYSksRz1kKEgrcSxSLmRyYWdtb2RlKSxZPWErcysiZHJhZyIsWD1lLmRyYWdsYXllci5zZWxlY3RBbGwoIi4iK1kpLmRhdGEoWzBdKTtYLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgiZHJhZyIsITApLmNsYXNzZWQoWSwhMCkuc3R5bGUoe2ZpbGw6InRyYW5zcGFyZW50Iiwic3Ryb2tlLXdpZHRoIjowfSkuYXR0cigiZGF0YS1zdWJwbG90IixlLmlkKSxYLmNhbGwody5EcmF3aW5nLnNldFJlY3QscixuLGksbykuY2FsbChFLnNldEN1cnNvcixHKTt2YXIgVz1YLm5vZGUoKTtpZighSCYmIXEpcmV0dXJuIFcub25tb3VzZWRvd249bnVsbCxXLnN0eWxlLnBvaW50ZXJFdmVudHM9YStzPT09Im5zZXciPyJhbGwiOiJub25lIixXO3ZhciBaPXtlbGVtZW50OlcsZ2Q6dCxwbG90aW5mbzplLHhheGVzOkkseWF4ZXM6Tixkb3VibGVjbGljazprLHByZXBGbjpmdW5jdGlvbihlLHIsbil7dmFyIGk9dC5fZnVsbExheW91dC5kcmFnbW9kZTthK3M9PT0ibnNldyI/ZS5zaGlmdEtleSYmKGk9InBhbiI9PT1pPyJ6b29tIjoicGFuIik6aT0icGFuIiwibGFzc28iPT09aT9aLm1pbkRyYWc9MTpaLm1pbkRyYWc9dm9pZCAwLCJ6b29tIj09PWk/KFoubW92ZUZuPWYsWi5kb25lRm49dix1KGUscixuKSk6InBhbiI9PT1pPyhaLm1vdmVGbj1fLFouZG9uZUZuPXksaCgpKToic2VsZWN0IiE9PWkmJiJsYXNzbyIhPT1pfHxNKGUscixuLFosaSl9fTtFLmRyYWdFbGVtZW50KFopO3ZhciAkLEssUSxKLHR0LGV0LHJ0LG50LGl0LG90PVswLDAsRixEXSxhdD1udWxsLHN0PTMwMCxsdD1lLm1haW5wbG90P1IuX3Bsb3RzW2UubWFpbnBsb3RdOmU7cmV0dXJuIGEubGVuZ3RoKnMubGVuZ3RoIT09MSYmKHZvaWQgMCE9PVcub253aGVlbD9XLm9ud2hlZWw9Yjp2b2lkIDAhPT1XLm9ubW91c2V3aGVlbCYmKFcub25tb3VzZXdoZWVsPWIpKSxXfWZ1bmN0aW9uIGcodCxlKXt2YXIgcixuPXQucmFuZ2VbZV0saT1NYXRoLmFicyhuLXQucmFuZ2VbMS1lXSk7cmV0dXJuImRhdGUiPT09dC50eXBlP3cuTGliLm1zMkRhdGVUaW1lKG4saSk6ImxvZyI9PT10LnR5cGU/KHI9TWF0aC5jZWlsKE1hdGgubWF4KDAsLU1hdGgubG9nKGkpL01hdGguTE4xMCkpKzMsYi5mb3JtYXQoIi4iK3IrImciKShNYXRoLnBvdygxMCxuKSkpOihyPU1hdGguZmxvb3IoTWF0aC5sb2coTWF0aC5hYnMobikpL01hdGguTE4xMCktTWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApKzQsYi5mb3JtYXQoIi4iK1N0cmluZyhyKSsiZyIpKG4pKX1mdW5jdGlvbiB2KHQpe3QuX2RyYWdnaW5nPSExLHQuX3JlcGxvdFBlbmRpbmcmJncucGxvdCh0KX1mdW5jdGlvbiBtKHQpe2Iuc2VsZWN0KHQpLnNlbGVjdEFsbCgiLnpvb21ib3gsLmpzLXpvb21ib3gtYmFja2Ryb3AsLmpzLXpvb21ib3gtbWVudSwuem9vbWJveC1jb3JuZXJzIikucmVtb3ZlKCl9ZnVuY3Rpb24geSgpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJkcmFnY292ZXIiO3ZhciBlPXQuc3R5bGU7cmV0dXJuIGUucG9zaXRpb249ImZpeGVkIixlLmxlZnQ9MCxlLnJpZ2h0PTAsZS50b3A9MCxlLmJvdHRvbT0wLGUuekluZGV4PTk5OTk5OTk5OSxlLmJhY2tncm91bmQ9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksdH12YXIgYj10KCJkMyIpLHg9dCgidGlueWNvbG9yMiIpLF89dCgiZmFzdC1pc251bWVyaWMiKSx3PXQoIi4uLy4uL3Bsb3RseSIpLEE9dCgiLi4vLi4vbGliIiksaz10KCIuLi8uLi9saWIvZXZlbnRzIiksTT10KCIuL3NlbGVjdCIpLFQ9dCgiLi9jb25zdGFudHMiKSxFPWUuZXhwb3J0cz17fTtFLmxheW91dEF0dHJpYnV0ZXM9e2RyYWdtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ6b29tIiwicGFuIiwic2VsZWN0IiwibGFzc28iLCJvcmJpdCIsInR1cm50YWJsZSJdLGRmbHQ6Inpvb20ifSxob3Zlcm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIngiLCJ5IiwiY2xvc2VzdCIsITFdfX0sRS5zdXBwbHlMYXlvdXREZWZhdWx0cz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBBLmNvZXJjZSh0LGUsRS5sYXlvdXRBdHRyaWJ1dGVzLHIsbil9bigiZHJhZ21vZGUiKTt2YXIgaTtpZihlLl9oYXNDYXJ0ZXNpYW4pe3ZhciBvPWUuX2lzSG9yaXo9RS5pc0hvcml6KHIpO2k9bz8ieSI6IngifWVsc2UgaT0iY2xvc2VzdCI7bigiaG92ZXJtb2RlIixpKX0sRS5pc0hvcml6PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hMCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07aWYoImgiIT09bi5vcmllbnRhdGlvbil7ZT0hMTticmVha319cmV0dXJuIGV9LEUuaW5pdD1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2lmKGUuX2hhc0NhcnRlc2lhbiYmIXQuX2NvbnRleHQuc3RhdGljUGxvdCl7dmFyIHI9T2JqZWN0LmtleXMoZS5fcGxvdHN8fHt9KS5zb3J0KGZ1bmN0aW9uKHQscil7aWYoKGUuX3Bsb3RzW3RdLm1haW5wbG90JiYhMCk9PT0oZS5fcGxvdHNbcl0ubWFpbnBsb3QmJiEwKSl7dmFyIG49dC5zcGxpdCgieSIpLGk9ci5zcGxpdCgieSIpO3JldHVybiBuWzBdPT09aVswXT9OdW1iZXIoblsxXXx8MSktTnVtYmVyKGlbMV18fDEpOk51bWJlcihuWzBdfHwxKS1OdW1iZXIoaVswXXx8MSl9cmV0dXJuIGUuX3Bsb3RzW3RdLm1haW5wbG90PzE6LTF9KTtyLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49ZS5fcGxvdHNbcl07aWYoZS5faGFzQ2FydGVzaWFuKXt2YXIgaT1uLngoKSxvPW4ueSgpLGE9KGkuX2xpbmVwb3NpdGlvbnNbcl18fFtdKVszXSxzPShvLl9saW5lcG9zaXRpb25zW3JdfHxbXSlbM10sbD1ULkRSQUdHRVJTSVpFO2lmKF8oYSkmJiJ0b3AiPT09aS5zaWRlJiYoYS09bCksXyhzKSYmInJpZ2h0IiE9PW8uc2lkZSYmKHMtPWwpLCFuLm1haW5wbG90KXt2YXIgYz1wKHQsbiwwLDAsaS5fbGVuZ3RoLG8uX2xlbmd0aCwibnMiLCJldyIpO2Mub25tb3VzZW1vdmU9ZnVuY3Rpb24obil7RS5ob3Zlcih0LG4sciksZS5fbGFzdGhvdmVyPWMsZS5faG92ZXJzdWJwbG90PXJ9LGMub25tb3VzZW91dD1mdW5jdGlvbihlKXt0Ll9kcmFnZ2luZ3x8RS51bmhvdmVyKHQsZSl9LGMub25jbGljaz1mdW5jdGlvbihlKXtFLmNsaWNrKHQsZSl9LHAodCxuLC1sLC1sLGwsbCwibiIsInciKSxwKHQsbixpLl9sZW5ndGgsLWwsbCxsLCJuIiwiZSIpLHAodCxuLC1sLG8uX2xlbmd0aCxsLGwsInMiLCJ3IikscCh0LG4saS5fbGVuZ3RoLG8uX2xlbmd0aCxsLGwsInMiLCJlIil9XyhhKSYmKCJmcmVlIj09PWkuYW5jaG9yJiYoYS09ZS5fc2l6ZS5oKigxLW8uZG9tYWluWzFdKSkscCh0LG4sLjEqaS5fbGVuZ3RoLGEsLjgqaS5fbGVuZ3RoLGwsIiIsImV3IikscCh0LG4sMCxhLC4xKmkuX2xlbmd0aCxsLCIiLCJ3IikscCh0LG4sLjkqaS5fbGVuZ3RoLGEsLjEqaS5fbGVuZ3RoLGwsIiIsImUiKSksXyhzKSYmKCJmcmVlIj09PW8uYW5jaG9yJiYocy09ZS5fc2l6ZS53KmkuZG9tYWluWzBdKSxwKHQsbixzLC4xKm8uX2xlbmd0aCxsLC44Km8uX2xlbmd0aCwibnMiLCIiKSxwKHQsbixzLC45Km8uX2xlbmd0aCxsLC4xKm8uX2xlbmd0aCwicyIsIiIpLHAodCxuLHMsMCxsLC4xKm8uX2xlbmd0aCwibiIsIiIpKX19KTt2YXIgbj1lLl9ob3ZlcmxheWVyLm5vZGUoKTtuLm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHIpe3IudGFyZ2V0PWUuX2xhc3Rob3ZlcixFLmhvdmVyKHQscixlLl9ob3ZlcnN1YnBsb3QpfSxuLm9uY2xpY2s9ZnVuY3Rpb24ocil7ci50YXJnZXQ9ZS5fbGFzdGhvdmVyLEUuY2xpY2sodCxyKX0sbi5vbm1vdXNlZG93bj1mdW5jdGlvbih0KXtlLl9sYXN0aG92ZXIub25tb3VzZWRvd24odCl9fX07dmFyIEw9VC5ZQU5HTEUsUz1NYXRoLlBJKkwvMTgwLEM9MS9NYXRoLnNpbihTKSxQPU1hdGguY29zKFMpLHo9TWF0aC5zaW4oUyksUj1ULkhPVkVSQVJST1dTSVpFLE89VC5IT1ZFUlRFWFRQQUQsST1ULkhPVkVSRk9OVFNJWkUsTj1ULkhPVkVSRk9OVDtFLmhvdmVyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJih0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpKSx2b2lkIDA9PT10Ll9sYXN0SG92ZXJUaW1lJiYodC5fbGFzdEhvdmVyVGltZT0wKSx2b2lkIDAhPT10Ll9ob3ZlclRpbWVyJiYoY2xlYXJUaW1lb3V0KHQuX2hvdmVyVGltZXIpLHQuX2hvdmVyVGltZXI9dm9pZCAwKSxEYXRlLm5vdygpPnQuX2xhc3RIb3ZlclRpbWUrVC5IT1ZFUk1JTlRJTUU/KGEodCxlLHIpLHZvaWQodC5fbGFzdEhvdmVyVGltZT1EYXRlLm5vdygpKSk6dm9pZCh0Ll9ob3ZlclRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXthKHQsZSxyKSx0Ll9sYXN0SG92ZXJUaW1lPURhdGUubm93KCksdC5faG92ZXJUaW1lcj12b2lkIDB9LFQuSE9WRVJNSU5USU1FKSl9LEUudW5ob3Zlcj1mdW5jdGlvbih0LGUscil7InN0cmluZyI9PXR5cGVvZiB0JiYodD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSksdC5faG92ZXJUaW1lciYmKGNsZWFyVGltZW91dCh0Ll9ob3ZlclRpbWVyKSx0Ll9ob3ZlclRpbWVyPXZvaWQgMCksZih0LGUscil9LEUuZ2V0RGlzdGFuY2VGdW5jdGlvbj1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4iY2xvc2VzdCI9PT10P258fG8oZSxyKToieCI9PT10P2U6cn0sRS5nZXRDbG9zZXN0PWZ1bmN0aW9uKHQsZSxyKXtpZihyLmluZGV4IT09ITEpci5pbmRleD49MCYmci5pbmRleDx0Lmxlbmd0aD9yLmRpc3RhbmNlPTA6ci5pbmRleD0hMTtlbHNlIGZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT1lKHRbbl0pO2k8ci5kaXN0YW5jZSYmKHIuaW5kZXg9bixyLmRpc3RhbmNlPWkpfXJldHVybiByfSxFLmxvbmVIb3Zlcj1mdW5jdGlvbih0LGUpe3ZhciByPXtjb2xvcjp0LmNvbG9yfHx3LkNvbG9yLmRlZmF1bHRMaW5lLHgwOnQueDB8fHQueHx8MCx4MTp0LngxfHx0Lnh8fDAseTA6dC55MHx8dC55fHwwLHkxOnQueTF8fHQueXx8MCx4TGFiZWw6dC54TGFiZWwseUxhYmVsOnQueUxhYmVsLHpMYWJlbDp0LnpMYWJlbCx0ZXh0OnQudGV4dCxuYW1lOnQubmFtZSxpZGVhbEFsaWduOnQuaWRlYWxBbGlnbix0cmFjZTp7aW5kZXg6MCxob3ZlcmluZm86IiJ9LHhhOntfb2Zmc2V0OjB9LHlhOntfb2Zmc2V0OjB9LGluZGV4OjB9LG49Yi5zZWxlY3QoZS5jb250YWluZXIpLGk9ZS5vdXRlckNvbnRhaW5lcj9iLnNlbGVjdChlLm91dGVyQ29udGFpbmVyKTpuLG89e2hvdmVybW9kZToiY2xvc2VzdCIscm90YXRlTGFiZWxzOiExLGJnQ29sb3I6ZS5iZ0NvbG9yfHx3LkNvbG9yLmJhY2tncm91bmQsY29udGFpbmVyOm4sb3V0ZXJDb250YWluZXI6aX0sYT1sKFtyXSxvKTtyZXR1cm4gdShhLG8ucm90YXRlTGFiZWxzKSxhLm5vZGUoKX0sRS5sb25lVW5ob3Zlcj1mdW5jdGlvbih0KXt2YXIgZT10IGluc3RhbmNlb2YgYi5zZWxlY3Rpb24/dDpiLnNlbGVjdCh0KTtlLnNlbGVjdEFsbCgiZy5ob3ZlcnRleHQiKS5yZW1vdmUoKX0sRS5jbGljaz1mdW5jdGlvbih0LGUpe3QuX2hvdmVyZGF0YSYmZSYmZS50YXJnZXQmJih0LmVtaXQoInBsb3RseV9jbGljayIse3BvaW50czp0Ll9ob3ZlcmRhdGF9KSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9O3ZhciBqPSEwO0UuZHJhZ0FsaWduPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG89KHQtcikvKG4tciksYT1vK2UvKG4tcikscz0obythKS8yO3JldHVybiJsZWZ0Ij09PWl8fCJib3R0b20iPT09aT9vOiJjZW50ZXIiPT09aXx8Im1pZGRsZSI9PT1pP3M6InJpZ2h0Ij09PWl8fCJ0b3AiPT09aT9hOjIvMy1zPm8/bzphPjQvMy1zP2E6c307dmFyIEY9W1sic3ctcmVzaXplIiwicy1yZXNpemUiLCJzZS1yZXNpemUiXSxbInctcmVzaXplIiwibW92ZSIsImUtcmVzaXplIl0sWyJudy1yZXNpemUiLCJuLXJlc2l6ZSIsIm5lLXJlc2l6ZSJdXTtFLmRyYWdDdXJzb3JzPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0PSJsZWZ0Ij09PXI/MDoiY2VudGVyIj09PXI/MToicmlnaHQiPT09cj8yOncuTGliLmNvbnN0cmFpbihNYXRoLmZsb29yKDMqdCksMCwyKSxlPSJib3R0b20iPT09bj8wOiJtaWRkbGUiPT09bj8xOiJ0b3AiPT09bj8yOncuTGliLmNvbnN0cmFpbihNYXRoLmZsb29yKDMqZSksMCwyKSxGW2VdW3RdfSxFLmRyYWdFbGVtZW50PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGMuX2RyYWdnZWQ9ITEsYy5fZHJhZ2dpbmc9ITAsaT1lLmNsaWVudFgsbz1lLmNsaWVudFksbD1lLnRhcmdldCxhPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGEtYy5fbW91c2VEb3duVGltZTxoP3UrPTE6KHU9MSxjLl9tb3VzZURvd25UaW1lPWEpLHQucHJlcEZuJiZ0LnByZXBGbihlLGksbykscz15KCkscy5vbm1vdXNlbW92ZT1yLHMub25tb3VzZXVwPW4scy5vbm1vdXNlb3V0PW4scy5zdHlsZS5jdXJzb3I9d2luZG93LmdldENvbXB1dGVkU3R5bGUodC5lbGVtZW50KS5jdXJzb3Isdy5MaWIucGF1c2VFdmVudChlKX1mdW5jdGlvbiByKGUpe3ZhciByPWUuY2xpZW50WC1pLG49ZS5jbGllbnRZLW8sYT10Lm1pbkRyYWd8fFQuTUlORFJBRztyZXR1cm4gTWF0aC5hYnMocik8YSYmKHI9MCksTWF0aC5hYnMobik8YSYmKG49MCksKHJ8fG4pJiYoYy5fZHJhZ2dlZD0hMCxFLnVuaG92ZXIoYykpLHQubW92ZUZuJiZ0Lm1vdmVGbihyLG4sYy5fZHJhZ2dlZCksdy5MaWIucGF1c2VFdmVudChlKX1mdW5jdGlvbiBuKGUpe2lmKHMub25tb3VzZW1vdmU9bnVsbCxzLm9ubW91c2V1cD1udWxsLHMub25tb3VzZW91dD1udWxsLHcuTGliLnJlbW92ZUVsZW1lbnQocyksIWMuX2RyYWdnaW5nKXJldHVybiB2b2lkKGMuX2RyYWdnZWQ9ITEpO2lmKGMuX2RyYWdnaW5nPSExLChuZXcgRGF0ZSkuZ2V0VGltZSgpLWMuX21vdXNlRG93blRpbWU+aCYmKHU9TWF0aC5tYXgodS0xLDEpKSx0LmRvbmVGbiYmdC5kb25lRm4oYy5fZHJhZ2dlZCx1KSwhYy5fZHJhZ2dlZCl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7ci5pbml0RXZlbnQoImNsaWNrIiwhMCwhMCksbC5kaXNwYXRjaEV2ZW50KHIpfXJldHVybiB2KGMpLGMuX2RyYWdnZWQ9ITEsdy5MaWIucGF1c2VFdmVudChlKX12YXIgaSxvLGEscyxsLGM9dy5MaWIuZ2V0UGxvdERpdih0LmVsZW1lbnQpfHx7fSx1PTEsaD1ULkRCTENMSUNLREVMQVk7Yy5fbW91c2VEb3duVGltZXx8KGMuX21vdXNlRG93blRpbWU9MCksdC5lbGVtZW50Lm9ubW91c2Vkb3duPWUsdC5lbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHM9ImFsbCJ9LEUuc2V0Q3Vyc29yPWZ1bmN0aW9uKHQsZSl7KHQuYXR0cigiY2xhc3MiKXx8IiIpLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXswPT09ZS5pbmRleE9mKCJjdXJzb3ItIikmJnQuY2xhc3NlZChlLCExKX0pLGUmJnQuY2xhc3NlZCgiY3Vyc29yLSIrZSwhMCl9LEUuaW5ib3g9ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD50KmV8fDA9PT10P1QuTUFYRElTVCooLjYtLjMvTWF0aC5tYXgoMyxNYXRoLmFicyh0LWUpKSk6MS8wfX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vbGliL2V2ZW50cyI6MzY4LCIuLi8uLi9wbG90bHkiOjM5MCwiLi9jb25zdGFudHMiOjM5NywiLi9zZWxlY3QiOjQwMyxkMzo3MCwiZmFzdC1pc251bWVyaWMiOjc0LHRpbnljb2xvcjI6MjMxfV0sMzk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vcGxvdHMiKTtyLm5hbWU9ImNhcnRlc2lhbiIsci5hdHRyPVsieGF4aXMiLCJ5YXhpcyJdLHIuaWRSb290PVsieCIsInkiXSxyLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksci5pZFJlZ2V4PXt4Oi9eeChbMi05XXxbMS05XVswLTldKyk/JC8seTovXnkoWzItOV18WzEtOV1bMC05XSspPyQvfSxyLmF0dHJSZWdleD17eDovXnhheGlzKFsyLTldfFsxLTldWzAtOV0rKT8kLyx5Oi9eeWF4aXMoWzItOV18WzEtOV1bMC05XSspPyQvfSxyLnBsb3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl0sbz1pWzBdLnRyYWNlO28ueGF4aXMrby55YXhpcz09PWUmJnIucHVzaChpKX1yZXR1cm4gcn1mdW5jdGlvbiByKHQsZSl7Zm9yKHZhciByPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXSxvPWlbMF0udHJhY2U7by5fbW9kdWxlPT09ZSYmby52aXNpYmxlPT09ITAmJnIucHVzaChpKX1yZXR1cm4gcn1mb3IodmFyIG89dC5fZnVsbExheW91dCxhPWkuZ2V0U3VicGxvdElkcyhvLCJjYXJ0ZXNpYW4iKSxzPXQuY2FsY2RhdGEsbD10Ll9tb2R1bGVzLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIHU9YVtjXSxoPW8uX3Bsb3RzW3VdLGY9ZShzLHUpO2gucGxvdCYmaC5wbG90LnNlbGVjdEFsbCgiZy50cmFjZSIpLnJlbW92ZSgpO2Zvcih2YXIgZD0wO2Q8bC5sZW5ndGg7ZCsrKXt2YXIgcD1sW2RdO2lmKCJjYXJ0ZXNpYW4iPT09cC5iYXNlUGxvdE1vZHVsZS5uYW1lJiYicGllIiE9PXAubmFtZSl7dmFyIGc9cihmLHApO3AucGxvdCh0LGgsZyksbi5tYXJrVGltZSgiZG9uZSAiKyhnWzBdJiZnWzBdWzBdLnRyYWNlLnR5cGUpKX19fWlmKG8uX2hhc1BpZSl7dmFyIHY9aS5nZXRNb2R1bGUoInBpZSIpLG09cihzLHYpO20ubGVuZ3RoJiZ2LnBsb3QodCxtKX19LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7bi5faGFzUGllJiYhZS5faGFzUGllJiZuLl9waWVsYXllci5zZWxlY3RBbGwoImcudHJhY2UiKS5yZW1vdmUoKX19LHsiLi4vLi4vbGliIjozNzMsIi4uL3Bsb3RzIjo0MzcsIi4vYXR0cmlidXRlcyI6MzkyfV0sNDAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vaW5kZXgiKSxpPXQoIi4uL2ZvbnRfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxzPXQoIi4uLy4uL2NvbXBvbmVudHMvcmFuZ2VzbGlkZXIvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9yYW5nZXNlbGVjdG9yL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e3RpdGxlOnt2YWxUeXBlOiJzdHJpbmcifSx0aXRsZWZvbnQ6YSh7fSxpLHt9KSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyItIiwibGluZWFyIiwibG9nIiwiZGF0ZSIsImNhdGVnb3J5Il0sZGZsdDoiLSJ9LGF1dG9yYW5nZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMCwhMSwicmV2ZXJzZWQiXSxkZmx0OiEwfSxyYW5nZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIm5vcm1hbCIsInRvemVybyIsIm5vbm5lZ2F0aXZlIl0sZGZsdDoibm9ybWFsIn0scmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIn0se3ZhbFR5cGU6Im51bWJlciJ9XX0scmFuZ2VzbGlkZXI6cyxyYW5nZXNlbGVjdG9yOmwsZml4ZWRyYW5nZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sdGlja21vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJsaW5lYXIiLCJhcnJheSJdfSxudGlja3M6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MH0sdGljazA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowfSxkdGljazp7dmFsVHlwZToiYW55IixkZmx0OjF9LHRpY2t2YWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sdGlja3RleHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx0aWNrczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsib3V0c2lkZSIsImluc2lkZSIsIiJdfSxtaXJyb3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsInRpY2tzIiwhMSwiYWxsIiwiYWxsdGlja3MiXSxkZmx0OiExfSx0aWNrbGVuOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6NX0sdGlja3dpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sdGlja2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpvLmRlZmF1bHRMaW5lfSxzaG93dGlja2xhYmVsczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sdGlja2ZvbnQ6YSh7fSxpLHt9KSx0aWNrYW5nbGU6e3ZhbFR5cGU6ImFuZ2xlIixkZmx0OiJhdXRvIn0sdGlja3ByZWZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIifSxzaG93dGlja3ByZWZpeDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwibm9uZSJdLGRmbHQ6ImFsbCJ9LHRpY2tzdWZmaXg6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIn0sc2hvd3RpY2tzdWZmaXg6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwifSxzaG93ZXhwb25lbnQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwifSxleHBvbmVudGZvcm1hdDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9uZSIsImUiLCJFIiwicG93ZXIiLCJTSSIsIkIiXSxkZmx0OiJCIn0sdGlja2Zvcm1hdDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIifSxob3ZlcmZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIifSxzaG93bGluZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbGluZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpvLmRlZmF1bHRMaW5lfSxsaW5ld2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfSxzaG93Z3JpZDp7dmFsVHlwZToiYm9vbGVhbiJ9LGdyaWRjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6by5saWdodExpbmV9LGdyaWR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LHplcm9saW5lOnt2YWxUeXBlOiJib29sZWFuIn0semVyb2xpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6by5kZWZhdWx0TGluZX0semVyb2xpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjF9LGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJlZSIsbi5pZFJlZ2V4LngudG9TdHJpbmcoKSxuLmlkUmVnZXgueS50b1N0cmluZygpXX0sc2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il19LG92ZXJsYXlpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZyZWUiLG4uaWRSZWdleC54LnRvU3RyaW5nKCksbi5pZFJlZ2V4LnkudG9TdHJpbmcoKV19LGRvbWFpbjp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxfSx7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MX1dLGRmbHQ6WzAsMV19LHBvc2l0aW9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MH0sX2RlcHJlY2F0ZWQ6e2F1dG90aWNrOnt2YWxUeXBlOiJib29sZWFuIn19fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjMwMCwiLi4vLi4vY29tcG9uZW50cy9yYW5nZXNlbGVjdG9yL2F0dHJpYnV0ZXMiOjM0MCwiLi4vLi4vY29tcG9uZW50cy9yYW5nZXNsaWRlci9hdHRyaWJ1dGVzIjozNDcsIi4uLy4uL2xpYi9leHRlbmQiOjM2OSwiLi4vZm9udF9hdHRyaWJ1dGVzIjo0MDcsIi4vaW5kZXgiOjM5OX1dLDQwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uL3Bsb3RzIiksbz10KCIuLi8uLi9jb21wb25lbnRzL3Jhbmdlc2xpZGVyIiksYT10KCIuLi8uLi9jb21wb25lbnRzL3Jhbmdlc2VsZWN0b3IiKSxzPXQoIi4vY29uc3RhbnRzIiksbD10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksYz10KCIuL2F4aXNfZGVmYXVsdHMiKSx1PXQoIi4vcG9zaXRpb25fZGVmYXVsdHMiKSxoPXQoIi4vYXhpc19pZHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGYodCxlKXt2YXIgcj1OdW1iZXIodC5zdWJzdHIoNSl8fDEpLG49TnVtYmVyKGUuc3Vic3RyKDUpfHwxKTtyZXR1cm4gci1ufXZhciBkLHA9T2JqZWN0LmtleXModCksZz1bXSx2PVtdLG09W10seT1bXSxiPXt9LHg9e307Zm9yKGQ9MDtkPHIubGVuZ3RoO2QrKyl7dmFyIF8sdyxBPXJbZF07aWYoaS50cmFjZUlzKEEsImNhcnRlc2lhbiIpKV89Zyx3PXY7ZWxzZXtpZighaS50cmFjZUlzKEEsImdsMmQiKSljb250aW51ZTtfPW0sdz15fXZhciBrPWguaWQybmFtZShBLnhheGlzKSxNPWguaWQybmFtZShBLnlheGlzKTtpZihrJiYtMT09PV8uaW5kZXhPZihrKSYmXy5wdXNoKGspLE0mJi0xPT09dy5pbmRleE9mKE0pJiZ3LnB1c2goTSksaS50cmFjZUlzKEEsIjJkTWFwIikmJihiW2tdPSEwLGJbTV09ITApLGkudHJhY2VJcyhBLCJvcmllbnRlZCIpKXt2YXIgVD0iaCI9PT1BLm9yaWVudGF0aW9uP006azt4W1RdPSEwfX12YXIgRT1lLl9oYXNHTDNEfHxlLl9oYXNHZW87aWYoIUUpZm9yKGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIEw9cFtkXTstMT09PW0uaW5kZXhPZihMKSYmLTE9PT1nLmluZGV4T2YoTCkmJnMueEF4aXNNYXRjaC50ZXN0KEwpP2cucHVzaChMKTotMT09PXkuaW5kZXhPZihMKSYmLTE9PT12LmluZGV4T2YoTCkmJnMueUF4aXNNYXRjaC50ZXN0KEwpJiZ2LnB1c2goTCl9Zy5sZW5ndGgmJnYubGVuZ3RoJiYoZS5faGFzQ2FydGVzaWFuPSEwKTt2YXIgUz1nLmNvbmNhdChtKS5zb3J0KGYpLEM9di5jb25jYXQoeSkuc29ydChmKSxQPVMuY29uY2F0KEMpO1AuY29uY2F0KEMpLmZvckVhY2goZnVuY3Rpb24oaSl7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBuLmNvZXJjZShzLGYsbCx0LGUpfXZhciBhPWkuY2hhckF0KDApLHM9dFtpXXx8e30sZj17fSxkPXtsZXR0ZXI6YSxmb250OmUuZm9udCxvdXRlclRpY2tzOmJbaV0sc2hvd0dyaWQ6IXhbaV0sbmFtZTppLGRhdGE6cn0scD17bGV0dGVyOmEsY291bnRlckF4ZXM6e3g6Qyx5OlN9W2FdLm1hcChoLm5hbWUyaWQpLG92ZXJsYXlhYmxlQXhlczp7eDpTLHk6Q31bYV0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09aSYmISh0W2VdfHx7fSkub3ZlcmxheWluZ30pLm1hcChoLm5hbWUyaWQpfTtjKHMsZixvLGQpLHUocyxmLG8scCksZVtpXT1mLHRbaV18fCItIj09PXMudHlwZXx8KHRbaV09e3R5cGU6cy50eXBlfSl9KSxQLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49ci5jaGFyQXQoMCksaT10W3JdLHM9ZVtyXSxsPXt4OkMseTpTfVtuXTtvLnN1cHBseUxheW91dERlZmF1bHRzKHQsZSxyLGwpLCJ4Ij09PW4mJiJkYXRlIj09PXMudHlwZSYmYS5zdXBwbHlMYXlvdXREZWZhdWx0cyhpLHMsZSxsKX0pLFMubGVuZ3RoJiZDLmxlbmd0aCYmbi5jb2VyY2UodCxlLGkubGF5b3V0QXR0cmlidXRlcywicGxvdF9iZ2NvbG9yIil9fSx7Ii4uLy4uL2NvbXBvbmVudHMvcmFuZ2VzZWxlY3RvciI6MzQ2LCIuLi8uLi9jb21wb25lbnRzL3Jhbmdlc2xpZGVyIjozNTIsIi4uLy4uL2xpYiI6MzczLCIuLi9wbG90cyI6NDM3LCIuL2F4aXNfZGVmYXVsdHMiOjM5NCwiLi9heGlzX2lkcyI6Mzk1LCIuL2NvbnN0YW50cyI6Mzk3LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo0MDAsIi4vcG9zaXRpb25fZGVmYXVsdHMiOjQwMn1dLDQwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBhPW8uY291bnRlckF4ZXN8fFtdLHM9by5vdmVybGF5YWJsZUF4ZXN8fFtdLGw9by5sZXR0ZXIsYz1pLmNvZXJjZSh0LGUse2FuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJlZSJdLmNvbmNhdChhKSxkZmx0Om4odC5wb3NpdGlvbik/ImZyZWUiOmFbMF18fCJmcmVlIn19LCJhbmNob3IiKTsiZnJlZSI9PT1jJiZyKCJwb3NpdGlvbiIpLGkuY29lcmNlKHQsZSx7c2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOiJ4Ij09PWw/WyJib3R0b20iLCJ0b3AiXTpbImxlZnQiLCJyaWdodCJdLGRmbHQ6IngiPT09bD8iYm90dG9tIjoibGVmdCJ9fSwic2lkZSIpO3ZhciB1PSExO2lmKHMubGVuZ3RoJiYodT1pLmNvZXJjZSh0LGUse292ZXJsYXlpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITFdLmNvbmNhdChzKSxkZmx0OiExfX0sIm92ZXJsYXlpbmciKSksIXUpe3ZhciBoPXIoImRvbWFpbiIpO2hbMF0+aFsxXS0uMDEmJihlLmRvbWFpbj1bMCwxXSksaS5ub25lT3JBbGwodC5kb21haW4sZS5kb21haW4sWzAsMV0pfXJldHVybiBlfX0seyIuLi8uLi9saWIiOjM3MywiZmFzdC1pc251bWVyaWMiOjc0fV0sNDAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQuX2lkfXZhciBpPXQoIi4uLy4uL2xpYi9wb2x5Z29uIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksYT10KCIuL2F4ZXMiKSxzPXQoIi4vY29uc3RhbnRzIiksbD1pLmZpbHRlcixjPWkudGVzdGVyLHU9cy5NSU5TRUxFQ1Q7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksaCl7ZnVuY3Rpb24gZih0KXt2YXIgZT0ieSI9PT10Ll9pZC5jaGFyQXQoMCk/MTowO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdC5wMmQocltlXSl9fWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gdC1lfXZhciBwLGc9aS5wbG90aW5mby5wbG90LHY9aS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG09ZS12LmxlZnQseT1yLXYudG9wLGI9bSx4PXksXz0iTSIrbSsiLCIreSx3PWkueGF4ZXNbMF0uX2xlbmd0aCxBPWkueWF4ZXNbMF0uX2xlbmd0aCxrPWkueGF4ZXMubWFwKG4pLE09aS55YXhlcy5tYXAobiksVD1pLnhheGVzLmNvbmNhdChpLnlheGVzKTsibGFzc28iPT09aCYmKHA9bChbW20seV1dLHMuQkVORFBYKSk7dmFyIEU9Zy5zZWxlY3RBbGwoInBhdGguc2VsZWN0LW91dGxpbmUiKS5kYXRhKFsxLDJdKTtFLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiJzZWxlY3Qtb3V0bGluZSBzZWxlY3Qtb3V0bGluZS0iK3R9KS5hdHRyKCJkIixfKyJaIik7dmFyIEwsUyxDLFAseixSPWcuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94LWNvcm5lcnMiKS5zdHlsZSh7ZmlsbDpvLmJhY2tncm91bmQsc3Ryb2tlOm8uZGVmYXVsdExpbmUsInN0cm9rZS13aWR0aCI6MX0pLmF0dHIoImQiLCJNMCwwWiIpLE89W10sST1pLmdkLE49W107Zm9yKEw9MDtMPEkuY2FsY2RhdGEubGVuZ3RoO0wrKylTPUkuY2FsY2RhdGFbTF0sQz1TWzBdLnRyYWNlLEMuX21vZHVsZSYmQy5fbW9kdWxlLnNlbGVjdFBvaW50cyYmLTEhPT1rLmluZGV4T2YoQy54YXhpcykmJi0xIT09TS5pbmRleE9mKEMueWF4aXMpJiZPLnB1c2goe3NlbGVjdFBvaW50czpDLl9tb2R1bGUuc2VsZWN0UG9pbnRzLGNkOlMseGF4aXM6YS5nZXRGcm9tSWQoSSxDLnhheGlzKSx5YXhpczphLmdldEZyb21JZChJLEMueWF4aXMpfSk7aS5tb3ZlRm49ZnVuY3Rpb24odCxlKXt2YXIgcixuO2I9TWF0aC5tYXgoMCxNYXRoLm1pbih3LHQrbSkpLHg9TWF0aC5tYXgoMCxNYXRoLm1pbihBLGUreSkpO3ZhciBvPU1hdGguYWJzKGItbSksYT1NYXRoLmFicyh4LXkpO2Zvcigic2VsZWN0Ij09PWg/KGE8TWF0aC5taW4oLjYqbyx1KT8ocj1jKFtbbSwwXSxbbSxBXSxbYixBXSxbYiwwXV0pLFIuYXR0cigiZCIsIk0iK3IueG1pbisiLCIrKHktdSkrImgtNHYiKzIqdSsiaDRaTSIrKHIueG1heC0xKSsiLCIrKHktdSkrImg0diIrMip1KyJoLTRaIikpOm88TWF0aC5taW4oLjYqYSx1KT8ocj1jKFtbMCx5XSxbMCx4XSxbdyx4XSxbdyx5XV0pLFIuYXR0cigiZCIsIk0iKyhtLXUpKyIsIityLnltaW4rInYtNGgiKzIqdSsidjRaTSIrKG0tdSkrIiwiKyhyLnltYXgtMSkrInY0aCIrMip1KyJ2LTRaIikpOihyPWMoW1ttLHldLFttLHhdLFtiLHhdLFtiLHldXSksUi5hdHRyKCJkIiwiTTAsMFoiKSksRS5hdHRyKCJkIiwiTSIrci54bWluKyIsIityLnltaW4rIkgiKyhyLnhtYXgtMSkrIlYiKyhyLnltYXgtMSkrIkgiK3IueG1pbisiWiIpKToibGFzc28iPT09aCYmKHAuYWRkUHQoW2IseF0pLHI9YyhwLmZpbHRlcmVkKSxFLmF0dHIoImQiLCJNIitwLmZpbHRlcmVkLmpvaW4oIkwiKSsiWiIpKSxOPVtdLEw9MDtMPE8ubGVuZ3RoO0wrKylQPU9bTF0sW10ucHVzaC5hcHBseShOLFAuc2VsZWN0UG9pbnRzKFAscikpO2lmKHo9e3BvaW50czpOfSwic2VsZWN0Ij09PWgpe3ZhciBzLGw9ei5yYW5nZT17fTtmb3IoTD0wO0w8VC5sZW5ndGg7TCsrKW49VFtMXSxzPW4uX2lkLmNoYXJBdCgwKSxsW24uX2lkXT1bbi5wMmQocltzKyJtaW4iXSksbi5wMmQocltzKyJtYXgiXSldLnNvcnQoZCl9ZWxzZXt2YXIgZz16Lmxhc3NvUG9pbnRzPXt9O2ZvcihMPTA7TDxULmxlbmd0aDtMKyspbj1UW0xdLGdbbi5faWRdPXAuZmlsdGVyZWQubWFwKGYobikpfWkuZ2QuZW1pdCgicGxvdGx5X3NlbGVjdGluZyIseil9LGkuZG9uZUZuPWZ1bmN0aW9uKHQsZSl7aWYodHx8MiE9PWUpaS5nZC5lbWl0KCJwbG90bHlfc2VsZWN0ZWQiLHopO2Vsc2V7Zm9yKEUucmVtb3ZlKCksTD0wO0w8Ty5sZW5ndGg7TCsrKVA9T1tMXSxQLnNlbGVjdFBvaW50cyhQLCExKTtJLmVtaXQoInBsb3RseV9kZXNlbGVjdCIsbnVsbCl9Ui5yZW1vdmUoKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vbGliL3BvbHlnb24iOjM3OCwiLi9heGVzIjozOTMsIi4vY29uc3RhbnRzIjozOTd9XSw0MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoImZhc3QtaXNudW1lcmljIiksbz10KCIuLi8uLi9saWIiKSxhPXQoIi4vY29uc3RhbnRzIikscz10KCIuL2NsZWFuX2RhdHVtIiksbD10KCIuL2F4aXNfaWRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyKXtpZihlPjApcmV0dXJuIE1hdGgubG9nKGUpL01hdGguTE4xMDtpZigwPj1lJiZyJiZ0LnJhbmdlJiYyPT09dC5yYW5nZS5sZW5ndGgpe3ZhciBuPXQucmFuZ2VbMF0saT10LnJhbmdlWzFdO3JldHVybi41KihuK2ktMyp1Kk1hdGguYWJzKG4taSkpfXJldHVybiBhLkJBRE5VTX1mdW5jdGlvbiByKHQpe3JldHVybiBNYXRoLnBvdygxMCx0KX1mdW5jdGlvbiBjKHQpe3JldHVybiBpKHQpP051bWJlcih0KTphLkJBRE5VTX12YXIgdT0xMDtpZih0LmMybD0ibG9nIj09PXQudHlwZT9lOmMsdC5sMmM9ImxvZyI9PT10LnR5cGU/cjpjLHQubDJkPWZ1bmN0aW9uKGUpe3JldHVybiB0LmMyZCh0LmwyYyhlKSl9LHQucDJkPWZ1bmN0aW9uKGUpe3JldHVybiB0LmwyZCh0LnAybChlKSl9LHQuc2V0U2NhbGU9ZnVuY3Rpb24oKXt2YXIgZSxyPXQuX3RkLl9mdWxsTGF5b3V0Ll9zaXplO2lmKHQuX2NhdGVnb3JpZXN8fCh0Ll9jYXRlZ29yaWVzPVtdKSx0Lm92ZXJsYXlpbmcpe3ZhciBuPWwuZ2V0RnJvbUlkKHQuX3RkLHQub3ZlcmxheWluZyk7dC5kb21haW49bi5kb21haW59Zm9yKHQucmFuZ2UmJjI9PT10LnJhbmdlLmxlbmd0aCYmdC5yYW5nZVswXSE9PXQucmFuZ2VbMV18fCh0LnJhbmdlPVstMSwxXSksZT0wOzI+ZTtlKyspaSh0LnJhbmdlW2VdKXx8KHQucmFuZ2VbZV09aSh0LnJhbmdlWzEtZV0pP3QucmFuZ2VbMS1lXSooZT8xMDouMSk6ZT8xOi0xKSx0LnJhbmdlW2VdPC0oTnVtYmVyLk1BWF9WQUxVRS8yKT90LnJhbmdlW2VdPS0oTnVtYmVyLk1BWF9WQUxVRS8yKTp0LnJhbmdlW2VdPk51bWJlci5NQVhfVkFMVUUvMiYmKHQucmFuZ2VbZV09TnVtYmVyLk1BWF9WQUxVRS8yKTtpZigieSI9PT10Ll9pZC5jaGFyQXQoMCk/KHQuX29mZnNldD1yLnQrKDEtdC5kb21haW5bMV0pKnIuaCx0Ll9sZW5ndGg9ci5oKih0LmRvbWFpblsxXS10LmRvbWFpblswXSksdC5fbT10Ll9sZW5ndGgvKHQucmFuZ2VbMF0tdC5yYW5nZVsxXSksdC5fYj0tdC5fbSp0LnJhbmdlWzFdKToodC5fb2Zmc2V0PXIubCt0LmRvbWFpblswXSpyLncsdC5fbGVuZ3RoPXIudyoodC5kb21haW5bMV0tdC5kb21haW5bMF0pLHQuX209dC5fbGVuZ3RoLyh0LnJhbmdlWzFdLXQucmFuZ2VbMF0pLHQuX2I9LXQuX20qdC5yYW5nZVswXSksIWlzRmluaXRlKHQuX20pfHwhaXNGaW5pdGUodC5fYikpdGhyb3cgby5ub3RpZmllcigiU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBheGlzIHNjYWxpbmciLCJsb25nIiksdC5fdGQuX3JlcGxvdHRpbmc9ITEsbmV3IEVycm9yKCJheGlzIHNjYWxpbmciKX0sdC5sMnA9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSk/bi5yb3VuZCh0Ll9iK3QuX20qZSwyKTphLkJBRE5VTX0sdC5wMmw9ZnVuY3Rpb24oZSl7cmV0dXJuKGUtdC5fYikvdC5fbX0sdC5jMnA9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5sMnAodC5jMmwoZSxyKSl9LHQucDJjPWZ1bmN0aW9uKGUpe3JldHVybiB0LmwyYyh0LnAybChlKSl9LC0xIT09WyJsaW5lYXIiLCJsb2ciLCItIl0uaW5kZXhPZih0LnR5cGUpKXQuYzJkPWMsdC5kMmM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9cyh0KSxpKHQpP051bWJlcih0KTphLkJBRE5VTX0sdC5kMmw9ZnVuY3Rpb24oZSxyKXtyZXR1cm4ibG9nIj09PXQudHlwZT90LmMybCh0LmQyYyhlKSxyKTp0LmQyYyhlKX07ZWxzZSBpZigiZGF0ZSI9PT10LnR5cGUpe2lmKHQuYzJkPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpP28ubXMyRGF0ZVRpbWUodCk6YS5CQUROVU19LHQuZDJjPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpP051bWJlcih0KTpvLmRhdGVUaW1lMm1zKHQpfSx0LmQybD10LmQyYyx0LnJhbmdlJiZ0LnJhbmdlLmxlbmd0aD4xKXRyeXt2YXIgaD10LnJhbmdlLm1hcChvLmRhdGVUaW1lMm1zKTshaSh0LnJhbmdlWzBdKSYmaShoWzBdKSYmKHQucmFuZ2VbMF09aFswXSksIWkodC5yYW5nZVsxXSkmJmkoaFsxXSkmJih0LnJhbmdlWzFdPWhbMV0pfWNhdGNoKGYpe2NvbnNvbGUubG9nKGYsdC5yYW5nZSl9fWVsc2UiY2F0ZWdvcnkiPT09dC50eXBlJiYodC5jMmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2NhdGVnb3JpZXNbTWF0aC5yb3VuZChlKV19LHQuZDJjPWZ1bmN0aW9uKGUpe251bGwhPT1lJiZ2b2lkIDAhPT1lJiYtMT09PXQuX2NhdGVnb3JpZXMuaW5kZXhPZihlKSYmdC5fY2F0ZWdvcmllcy5wdXNoKGUpO3ZhciByPXQuX2NhdGVnb3JpZXMuaW5kZXhPZihlKTtyZXR1cm4tMT09PXI/YS5CQUROVU06cn0sdC5kMmw9dC5kMmMpO3QubWFrZUNhbGNkYXRhPWZ1bmN0aW9uKGUscil7dmFyIG4saSxvO2lmKHIgaW4gZSlmb3Iobj1lW3JdLGk9bmV3IEFycmF5KG4ubGVuZ3RoKSxvPTA7bzxuLmxlbmd0aDtvKyspaVtvXT10LmQyYyhuW29dKTtlbHNle3ZhciBhPXIrIjAiaW4gZT90LmQyYyhlW3IrIjAiXSk6MCxzPWVbImQiK3JdP051bWJlcihlWyJkIityXSk6MTtmb3Iobj1lW3t4OiJ5Iix5OiJ4In1bcl1dLGk9bmV3IEFycmF5KG4ubGVuZ3RoKSxvPTA7bzxuLmxlbmd0aDtvKyspaVtvXT1hK28qc31yZXR1cm4gaX0sdC5fbWluPVtdLHQuX21heD1bXSx0Ll9taW5EdGljaz1udWxsLHQuX2ZvcmNlVGljazA9bnVsbH19LHsiLi4vLi4vbGliIjozNzMsIi4vYXhpc19pZHMiOjM5NSwiLi9jbGVhbl9kYXR1bSI6Mzk2LCIuL2NvbnN0YW50cyI6Mzk3LGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0MDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZT1bInNob3dleHBvbmVudCIsInNob3d0aWNrcHJlZml4Iiwic2hvd3RpY2tzdWZmaXgiXSxyPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10W2VdfSksbj1mdW5jdGlvbihlKXtyZXR1cm4gdFtlXT09PXRbclswXV19O3JldHVybiByLmV2ZXJ5KG4pfHwxPT09ci5sZW5ndGg/dFtyWzBdXTp2b2lkIDB9dmFyIGk9dCgiLi4vLi4vbGliIiksbz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEscyl7dmFyIGw9aS5jb2VyY2UyKHQsZSxvLCJ0aWNrbGVuIiksYz1pLmNvZXJjZTIodCxlLG8sInRpY2t3aWR0aCIpLHU9aS5jb2VyY2UyKHQsZSxvLCJ0aWNrY29sb3IiKSxoPXIoInRpY2tzIixzLm91dGVyVGlja3N8fGx8fGN8fHU/Im91dHNpZGUiOiIiKTtofHwoZGVsZXRlIGUudGlja2xlbixkZWxldGUgZS50aWNrd2lkdGgsZGVsZXRlIGUudGlja2NvbG9yKTt2YXIgZj1uKHQpLGQ9cigidGlja3ByZWZpeCIpO2QmJnIoInNob3d0aWNrcHJlZml4IixmKTt2YXIgcD1yKCJ0aWNrc3VmZml4Iik7cCYmcigic2hvd3RpY2tzdWZmaXgiLGYpO3ZhciBnPXIoInNob3d0aWNrbGFiZWxzIik7aWYoZyYmKGkuY29lcmNlRm9udChyLCJ0aWNrZm9udCIscy5mb250fHx7fSkscigidGlja2FuZ2xlIiksImNhdGVnb3J5IiE9PWEpKXt2YXIgdj1yKCJ0aWNrZm9ybWF0Iik7dnx8ImRhdGUiPT09YXx8KHIoInNob3dleHBvbmVudCIsZikscigiZXhwb25lbnRmb3JtYXQiKSl9ImNhdGVnb3J5Ij09PWF8fHMubm9Ib3Zlcnx8cigiaG92ZXJmb3JtYXQiKX19LHsiLi4vLi4vbGliIjozNzMsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQwMH1dLDQwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz0iYXV0byI7ImFycmF5IiE9PXQudGlja21vZGV8fCJsb2ciIT09aSYmImRhdGUiIT09aXx8KHQudGlja21vZGU9ImF1dG8iKSxBcnJheS5pc0FycmF5KHQudGlja3ZhbHMpP289ImFycmF5Ijp0LmR0aWNrJiZuKHQuZHRpY2spJiYobz0ibGluZWFyIik7dmFyIGE9cigidGlja21vZGUiLG8pO2lmKCJhdXRvIj09PWEpcigibnRpY2tzIik7ZWxzZSBpZigibGluZWFyIj09PWEpcigidGljazAiKSxyKCJkdGljayIpO2Vsc2V7dmFyIHM9cigidGlja3ZhbHMiKTt2b2lkIDA9PT1zP2UudGlja21vZGU9ImF1dG8iOnIoInRpY2t0ZXh0Iil9fX0seyJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0MDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtmYW1pbHk6e3ZhbFR5cGU6InN0cmluZyIsbm9CbGFuazohMCxzdHJpY3Q6ITB9LHNpemU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjF9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciJ9fX0se31dLDQwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dGhpcy5pZD10LmlkLHRoaXMuZ3JhcGhEaXY9dC5ncmFwaERpdix0aGlzLmNvbnRhaW5lcj10LmNvbnRhaW5lcix0aGlzLnRvcG9qc29uVVJMPXQudG9wb2pzb25VUkwscCgpLHRoaXMuaG92ZXJDb250YWluZXI9bnVsbCx0aGlzLnRvcG9qc29uTmFtZT1udWxsLHRoaXMudG9wb2pzb249bnVsbCx0aGlzLnByb2plY3Rpb25UeXBlPW51bGwsdGhpcy5wcm9qZWN0aW9uPW51bGwsdGhpcy5jbGlwQW5nbGU9bnVsbCx0aGlzLnNldFNjYWxlPW51bGwsdGhpcy5wYXRoPW51bGwsdGhpcy56b29tPW51bGwsdGhpcy56b29tUmVzZXQ9bnVsbCx0aGlzLm1ha2VGcmFtZXdvcmsoKSx0aGlzLnVwZGF0ZUZ4KGUuaG92ZXJtb2RlKSx0aGlzLnRyYWNlSGFzaD17fX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi52aXNpYmxlPT09ITAmJmUucHVzaChuKX1yZXR1cm4gZX1mdW5jdGlvbiBvKHQsZSxyKXtyZXR1cm4gdS5nZW8uZ3JhdGljdWxlKCkuZXh0ZW50KFtbdFswXSxlWzBdXSxbdFsxXSxlWzFdXV0pLnN0ZXAocil9ZnVuY3Rpb24gYSh0LGUscil7dmFyIG49Yi5sYXllck5hbWVUb0FkamVjdGl2ZVtlXTt0LnNlbGVjdCgiLiIrZSkuc2VsZWN0QWxsKCJwYXRoIikuYXR0cigic3Ryb2tlIiwibm9uZSIpLmNhbGwoaC5maWxsLHJbbisiY29sb3IiXSl9ZnVuY3Rpb24gcyh0LGUscil7dmFyIG49Yi5sYXllck5hbWVUb0FkamVjdGl2ZVtlXTt0LnNlbGVjdCgiLiIrZSkuc2VsZWN0QWxsKCJwYXRoIikuYXR0cigiZmlsbCIsIm5vbmUiKS5jYWxsKGguc3Ryb2tlLHJbbisiY29sb3IiXSkuY2FsbChmLmRhc2hMaW5lLCIiLHJbbisid2lkdGgiXSl9ZnVuY3Rpb24gbCh0LGUscil7dC5zZWxlY3QoIi4iK2UrImdyYXRpY3VsZSIpLnNlbGVjdEFsbCgicGF0aCIpLmF0dHIoImZpbGwiLCJub25lIikuY2FsbChoLnN0cm9rZSxyW2VdLmdyaWRjb2xvcikuY2FsbChmLmRhc2hMaW5lLCIiLHJbZV0uZ3JpZHdpZHRoKX1mdW5jdGlvbiBjKHQpe3ZhciBlPXt0eXBlOiJsaW5lYXIiLHNob3dleHBvbmVudDoiYWxsIixleHBvbmVudGZvcm1hdDpkLmxheW91dEF0dHJpYnV0ZXMuZXhwb25lbnRmb3JtYXQuZGZsdCxfdGQ6e19mdWxsTGF5b3V0OnR9fTtyZXR1cm4gZC5zZXRDb252ZXJ0KGUpLGV9dmFyIHU9dCgiZDMiKSxoPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxmPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGQ9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxwPXQoIi4vcHJvamVjdGlvbnMiKSxnPXQoIi4vc2V0X3NjYWxlIiksdj10KCIuL3pvb20iKSxtPXQoIi4vem9vbV9yZXNldCIpLHk9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxiPXQoIi4uLy4uL2NvbnN0YW50cy9nZW9fY29uc3RhbnRzIikseD10KCIuLi8uLi9saWIvdG9wb2pzb25fdXRpbHMiKSxfPXQoInRvcG9qc29uIikuZmVhdHVyZTtlLmV4cG9ydHM9bjt2YXIgdz1uLnByb3RvdHlwZTt3LnBsb3Q9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksbz10aGlzLGE9ZVtvLmlkXSxzPWUuX3NpemU7by5wcm9qZWN0aW9uPW51bGwsby5zZXRTY2FsZT1nKGEscyksby5tYWtlUHJvamVjdGlvbihhKSxvLm1ha2VQYXRoKCksby5hZGp1c3RMYXlvdXQoYSxzKSxvLnpvb209dihvLGEpLG8uem9vbVJlc2V0PW0obyxhKSxvLm1vY2tBeGlzPWMoZSksby5mcmFtZXdvcmsuY2FsbChvLnpvb20pLm9uKCJkYmxjbGljay56b29tIixvLnpvb21SZXNldCksbj14LmdldFRvcG9qc29uTmFtZShhKSxudWxsPT09by50b3BvanNvbnx8biE9PW8udG9wb2pzb25OYW1lPyhvLnRvcG9qc29uTmFtZT1uLHZvaWQgMCE9PVBsb3RseUdlb0Fzc2V0cy50b3BvanNvbltvLnRvcG9qc29uTmFtZV0/KG8udG9wb2pzb249UGxvdGx5R2VvQXNzZXRzLnRvcG9qc29uW28udG9wb2pzb25OYW1lXSxvLm9uY2VUb3BvanNvbklzTG9hZGVkKHQsYSkpOihpPXguZ2V0VG9wb2pzb25QYXRoKG8udG9wb2pzb25VUkwsby50b3BvanNvbk5hbWUpLHIucHVzaChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHIpe3UuanNvbihpLGZ1bmN0aW9uKG4scyl7cmV0dXJuIG4/dm9pZCByKDQwND09PW4uc3RhdHVzP25ldyBFcnJvcihbInBsb3RseS5qcyBjb3VsZCBub3QgZmluZCB0b3BvanNvbiBmaWxlIGF0IixpLCIuIiwiTWFrZSBzdXJlIHRoZSAqdG9wb2pzb25VUkwqIHBsb3QgY29uZmlnIG9wdGlvbiIsImlzIHNldCBwcm9wZXJseS4iXS5qb2luKCIgIikpOm5ldyBFcnJvcihbInVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgZmV0Y2hpbmcgdG9wb2pzb24gZmlsZSBhdCIsaV0uam9pbigiICIpKSk6KG8udG9wb2pzb249cyxQbG90bHlHZW9Bc3NldHMudG9wb2pzb25bby50b3BvanNvbk5hbWVdPXMsby5vbmNlVG9wb2pzb25Jc0xvYWRlZCh0LGEpLHZvaWQgZSgpKX0pfSkpKSk6by5vbmNlVG9wb2pzb25Jc0xvYWRlZCh0LGEpfSx3Lm9uY2VUb3BvanNvbklzTG9hZGVkPWZ1bmN0aW9uKHQsZSl7dmFyIHI7dGhpcy5kcmF3TGF5b3V0KGUpO3ZhciBuPXRoaXMudHJhY2VIYXNoLG89e307Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTtvW2EudHlwZV09b1thLnR5cGVdfHxbXSxvW2EudHlwZV0ucHVzaChhKX12YXIgcz1PYmplY3Qua2V5cyhuKSxsPU9iamVjdC5rZXlzKG8pO2ZvcihyPTA7cjxzLmxlbmd0aDtyKyspe3ZhciBjPXNbcl07aWYoLTE9PT1sLmluZGV4T2YoYykpe3ZhciB1PW5bY11bMF07dS52aXNpYmxlPSExLG9bY109W3VdfX1mb3IobD1PYmplY3Qua2V5cyhvKSxyPTA7cjxsLmxlbmd0aDtyKyspe3ZhciBoPW9bbFtyXV0sZj1oWzBdLl9tb2R1bGU7Zi5wbG90KHRoaXMsaShoKSxlKX10aGlzLnRyYWNlSGFzaD1vLHRoaXMucmVuZGVyKCl9LHcudXBkYXRlRng9ZnVuY3Rpb24odCl7dGhpcy5zaG93SG92ZXI9dCE9PSExfSx3Lm1ha2VQcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5wcm9qZWN0aW9uLG49ci50eXBlLGk9bnVsbD09PXRoaXMucHJvamVjdGlvbnx8biE9PXRoaXMucHJvamVjdGlvblR5cGU7aT8odGhpcy5wcm9qZWN0aW9uVHlwZT1uLGU9dGhpcy5wcm9qZWN0aW9uPXUuZ2VvW2IucHJvak5hbWVzW25dXSgpKTplPXRoaXMucHJvamVjdGlvbixlLnRyYW5zbGF0ZShyLl90cmFuc2xhdGUwKS5wcmVjaXNpb24oYi5wcmVjaXNpb24pLHQuX2lzQWxiZXJzVXNhfHxlLnJvdGF0ZShyLl9yb3RhdGUpLmNlbnRlcihyLl9jZW50ZXIpLHQuX2NsaXBBbmdsZT8odGhpcy5jbGlwQW5nbGU9dC5fY2xpcEFuZ2xlLGUuY2xpcEFuZ2xlKHQuX2NsaXBBbmdsZS1iLmNsaXBQYWQpKTp0aGlzLmNsaXBBbmdsZT1udWxsLHIucGFyYWxsZWxzJiZlLnBhcmFsbGVscyhyLnBhcmFsbGVscyksaSYmdGhpcy5zZXRTY2FsZShlKSxlLnRyYW5zbGF0ZShyLl90cmFuc2xhdGUpLnNjYWxlKHIuX3NjYWxlKX0sdy5tYWtlUGF0aD1mdW5jdGlvbigpe3RoaXMucGF0aD11Lmdlby5wYXRoKCkucHJvamVjdGlvbih0aGlzLnByb2plY3Rpb24pfSx3Lm1ha2VGcmFtZXdvcms9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdlb0Rpdj11LnNlbGVjdCh0aGlzLmNvbnRhaW5lcikuYXBwZW5kKCJkaXYiKTt0LmF0dHIoImlkIix0aGlzLmlkKS5zdHlsZSgicG9zaXRpb24iLCJhYnNvbHV0ZSIpO3ZhciBlPXRoaXMuaG92ZXJDb250YWluZXI9dC5hcHBlbmQoInN2ZyIpO2UuYXR0cih5LnN2Z0F0dHJzKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIiwiei1pbmRleCI6MjAsInBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KTt2YXIgcj10aGlzLmZyYW1ld29yaz10LmFwcGVuZCgic3ZnIik7ci5hdHRyKHkuc3ZnQXR0cnMpLmF0dHIoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KSxyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYmdsYXllciIpLmFwcGVuZCgicmVjdCIpLHIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJiYXNlbGF5ZXIiKSxyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiY2hvcm9wbGV0aGxheWVyIiksci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImJhc2VsYXllcm92ZXJjaG9yb3BsZXRoIiksci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInNjYXR0ZXJnZW9sYXllciIpLHIub24oImRibGNsaWNrLnpvb20iLG51bGwpfSx3LmFkanVzdExheW91dD1mdW5jdGlvbih0LGUpe3ZhciByPXQuZG9tYWluO3RoaXMuZ2VvRGl2LnN0eWxlKHtsZWZ0OmUubCtlLncqci54WzBdK3QuX21hcmdpblgrInB4Iix0b3A6ZS50K2UuaCooMS1yLnlbMV0pK3QuX21hcmdpblkrInB4Iix3aWR0aDp0Ll93aWR0aCsicHgiLGhlaWdodDp0Ll9oZWlnaHQrInB4In0pLHRoaXMuaG92ZXJDb250YWluZXIuYXR0cih7d2lkdGg6dC5fd2lkdGgsaGVpZ2h0OnQuX2hlaWdodH0pLHRoaXMuZnJhbWV3b3JrLmF0dHIoe3dpZHRoOnQuX3dpZHRoLGhlaWdodDp0Ll9oZWlnaHR9KSx0aGlzLmZyYW1ld29yay5zZWxlY3QoIi5iZ2xheWVyIikuc2VsZWN0KCJyZWN0IikuYXR0cih7d2lkdGg6dC5fd2lkdGgsaGVpZ2h0OnQuX2hlaWdodH0pLnN0eWxlKHtmaWxsOnQuYmdjb2xvciwic3Ryb2tlLXdpZHRoIjowfSl9LHcuZHJhd1RvcG89ZnVuY3Rpb24odCxlLHIpe2lmKHJbInNob3ciK2VdPT09ITApe3ZhciBuPXRoaXMudG9wb2pzb24saT0iZnJhbWUiPT09ZT9iLnNwaGVyZVNWRzpfKG4sbi5vYmplY3RzW2VdKTt0LmFwcGVuZCgiZyIpLmRhdHVtKGkpLmF0dHIoImNsYXNzIixlKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImJhc2VwYXRoIil9fSx3LmRyYXdHcmF0aWN1bGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXJbZV07aWYobi5zaG93Z3JpZD09PSEwKXsKdmFyIGk9Yi5zY29wZURlZmF1bHRzW3Iuc2NvcGVdLGE9aS5sb25heGlzUmFuZ2Uscz1pLmxhdGF4aXNSYW5nZSxsPSJsb25heGlzIj09PWU/W24uZHRpY2tdOlswLG4uZHRpY2tdLGM9byhhLHMsbCk7dC5hcHBlbmQoImciKS5kYXR1bShjKS5hdHRyKCJjbGFzcyIsZSsiZ3JhdGljdWxlIikuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJncmF0aWN1bGVwYXRoIil9fSx3LmRyYXdMYXlvdXQ9ZnVuY3Rpb24odCl7dmFyIGUscj10aGlzLmZyYW1ld29yay5zZWxlY3QoImcuYmFzZWxheWVyIiksbj1iLmJhc2VMYXllcnMsaT1iLmF4ZXNOYW1lcztyLnNlbGVjdEFsbCgiKiIpLnJlbW92ZSgpO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKWU9bltvXSwtMSE9PWkuaW5kZXhPZihlKT90aGlzLmRyYXdHcmF0aWN1bGUocixlLHQpOnRoaXMuZHJhd1RvcG8ocixlLHQpO3RoaXMuc3R5bGVMYXlvdXQodCl9LHcuc3R5bGVMYXllcj1mdW5jdGlvbih0LGUscil7dmFyIG49Yi5maWxsTGF5ZXJzLGk9Yi5saW5lTGF5ZXJzOy0xIT09bi5pbmRleE9mKGUpP2EodCxlLHIpOi0xIT09aS5pbmRleE9mKGUpJiZzKHQsZSxyKX0sdy5zdHlsZUxheW91dD1mdW5jdGlvbih0KXtmb3IodmFyIGUscj10aGlzLmZyYW1ld29yay5zZWxlY3QoImcuYmFzZWxheWVyIiksbj1iLmJhc2VMYXllcnMsaT1iLmF4ZXNOYW1lcyxvPTA7bzxuLmxlbmd0aDtvKyspZT1uW29dLC0xIT09aS5pbmRleE9mKGUpP2wocixlLHQpOnRoaXMuc3R5bGVMYXllcihyLGUsdCl9LHcucmVuZGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT1vKFt0Lmxvbix0LmxhdF0pO3JldHVybiBlPyJ0cmFuc2xhdGUoIitlWzBdKyIsIitlWzFdKyIpIjpudWxsfWZ1bmN0aW9uIGUodCl7dmFyIGU9by5yb3RhdGUoKSxyPXUuZ2VvLmRpc3RhbmNlKFt0Lmxvbix0LmxhdF0sWy1lWzBdLC1lWzFdXSksbj1zKk1hdGguUEkvMTgwO3JldHVybiByPm4/IjAiOiIxLjAifXZhciByPXRoaXMuZnJhbWV3b3JrLG49ci5zZWxlY3QoImcuY2hvcm9wbGV0aGxheWVyIiksaT1yLnNlbGVjdCgiZy5zY2F0dGVyZ2VvbGF5ZXIiKSxvPXRoaXMucHJvamVjdGlvbixhPXRoaXMucGF0aCxzPXRoaXMuY2xpcEFuZ2xlO3Iuc2VsZWN0QWxsKCJwYXRoLmJhc2VwYXRoIikuYXR0cigiZCIsYSksci5zZWxlY3RBbGwoInBhdGguZ3JhdGljdWxlcGF0aCIpLmF0dHIoImQiLGEpLG4uc2VsZWN0QWxsKCJwYXRoLmNob3JvcGxldGhsb2NhdGlvbiIpLmF0dHIoImQiLGEpLG4uc2VsZWN0QWxsKCJwYXRoLmJhc2VwYXRoIikuYXR0cigiZCIsYSksaS5zZWxlY3RBbGwoInBhdGguanMtbGluZSIpLmF0dHIoImQiLGEpLG51bGwhPT1zPyhpLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpLnN0eWxlKCJvcGFjaXR5IixlKS5hdHRyKCJ0cmFuc2Zvcm0iLHQpLGkuc2VsZWN0QWxsKCJ0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLGUpLmF0dHIoInRyYW5zZm9ybSIsdCkpOihpLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpLmF0dHIoInRyYW5zZm9ybSIsdCksaS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLHQpKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjMxOSwiLi4vLi4vY29uc3RhbnRzL2dlb19jb25zdGFudHMiOjM1OCwiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjM2MiwiLi4vLi4vbGliL3RvcG9qc29uX3V0aWxzIjozODUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTMsIi4vcHJvamVjdGlvbnMiOjQxNSwiLi9zZXRfc2NhbGUiOjQxNiwiLi96b29tIjo0MTcsIi4vem9vbV9yZXNldCI6NDE4LGQzOjcwLHRvcG9qc29uOjIzMn1dLDQwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2dlbyIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKTtyLm5hbWU9ImdlbyIsci5hdHRyPSJnZW8iLHIuaWRSb290PSJnZW8iLHIuaWRSZWdleD0vXmdlbyhbMi05XXxbMS05XVswLTldKyk/JC8sci5hdHRyUmVnZXg9L15nZW8oWzItOV18WzEtOV1bMC05XSspPyQvLHIuYXR0cmlidXRlcz10KCIuL2xheW91dC9hdHRyaWJ1dGVzIiksci5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4vbGF5b3V0L2xheW91dF9hdHRyaWJ1dGVzIiksci5zdXBwbHlMYXlvdXREZWZhdWx0cz10KCIuL2xheW91dC9kZWZhdWx0cyIpLHIucGxvdD1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5fZnVsbERhdGEsbz1pLmdldFN1YnBsb3RJZHMoZSwiZ2VvIik7dm9pZCAwPT09d2luZG93LlBsb3RseUdlb0Fzc2V0cyYmKHdpbmRvdy5QbG90bHlHZW9Bc3NldHM9e3RvcG9qc29uOnt9fSk7Zm9yKHZhciBhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBzPW9bYV0sbD1pLmdldFN1YnBsb3REYXRhKHIsImdlbyIscyksYz1lW3NdLl9nZW87dm9pZCAwPT09YyYmKGM9bmV3IG4oe2lkOnMsZ3JhcGhEaXY6dCxjb250YWluZXI6ZS5fZ2VvY29udGFpbmVyLm5vZGUoKSx0b3BvanNvblVSTDp0Ll9jb250ZXh0LnRvcG9qc29uVVJMfSxlKSxlW3NdLl9nZW89YyksYy5wbG90KGwsZSx0Ll9wcm9taXNlcyl9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgbz1pLmdldFN1YnBsb3RJZHMobiwiZ2VvIiksYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgcz1vW2FdLGw9bltzXS5fZ2VvOyFlW3NdJiZsJiZsLmdlb0Rpdi5yZW1vdmUoKX19fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vZ2VvIjo0MDgsIi4vbGF5b3V0L2F0dHJpYnV0ZXMiOjQxMCwiLi9sYXlvdXQvZGVmYXVsdHMiOjQxMywiLi9sYXlvdXQvbGF5b3V0X2F0dHJpYnV0ZXMiOjQxNH1dLDQxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2dlbzp7dmFsVHlwZToiZ2VvaWQiLGRmbHQ6ImdlbyJ9fX0se31dLDQxMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e3JhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciJ9LHt2YWxUeXBlOiJudW1iZXIifV19LHNob3dncmlkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSx0aWNrMDp7dmFsVHlwZToibnVtYmVyIn0sZHRpY2s6e3ZhbFR5cGU6Im51bWJlciJ9LGdyaWRjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5saWdodExpbmV9LGdyaWR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9fX0seyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjMwMH1dLDQxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9saWIiKSxpPXQoIi4uLy4uLy4uL2NvbnN0YW50cy9nZW9fY29uc3RhbnRzIiksbz10KCIuL2F4aXNfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIodCxlKXtyZXR1cm4gbi5jb2VyY2UocyxsLG8sdCxlKX1mdW5jdGlvbiBhKHQpe3ZhciByLG4sbyxhLHMsbCxjPWUuc2NvcGU7cmV0dXJuIndvcmxkIj09PWM/KHI9ZS5wcm9qZWN0aW9uLG49ci50eXBlLG89ci5yb3RhdGlvbixzPWlbdCsiU3BhbiJdLGw9dm9pZCAwIT09c1tuXT9zW25dLzI6c1siKiJdLzIsYT0ibG9uYXhpcyI9PT10P28ubG9uOm8ubGF0LFthLWwsYStsXSk6aS5zY29wZURlZmF1bHRzW2NdW3QrIlJhbmdlIl19Zm9yKHZhciBzLGwsYz1pLmF4ZXNOYW1lcyx1PTA7dTxjLmxlbmd0aDt1Kyspe3ZhciBoPWNbdV07cz10W2hdfHx7fSxsPXt9O3ZhciBmPWEoaCksZD1yKCJyYW5nZSIsZik7bi5ub25lT3JBbGwocy5yYW5nZSxsLnJhbmdlLFswLDFdKSxyKCJ0aWNrMCIsZFswXSkscigiZHRpY2siLCJsb25heGlzIj09PWg/MzA6MTApO3ZhciBwPXIoInNob3dncmlkIik7cCYmKHIoImdyaWRjb2xvciIpLHIoImdyaWR3aWR0aCIpKSxlW2hdPWwsZVtoXS5fZnVsbFJhbmdlPWZ9fX0seyIuLi8uLi8uLi9jb25zdGFudHMvZ2VvX2NvbnN0YW50cyI6MzU4LCIuLi8uLi8uLi9saWIiOjM3MywiLi9heGlzX2F0dHJpYnV0ZXMiOjQxMX1dLDQxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbixpPXIoInNjb3BlIiksbz0id29ybGQiIT09aSxzPWEuc2NvcGVEZWZhdWx0c1tpXSxjPXIoInJlc29sdXRpb24iKSx1PXIoInByb2plY3Rpb24udHlwZSIscy5wcm9qVHlwZSksaD0iYWxiZXJzIHVzYSI9PT11LGY9LTEhPT11LmluZGV4T2YoImNvbmljIik7aWYoZil7dmFyIGQ9cy5wcm9qUGFyYWxsZWxzfHxbMCw2MF07cigicHJvamVjdGlvbi5wYXJhbGxlbHMiLGQpfWlmKGgpZS5zY29wZT0idXNhIjtlbHNle3ZhciBwPXMucHJvalJvdGF0ZXx8WzAsMCwwXTtyKCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiIscFswXSkscigicHJvamVjdGlvbi5yb3RhdGlvbi5sYXQiLHBbMV0pLHIoInByb2plY3Rpb24ucm90YXRpb24ucm9sbCIscFsyXSksbj1yKCJzaG93Y29hc3RsaW5lcyIsIW8pLG4mJihyKCJjb2FzdGxpbmVjb2xvciIpLHIoImNvYXN0bGluZXdpZHRoIikpLG49cigic2hvd29jZWFuIiksbiYmcigib2NlYW5jb2xvciIpfXIoInByb2plY3Rpb24uc2NhbGUiKSxuPXIoInNob3dsYW5kIiksbiYmcigibGFuZGNvbG9yIiksbj1yKCJzaG93bGFrZXMiKSxuJiZyKCJsYWtlY29sb3IiKSxuPXIoInNob3dyaXZlcnMiKSxuJiYocigicml2ZXJjb2xvciIpLHIoInJpdmVyd2lkdGgiKSksbj1yKCJzaG93Y291bnRyaWVzIixvKSxuJiYocigiY291bnRyeWNvbG9yIikscigiY291bnRyeXdpZHRoIikpLCgidXNhIj09PWl8fCJub3J0aCBhbWVyaWNhIj09PWkmJjUwPT09YykmJihyKCJzaG93c3VidW5pdHMiLCEwKSxyKCJzdWJ1bml0Y29sb3IiKSxyKCJzdWJ1bml0d2lkdGgiKSksb3x8KG49cigic2hvd2ZyYW1lIiwhMCksbiYmKHIoImZyYW1lY29sb3IiKSxyKCJmcmFtZXdpZHRoIikpKSxyKCJiZ2NvbG9yIiksbCh0LGUpLGUuX2lzSGlnaFJlcz01MD09PWMsZS5fY2xpcEFuZ2xlPWEubG9uYXhpc1NwYW5bdV0vMixlLl9pc0FsYmVyc1VzYT1oLGUuX2lzQ29uaWM9ZixlLl9pc1Njb3BlZD1vO3ZhciBnPWUucHJvamVjdGlvbi5yb3RhdGlvbnx8e307ZS5wcm9qZWN0aW9uLl9yb3RhdGU9Wy1nLmxvbnx8MCwtZy5sYXR8fDAsZy5yb2xsfHwwXX12YXIgaT10KCIuLi8uLi8uLi9saWIiKSxvPXQoIi4uLy4uL3Bsb3RzIiksYT10KCIuLi8uLi8uLi9jb25zdGFudHMvZ2VvX2NvbnN0YW50cyIpLHM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLGw9dCgiLi9heGlzX2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGkuY29lcmNlKGwsYyxzLHQsZSl9aWYoZS5faGFzR2VvKWZvcih2YXIgbCxjLHU9by5maW5kU3VicGxvdElkcyhyLCJnZW8iKSxoPXUubGVuZ3RoLGY9MDtoPmY7ZisrKXt2YXIgZD11W2ZdO2w9dFtkXT90W2RdOnRbZF09e30sbD10W2RdLGM9e30sYSgiZG9tYWluLngiKSxhKCJkb21haW4ueSIsW2YvaCwoZisxKS9oXSksbihsLGMsYSksZVtkXT1jfX19LHsiLi4vLi4vLi4vY29uc3RhbnRzL2dlb19jb25zdGFudHMiOjM1OCwiLi4vLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RzIjo0MzcsIi4vYXhpc19kZWZhdWx0cyI6NDEyLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo0MTR9XSw0MTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi8uLi9jb25zdGFudHMvZ2VvX2NvbnN0YW50cyIpLG89dCgiLi9heGlzX2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e2RvbWFpbjp7eDp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxfSx7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MX1dLGRmbHQ6WzAsMV19LHk6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MX0se3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjF9XSxkZmx0OlswLDFdfX0scmVzb2x1dGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsxMTAsNTBdLGRmbHQ6MTEwLGNvZXJjZU51bWJlcjohMH0sc2NvcGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhpLnNjb3BlRGVmYXVsdHMpLGRmbHQ6IndvcmxkIn0scHJvamVjdGlvbjp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOk9iamVjdC5rZXlzKGkucHJvak5hbWVzKX0scm90YXRpb246e2xvbjp7dmFsVHlwZToibnVtYmVyIn0sbGF0Ont2YWxUeXBlOiJudW1iZXIifSxyb2xsOnt2YWxUeXBlOiJudW1iZXIifX0scGFyYWxsZWxzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciJ9LHt2YWxUeXBlOiJudW1iZXIifV19LHNjYWxlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxMCxkZmx0OjF9fSxzaG93Y29hc3RsaW5lczp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvYXN0bGluZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxjb2FzdGxpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LHNob3dsYW5kOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsYW5kY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkubGFuZENvbG9yfSxzaG93b2NlYW46e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9jZWFuY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Omkud2F0ZXJDb2xvcn0sc2hvd2xha2VzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsYWtlY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Omkud2F0ZXJDb2xvcn0sc2hvd3JpdmVyczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0scml2ZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS53YXRlckNvbG9yfSxyaXZlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hvd2NvdW50cmllczp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvdW50cnljb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sY291bnRyeXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hvd3N1YnVuaXRzOnt2YWxUeXBlOiJib29sZWFuIn0sc3VidW5pdGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxzdWJ1bml0d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfSxzaG93ZnJhbWU6e3ZhbFR5cGU6ImJvb2xlYW4ifSxmcmFtZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxmcmFtZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5iYWNrZ3JvdW5kfSxsb25heGlzOm8sbGF0YXhpczpvfX0seyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjMwMCwiLi4vLi4vLi4vY29uc3RhbnRzL2dlb19jb25zdGFudHMiOjM1OCwiLi9heGlzX2F0dHJpYnV0ZXMiOjQxMX1dLDQxNTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXtmdW5jdGlvbiB0KHQscil7cmV0dXJue3R5cGU6IkZlYXR1cmUiLGlkOnQuaWQscHJvcGVydGllczp0LnByb3BlcnRpZXMsZ2VvbWV0cnk6ZSh0Lmdlb21ldHJ5LHIpfX1mdW5jdGlvbiBlKHQscil7aWYoIXQpcmV0dXJuIG51bGw7aWYoIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT10LnR5cGUpcmV0dXJue3R5cGU6Ikdlb21ldHJ5Q29sbGVjdGlvbiIsZ2VvbWV0cmllczpvYmplY3QuZ2VvbWV0cmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGUodCxyKX0pfTtpZighay5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKXJldHVybiBudWxsO3ZhciBuPWtbdC50eXBlXTtyZXR1cm4gaS5nZW8uc3RyZWFtKHQscihuKSksbi5yZXN1bHQoKX1mdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG4odCl7aWYoKGU9dC5sZW5ndGgpPDQpcmV0dXJuITE7Zm9yKHZhciBlLHI9MCxuPXRbZS0xXVsxXSp0WzBdWzBdLXRbZS0xXVswXSp0WzBdWzFdOysrcjxlOyluKz10W3ItMV1bMV0qdFtyXVswXS10W3ItMV1bMF0qdFtyXVsxXTtyZXR1cm4gMD49bn1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPWVbMF0sbj1lWzFdLGk9ITEsbz0wLGE9dC5sZW5ndGgscz1hLTE7YT5vO3M9bysrKXt2YXIgbD10W29dLGM9bFswXSx1PWxbMV0saD10W3NdLGY9aFswXSxkPWhbMV07dT5uXmQ+biYmKGYtYykqKG4tdSkvKGQtdSkrYz5yJiYoaT0haSl9cmV0dXJuIGl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD4xP0w6LTE+dD8tTDpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByPSgyK0wpKk1hdGguc2luKGUpO2UvPTI7Zm9yKHZhciBuPTAsaT0xLzA7MTA+biYmTWF0aC5hYnMoaSk+TTtuKyspe3ZhciBvPU1hdGguY29zKGUpO2UtPWk9KGUrTWF0aC5zaW4oZSkqKG8rMiktcikvKDIqbyooMStvKSl9cmV0dXJuWzIvTWF0aC5zcXJ0KEUqKDQrRSkpKnQqKDErTWF0aC5jb3MoZSkpLDIqTWF0aC5zcXJ0KEUvKDQrRSkpKk1hdGguc2luKGUpXX1mdW5jdGlvbiBsKHQsZSl7ZnVuY3Rpb24gcihyLG4pe3ZhciBpPVIoci9lLG4pO3JldHVybiBpWzBdKj10LGl9cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKGU9dCksMT09PWU/UjplPT09MS8wP3U6KHIuaW52ZXJ0PWZ1bmN0aW9uKHIsbil7dmFyIGk9Ui5pbnZlcnQoci90LG4pO3JldHVybiBpWzBdKj1lLGl9LHIpfWZ1bmN0aW9uIGMoKXt2YXIgdD0yLGU9eihsKSxyPWUodCk7cmV0dXJuIHIuY29lZmZpY2llbnQ9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZSh0PStyKTp0fSxyfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm5bdCpNYXRoLmNvcyhlKS9NYXRoLmNvcyhlLz0yKSwyKk1hdGguc2luKGUpXX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuWzMqdC8oMipFKSpNYXRoLnNxcnQoRSpFLzMtZSplKSxlXX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuW3QsMS4yNSpNYXRoLmxvZyhNYXRoLnRhbihFLzQrLjQqZSkpXX1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixuPXQqTWF0aC5zaW4oZSksaT0zMDtkbyBlLT1yPShlK01hdGguc2luKGUpLW4pLygxK01hdGguY29zKGUpKTt3aGlsZShNYXRoLmFicyhyKT5NJiYtLWk+MCk7cmV0dXJuIGUvMn19ZnVuY3Rpb24gcCh0LGUscil7ZnVuY3Rpb24gbihyLG4pe3JldHVyblt0KnIqTWF0aC5jb3Mobj1pKG4pKSxlKk1hdGguc2luKG4pXX12YXIgaT1kKHIpO3JldHVybiBuLmludmVydD1mdW5jdGlvbihuLGkpe3ZhciBvPWEoaS9lKTtyZXR1cm5bbi8odCpNYXRoLmNvcyhvKSksYSgoMipvK01hdGguc2luKDIqbykpL3IpXX0sbn1mdW5jdGlvbiBnKHQsZSl7dmFyIHI9ZSplLG49cipyO3JldHVyblt0KiguODcwNy0uMTMxOTc5KnIrbiooLS4wMTM3OTErbiooLjAwMzk3MSpyLS4wMDE1MjkqbikpKSxlKigxLjAwNzIyNityKiguMDE1MDg1K24qKC0uMDQ0NDc1Ky4wMjg4NzQqci0uMDA1OTE2Km4pKSldfWZ1bmN0aW9uIHYodCxlKXt2YXIgcixuPU1hdGgubWluKDE4LDM2Kk1hdGguYWJzKGUpL0UpLGk9TWF0aC5mbG9vcihuKSxvPW4taSxhPShyPUlbaV0pWzBdLHM9clsxXSxsPShyPUlbKytpXSlbMF0sYz1yWzFdLHU9KHI9SVtNYXRoLm1pbigxOSwrK2kpXSlbMF0saD1yWzFdO3JldHVyblt0KihsK28qKHUtYSkvMitvKm8qKHUtMipsK2EpLzIpLChlPjA/TDotTCkqKGMrbyooaC1zKS8yK28qbyooaC0yKmMrcykvMildfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm5bdCpNYXRoLmNvcyhlKSxlXX1pLmdlby5wcm9qZWN0PWZ1bmN0aW9uKHQscil7dmFyIG49ci5zdHJlYW07aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJub3QgeWV0IHN1cHBvcnRlZCIpO3JldHVybih0JiZ5Lmhhc093blByb3BlcnR5KHQudHlwZSk/eVt0LnR5cGVdOmUpKHQsbil9O3ZhciB5PXtGZWF0dXJlOnQsRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24oZSxyKXtyZXR1cm57dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOmUuZmVhdHVyZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUscil9KX19fSxiPVtdLHg9W10sXz17cG9pbnQ6ZnVuY3Rpb24odCxlKXtiLnB1c2goW3QsZV0pfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1iLmxlbmd0aD9iLmxlbmd0aDwyP3t0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6YlswXX06e3R5cGU6Ik11bHRpUG9pbnQiLGNvb3JkaW5hdGVzOmJ9Om51bGw7cmV0dXJuIGI9W10sdH19LHc9e2xpbmVTdGFydDpyLHBvaW50OmZ1bmN0aW9uKHQsZSl7Yi5wdXNoKFt0LGVdKX0sbGluZUVuZDpmdW5jdGlvbigpe2IubGVuZ3RoJiYoeC5wdXNoKGIpLGI9W10pfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD14Lmxlbmd0aD94Lmxlbmd0aDwyP3t0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp4WzBdfTp7dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczp4fTpudWxsO3JldHVybiB4PVtdLHR9fSxBPXtwb2x5Z29uU3RhcnQ6cixsaW5lU3RhcnQ6cixwb2ludDpmdW5jdGlvbih0LGUpe2IucHVzaChbdCxlXSl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD1iLmxlbmd0aDtpZih0KXtkbyBiLnB1c2goYlswXS5zbGljZSgpKTt3aGlsZSgrK3Q8NCk7eC5wdXNoKGIpLGI9W119fSxwb2x5Z29uRW5kOnIscmVzdWx0OmZ1bmN0aW9uKCl7aWYoIXgubGVuZ3RoKXJldHVybiBudWxsO3ZhciB0PVtdLGU9W107cmV0dXJuIHguZm9yRWFjaChmdW5jdGlvbihyKXtuKHIpP3QucHVzaChbcl0pOmUucHVzaChyKX0pLGUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1lWzBdO3Quc29tZShmdW5jdGlvbih0KXtyZXR1cm4gbyh0WzBdLHIpPyh0LnB1c2goZSksITApOnZvaWQgMH0pfHx0LnB1c2goW2VdKX0pLHg9W10sdC5sZW5ndGg/dC5sZW5ndGg+MT97dHlwZToiTXVsdGlQb2x5Z29uIixjb29yZGluYXRlczp0fTp7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6dFswXX06bnVsbH19LGs9e1BvaW50Ol8sTXVsdGlQb2ludDpfLExpbmVTdHJpbmc6dyxNdWx0aUxpbmVTdHJpbmc6dyxQb2x5Z29uOkEsTXVsdGlQb2x5Z29uOkEsU3BoZXJlOkF9LE09MWUtNixUPU0qTSxFPU1hdGguUEksTD1FLzIsUz0oTWF0aC5zcXJ0KEUpLEUvMTgwKSxDPTE4MC9FLFA9aS5nZW8ucHJvamVjdGlvbix6PWkuZ2VvLnByb2plY3Rpb25NdXRhdG9yO2kuZ2VvLmludGVycnVwdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7Zm9yKHZhciBuPTA+cj8tMToxLGk9bFsrKDA+cildLG89MCxhPWkubGVuZ3RoLTE7YT5vJiZlPmlbb11bMl1bMF07KytvKTt2YXIgcz10KGUtaVtvXVsxXVswXSxyKTtyZXR1cm4gc1swXSs9dChpW29dWzFdWzBdLG4qcj5uKmlbb11bMF1bMV0/aVtvXVswXVsxXTpyKVswXSxzfWZ1bmN0aW9uIHIoKXtzPWwubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXt2YXIgcixuPXQoZVswXVswXSxlWzBdWzFdKVswXSxpPXQoZVsyXVswXSxlWzJdWzFdKVswXSxvPXQoZVsxXVswXSxlWzBdWzFdKVsxXSxhPXQoZVsxXVswXSxlWzFdWzFdKVsxXTtyZXR1cm4gbz5hJiYocj1vLG89YSxhPXIpLFtbbixvXSxbaSxhXV19KX0pfWZ1bmN0aW9uIG4oKXtmb3IodmFyIHQ9MWUtNixlPVtdLHI9MCxuPWxbMF0ubGVuZ3RoO24+cjsrK3Ipe3ZhciBhPWxbMF1bcl0scz0xODAqYVswXVswXS9FLGM9MTgwKmFbMF1bMV0vRSx1PTE4MCphWzFdWzFdL0UsaD0xODAqYVsyXVswXS9FLGY9MTgwKmFbMl1bMV0vRTtlLnB1c2gobyhbW3MrdCxjK3RdLFtzK3QsdS10XSxbaC10LHUtdF0sW2gtdCxmK3RdXSwzMCkpfWZvcih2YXIgcj1sWzFdLmxlbmd0aC0xO3I+PTA7LS1yKXt2YXIgYT1sWzFdW3JdLHM9MTgwKmFbMF1bMF0vRSxjPTE4MCphWzBdWzFdL0UsdT0xODAqYVsxXVsxXS9FLGg9MTgwKmFbMl1bMF0vRSxmPTE4MCphWzJdWzFdL0U7ZS5wdXNoKG8oW1toLXQsZi10XSxbaC10LHUrdF0sW3MrdCx1K3RdLFtzK3QsYy10XV0sMzApKX1yZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2kubWVyZ2UoZSldfX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByLG4saSxvPS0xLGE9dC5sZW5ndGgscz10WzBdLGw9W107KytvPGE7KXtyPXRbb10sbj0oclswXS1zWzBdKS9lLGk9KHJbMV0tc1sxXSkvZTtmb3IodmFyIGM9MDtlPmM7KytjKWwucHVzaChbc1swXStjKm4sc1sxXStjKmldKTtzPXJ9cmV0dXJuIGwucHVzaChyKSxsfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gTWF0aC5hYnModFswXS1lWzBdKTxNJiZNYXRoLmFicyh0WzFdLWVbMV0pPE19dmFyIHMsbD1bW1tbLUUsMF0sWzAsTF0sW0UsMF1dXSxbW1stRSwwXSxbMCwtTF0sW0UsMF1dXV07dC5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihyLG4pe2Zvcih2YXIgaT1zWysoMD5uKV0sbz1sWysoMD5uKV0sYz0wLHU9aS5sZW5ndGg7dT5jOysrYyl7dmFyIGg9aVtjXTtpZihoWzBdWzBdPD1yJiZyPGhbMV1bMF0mJmhbMF1bMV08PW4mJm48aFsxXVsxXSl7dmFyIGY9dC5pbnZlcnQoci10KG9bY11bMV1bMF0sMClbMF0sbik7cmV0dXJuIGZbMF0rPW9bY11bMV1bMF0sYShlKGZbMF0sZlsxXSksW3Isbl0pP2Y6bnVsbH19fSk7dmFyIGM9aS5nZW8ucHJvamVjdGlvbihlKSx1PWMuc3RyZWFtO3JldHVybiBjLnN0cmVhbT1mdW5jdGlvbih0KXt2YXIgZT1jLnJvdGF0ZSgpLHI9dSh0KSxvPShjLnJvdGF0ZShbMCwwXSksdSh0KSk7cmV0dXJuIGMucm90YXRlKGUpLHIuc3BoZXJlPWZ1bmN0aW9uKCl7aS5nZW8uc3RyZWFtKG4oKSxvKX0scn0sYy5sb2Jlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW1t0WzBdWzBdKkUvMTgwLHRbMF1bMV0qRS8xODBdLFt0WzFdWzBdKkUvMTgwLHRbMV1bMV0qRS8xODBdLFt0WzJdWzBdKkUvMTgwLHRbMl1bMV0qRS8xODBdXX0pfSkscigpLGMpOmwubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm5bWzE4MCp0WzBdWzBdL0UsMTgwKnRbMF1bMV0vRV0sWzE4MCp0WzFdWzBdL0UsMTgwKnRbMV1bMV0vRV0sWzE4MCp0WzJdWzBdL0UsMTgwKnRbMl1bMV0vRV1dfSl9KX0sY30scy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0uNSplKk1hdGguc3FydCgoNCtFKS9FKSxuPWEociksaT1NYXRoLmNvcyhuKTtyZXR1cm5bdC8oMi9NYXRoLnNxcnQoRSooNCtFKSkqKDEraSkpLGEoKG4rciooaSsyKSkvKDIrTCkpXX0sKGkuZ2VvLmVja2VydDQ9ZnVuY3Rpb24oKXtyZXR1cm4gUChzKX0pLnJhdz1zO3ZhciBSPWkuZ2VvLmF6aW11dGhhbEVxdWFsQXJlYS5yYXc7dS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0yKmEoZS8yKTtyZXR1cm5bdCpNYXRoLmNvcyhyLzIpL01hdGguY29zKHIpLHJdfSwoaS5nZW8uaGFtbWVyPWMpLnJhdz1sLGguaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWzIvMypFKnQvTWF0aC5zcXJ0KEUqRS8zLWUqZSksZV19LChpLmdlby5rYXZyYXlza2l5Nz1mdW5jdGlvbigpe3JldHVybiBQKGgpfSkucmF3PWgsZi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyLjUqTWF0aC5hdGFuKE1hdGguZXhwKC44KmUpKS0uNjI1KkVdfSwoaS5nZW8ubWlsbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIFAoZil9KS5yYXc9Zjt2YXIgTz0oZChFKSxwKE1hdGguU1FSVDIvTCxNYXRoLlNRUlQyLEUpKTsoaS5nZW8ubW9sbHdlaWRlPWZ1bmN0aW9uKCl7cmV0dXJuIFAoTyl9KS5yYXc9TyxnLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciByLG49ZSxpPTI1O2Rve3ZhciBvPW4qbixhPW8qbztuLT1yPShuKigxLjAwNzIyNitvKiguMDE1MDg1K2EqKC0uMDQ0NDc1Ky4wMjg4NzQqby0uMDA1OTE2KmEpKSktZSkvKDEuMDA3MjI2K28qKC4wNDUyNTUrYSooLTAuMzExMzI1Ky4yNTk4NjYqby0uMDA1OTE2KjExKmEpKSl9d2hpbGUoTWF0aC5hYnMocik+TSYmLS1pPjApO3JldHVyblt0LyguODcwNysobz1uKm4pKigtLjEzMTk3OStvKigtLjAxMzc5MStvKm8qbyooLjAwMzk3MS0uMDAxNTI5Km8pKSkpLG5dfSwoaS5nZW8ubmF0dXJhbEVhcnRoPWZ1bmN0aW9uKCl7cmV0dXJuIFAoZyl9KS5yYXc9Zzt2YXIgST1bWy45OTg2LC0uMDYyXSxbMSwwXSxbLjk5ODYsLjA2Ml0sWy45OTU0LC4xMjRdLFsuOTksLjE4Nl0sWy45ODIyLC4yNDhdLFsuOTczLC4zMV0sWy45NiwuMzcyXSxbLjk0MjcsLjQzNF0sWy45MjE2LC40OTU4XSxbLjg5NjIsLjU1NzFdLFsuODY3OSwuNjE3Nl0sWy44MzUsLjY3NjldLFsuNzk4NiwuNzM0Nl0sWy43NTk3LC43OTAzXSxbLjcxODYsLjg0MzVdLFsuNjczMiwuODkzNl0sWy42MjEzLC45Mzk0XSxbLjU3MjIsLjk3NjFdLFsuNTMyMiwxXV07SS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RbMV0qPTEuMDE0NH0pLHYuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS9MLG49OTAqcixpPU1hdGgubWluKDE4LE1hdGguYWJzKG4vNSkpLG89TWF0aC5tYXgoMCxNYXRoLmZsb29yKGkpKTtkb3t2YXIgYT1JW29dWzFdLHM9SVtvKzFdWzFdLGw9SVtNYXRoLm1pbigxOSxvKzIpXVsxXSxjPWwtYSx1PWwtMipzK2EsaD0yKihNYXRoLmFicyhyKS1zKS9jLGY9dS9jLGQ9aCooMS1mKmgqKDEtMipmKmgpKTtpZihkPj0wfHwxPT09byl7bj0oZT49MD81Oi01KSooZCtpKTt2YXIgcCxnPTUwO2RvIGk9TWF0aC5taW4oMTgsTWF0aC5hYnMobikvNSksbz1NYXRoLmZsb29yKGkpLGQ9aS1vLGE9SVtvXVsxXSxzPUlbbysxXVsxXSxsPUlbTWF0aC5taW4oMTksbysyKV1bMV0sbi09KHA9KGU+PTA/TDotTCkqKHMrZCoobC1hKS8yK2QqZCoobC0yKnMrYSkvMiktZSkqQzt3aGlsZShNYXRoLmFicyhwKT5UJiYtLWc+MCk7YnJlYWt9fXdoaWxlKC0tbz49MCk7dmFyIHY9SVtvXVswXSxtPUlbbysxXVswXSx5PUlbTWF0aC5taW4oMTksbysyKV1bMF07cmV0dXJuW3QvKG0rZCooeS12KS8yK2QqZCooeS0yKm0rdikvMiksbipTXX0sKGkuZ2VvLnJvYmluc29uPWZ1bmN0aW9uKCl7cmV0dXJuIFAodil9KS5yYXc9dixtLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0L01hdGguY29zKGUpLGVdfSwoaS5nZW8uc2ludXNvaWRhbD1mdW5jdGlvbigpe3JldHVybiBQKG0pfSkucmF3PW19dmFyIGk9dCgiZDMiKTtlLmV4cG9ydHM9bn0se2QzOjcwfV0sNDE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj10LnByb2plY3Rpb24sbj10LmxvbmF4aXMsYT10LmxhdGF4aXMsbD10LmRvbWFpbixjPXQuZnJhbWV3aWR0aHx8MCx1PWUudyoobC54WzFdLWwueFswXSksaD1lLmgqKGwueVsxXS1sLnlbMF0pLGY9bi5yYW5nZVswXStzLGQ9bi5yYW5nZVsxXS1zLHA9YS5yYW5nZVswXStzLGc9YS5yYW5nZVsxXS1zLHY9bi5fZnVsbFJhbmdlWzBdK3MsbT1uLl9mdWxsUmFuZ2VbMV0tcyx5PWEuX2Z1bGxSYW5nZVswXStzLGI9YS5fZnVsbFJhbmdlWzFdLXM7ci5fdHJhbnNsYXRlMD1bZS5sK3UvMixlLnQraC8yXTt2YXIgeD1kLWYsXz1nLXAsdz1bZit4LzIscCtfLzJdLEE9ci5fcm90YXRlO3IuX2NlbnRlcj1bd1swXStBWzBdLHdbMV0rQVsxXV07dmFyIGs9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gTWF0aC5taW4oXyp1Lyh0WzFdWzBdLXRbMF1bMF0pLF8qaC8odFsxXVsxXS10WzBdWzFdKSl9dmFyIGEscyxsLHgsXz1lLnNjYWxlKCksdz1yLl90cmFuc2xhdGUwLEE9aShmLHAsZCxnKSxrPWkodix5LG0sYik7bD1vKGUsQSksYT1uKGwpLHg9byhlLGspLHIuX2Z1bGxTY2FsZT1uKHgpLGUuc2NhbGUoYSksbD1vKGUsQSkscz1bd1swXS1sWzBdWzBdK2Msd1sxXS1sWzBdWzFdK2NdLHIuX3RyYW5zbGF0ZT1zLGUudHJhbnNsYXRlKHMpLGw9byhlLEEpLHQuX2lzQWxiZXJzVXNhfHxlLmNsaXBFeHRlbnQobCksYT1yLnNjYWxlKmEsci5fc2NhbGU9YSx0Ll93aWR0aD1NYXRoLnJvdW5kKGxbMV1bMF0pK2MsdC5faGVpZ2h0PU1hdGgucm91bmQobFsxXVsxXSkrYyx0Ll9tYXJnaW5YPSh1LU1hdGgucm91bmQobFsxXVswXSkpLzIsdC5fbWFyZ2luWT0oaC1NYXRoLnJvdW5kKGxbMV1bMV0pKS8yfTtyZXR1cm4ga31mdW5jdGlvbiBpKHQsZSxyLG4pe3ZhciBpPShyLXQpLzQ7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltbW3QsZV0sW3Qsbl0sW3QraSxuXSxbdCsyKmksbl0sW3QrMyppLG5dLFtyLG5dLFtyLGVdLFtyLWksZV0sW3ItMippLGVdLFtyLTMqaSxlXSxbdCxlXV1dfX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGEuZ2VvLnBhdGgoKS5wcm9qZWN0aW9uKHQpLmJvdW5kcyhlKX12YXIgYT10KCJkMyIpLHM9dCgiLi4vLi4vY29uc3RhbnRzL2dlb19jb25zdGFudHMiKS5jbGlwUGFkO2UuZXhwb3J0cz1ufSx7Ii4uLy4uL2NvbnN0YW50cy9nZW9fY29uc3RhbnRzIjozNTgsZDM6NzB9XSw0MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByO3JldHVybihyPWUuX2lzU2NvcGVkP286ZS5fY2xpcEFuZ2xlP3M6YSkodCxlLnByb2plY3Rpb24pfWZ1bmN0aW9uIGkodCxlKXt2YXIgcj1lLl9mdWxsU2NhbGU7cmV0dXJuIF8uYmVoYXZpb3Iuem9vbSgpLnRyYW5zbGF0ZSh0LnRyYW5zbGF0ZSgpKS5zY2FsZSh0LnNjYWxlKCkpLnNjYWxlRXh0ZW50KFsuNSpyLDEwMCpyXSl9ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIHIoKXtfLnNlbGVjdCh0aGlzKS5zdHlsZShrKX1mdW5jdGlvbiBuKCl7YS5zY2FsZShfLmV2ZW50LnNjYWxlKS50cmFuc2xhdGUoXy5ldmVudC50cmFuc2xhdGUpLHQucmVuZGVyKCl9ZnVuY3Rpb24gbygpe18uc2VsZWN0KHRoaXMpLnN0eWxlKE0pfXZhciBhPXQucHJvamVjdGlvbixzPWkoYSxlKTtyZXR1cm4gcy5vbigiem9vbXN0YXJ0IixyKS5vbigiem9vbSIsbikub24oInpvb21lbmQiLG8pLHN9ZnVuY3Rpb24gYSh0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHYuaW52ZXJ0KHQpfWZ1bmN0aW9uIG4odCl7dmFyIGU9dihyKHQpKTtyZXR1cm4gTWF0aC5hYnMoZVswXS10WzBdKT55fHxNYXRoLmFicyhlWzFdLXRbMV0pPnl9ZnVuY3Rpb24gbygpe18uc2VsZWN0KHRoaXMpLnN0eWxlKGspLGw9Xy5tb3VzZSh0aGlzKSxjPXYucm90YXRlKCksdT12LnRyYW5zbGF0ZSgpLGg9YyxmPXIobCl9ZnVuY3Rpb24gYSgpe3JldHVybiBkPV8ubW91c2UodGhpcyksbihsKT8obS5zY2FsZSh2LnNjYWxlKCkpLHZvaWQgbS50cmFuc2xhdGUodi50cmFuc2xhdGUoKSkpOih2LnNjYWxlKF8uZXZlbnQuc2NhbGUpLHYudHJhbnNsYXRlKFt1WzBdLF8uZXZlbnQudHJhbnNsYXRlWzFdXSksZj9yKGQpJiYoZz1yKGQpLHA9W2hbMF0rKGdbMF0tZlswXSksY1sxXSxjWzJdXSx2LnJvdGF0ZShwKSxoPXApOihsPWQsZj1yKGwpKSx2b2lkIHQucmVuZGVyKCkpfWZ1bmN0aW9uIHMoKXtfLnNlbGVjdCh0aGlzKS5zdHlsZShNKX12YXIgbCxjLHUsaCxmLGQscCxnLHY9dC5wcm9qZWN0aW9uLG09aSh2LGUpLHk9MjtyZXR1cm4gbS5vbigiem9vbXN0YXJ0IixvKS5vbigiem9vbSIsYSkub24oInpvb21lbmQiLHMpLG19ZnVuY3Rpb24gcyh0LGUpe2Z1bmN0aW9uIHIodCl7bSsrfHx0KHt0eXBlOiJ6b29tc3RhcnQifSl9ZnVuY3Rpb24gbih0KXt0KHt0eXBlOiJ6b29tIn0pfWZ1bmN0aW9uIG8odCl7LS1tfHx0KHt0eXBlOiJ6b29tZW5kIn0pfXZhciBhLHM9dC5wcm9qZWN0aW9uLGQ9e3I6cy5yb3RhdGUoKSxrOnMuc2NhbGUoKX0scD1pKHMsZSksZz14KHAsInpvb21zdGFydCIsInpvb20iLCJ6b29tZW5kIiksbT0wLHk9cC5vbjtyZXR1cm4gcC5vbigiem9vbXN0YXJ0IixmdW5jdGlvbigpe18uc2VsZWN0KHRoaXMpLnN0eWxlKGspO3ZhciB0PV8ubW91c2UodGhpcyksZT1zLnJvdGF0ZSgpLGk9ZSxvPXMudHJhbnNsYXRlKCksbT1jKGUpO2E9bChzLHQpLHkuY2FsbChwLCJ6b29tIixmdW5jdGlvbigpe3ZhciByPV8ubW91c2UodGhpcyk7aWYocy5zY2FsZShkLms9Xy5ldmVudC5zY2FsZSksYSl7aWYobChzLHIpKXtzLnJvdGF0ZShlKS50cmFuc2xhdGUobyk7dmFyIGM9bChzLHIpLHA9aChhLGMpLHk9dih1KG0scCkpLGI9ZC5yPWYoeSxhLGkpO2lzRmluaXRlKGJbMF0pJiZpc0Zpbml0ZShiWzFdKSYmaXNGaW5pdGUoYlsyXSl8fChiPWkpLHMucm90YXRlKGIpLGk9Yn19ZWxzZSB0PXIsYT1sKHMsdCk7bihnLm9mKHRoaXMsYXJndW1lbnRzKSl9KSxyKGcub2YodGhpcyxhcmd1bWVudHMpKX0pLm9uKCJ6b29tZW5kIixmdW5jdGlvbigpe18uc2VsZWN0KHRoaXMpLnN0eWxlKE0pLHkuY2FsbChwLCJ6b29tIixudWxsKSxvKGcub2YodGhpcyxhcmd1bWVudHMpKX0pLm9uKCJ6b29tLnJlZHJhdyIsZnVuY3Rpb24oKXt0LnJlbmRlcigpfSksXy5yZWJpbmQocCxnLCJvbiIpfWZ1bmN0aW9uIGwodCxlKXt2YXIgcj10LmludmVydChlKTtyZXR1cm4gciYmaXNGaW5pdGUoclswXSkmJmlzRmluaXRlKHJbMV0pJiZtKHIpfWZ1bmN0aW9uIGModCl7dmFyIGU9LjUqdFswXSp3LHI9LjUqdFsxXSp3LG49LjUqdFsyXSp3LGk9TWF0aC5zaW4oZSksbz1NYXRoLmNvcyhlKSxhPU1hdGguc2luKHIpLHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihuKSxjPU1hdGguY29zKG4pO3JldHVybltvKnMqYytpKmEqbCxpKnMqYy1vKmEqbCxvKmEqYytpKnMqbCxvKnMqbC1pKmEqY119ZnVuY3Rpb24gdSh0LGUpe3ZhciByPXRbMF0sbj10WzFdLGk9dFsyXSxvPXRbM10sYT1lWzBdLHM9ZVsxXSxsPWVbMl0sYz1lWzNdO3JldHVybltyKmEtbipzLWkqbC1vKmMscipzK24qYStpKmMtbypsLHIqbC1uKmMraSphK28qcyxyKmMrbipsLWkqcytvKmFdfWZ1bmN0aW9uIGgodCxlKXtpZih0JiZlKXt2YXIgcj1iKHQsZSksbj1NYXRoLnNxcnQoeShyLHIpKSxpPS41Kk1hdGguYWNvcyhNYXRoLm1heCgtMSxNYXRoLm1pbigxLHkodCxlKSkpKSxvPU1hdGguc2luKGkpL247cmV0dXJuIG4mJltNYXRoLmNvcyhpKSxyWzJdKm8sLXJbMV0qbyxyWzBdKm9dfX1mdW5jdGlvbiBmKHQsZSxyKXt2YXIgbj1nKGUsMix0WzBdKTtuPWcobiwxLHRbMV0pLG49ZyhuLDAsdFsyXS1yWzJdKTt2YXIgaSxvLGE9ZVswXSxzPWVbMV0sbD1lWzJdLGM9blswXSx1PW5bMV0saD1uWzJdLGY9TWF0aC5hdGFuMihzLGEpKkEscD1NYXRoLnNxcnQoYSphK3Mqcyk7TWF0aC5hYnModSk+cD8obz0odT4wPzkwOi05MCktZixpPTApOihvPU1hdGguYXNpbih1L3ApKkEtZixpPU1hdGguc3FydChwKnAtdSp1KSk7dmFyIHY9MTgwLW8tMipmLG09KE1hdGguYXRhbjIoaCxjKS1NYXRoLmF0YW4yKGwsaSkpKkEseT0oTWF0aC5hdGFuMihoLGMpLU1hdGguYXRhbjIobCwtaSkpKkEsYj1kKHJbMF0sclsxXSxvLG0pLHg9ZChyWzBdLHJbMV0sdix5KTtyZXR1cm4geD49Yj9bbyxtLHJbMl1dOlt2LHksclsyXV19ZnVuY3Rpb24gZCh0LGUscixuKXt2YXIgaT1wKHItdCksbz1wKG4tZSk7cmV0dXJuIE1hdGguc3FydChpKmkrbypvKX1mdW5jdGlvbiBwKHQpe3JldHVybih0JTM2MCs1NDApJTM2MC0xODB9ZnVuY3Rpb24gZyh0LGUscil7dmFyIG49cip3LGk9dC5zbGljZSgpLG89MD09PWU/MTowLGE9Mj09PWU/MToyLHM9TWF0aC5jb3MobiksbD1NYXRoLnNpbihuKTtyZXR1cm4gaVtvXT10W29dKnMtdFthXSpsLGlbYV09dFthXSpzK3Rbb10qbCxpfWZ1bmN0aW9uIHYodCl7cmV0dXJuW01hdGguYXRhbjIoMioodFswXSp0WzFdK3RbMl0qdFszXSksMS0yKih0WzFdKnRbMV0rdFsyXSp0WzJdKSkqQSxNYXRoLmFzaW4oTWF0aC5tYXgoLTEsTWF0aC5taW4oMSwyKih0WzBdKnRbMl0tdFszXSp0WzFdKSkpKSpBLE1hdGguYXRhbjIoMioodFswXSp0WzNdK3RbMV0qdFsyXSksMS0yKih0WzJdKnRbMl0rdFszXSp0WzNdKSkqQV19ZnVuY3Rpb24gbSh0KXt2YXIgZT10WzBdKncscj10WzFdKncsbj1NYXRoLmNvcyhyKTtyZXR1cm5bbipNYXRoLmNvcyhlKSxuKk1hdGguc2luKGUpLE1hdGguc2luKHIpXX1mdW5jdGlvbiB5KHQsZSl7Zm9yKHZhciByPTAsbj0wLGk9dC5sZW5ndGg7aT5uOysrbilyKz10W25dKmVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gYih0LGUpe3JldHVyblt0WzFdKmVbMl0tdFsyXSplWzFdLHRbMl0qZVswXS10WzBdKmVbMl0sdFswXSplWzFdLXRbMV0qZVswXV19ZnVuY3Rpb24geCh0KXtmb3IodmFyIGU9MCxyPWFyZ3VtZW50cy5sZW5ndGgsbj1bXTsrK2U8cjspbi5wdXNoKGFyZ3VtZW50c1tlXSk7dmFyIGk9Xy5kaXNwYXRjaC5hcHBseShudWxsLG4pO3JldHVybiBpLm9mPWZ1bmN0aW9uKGUscil7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBvO3RyeXtvPW4uc291cmNlRXZlbnQ9Xy5ldmVudCxuLnRhcmdldD10LF8uZXZlbnQ9bixpW24udHlwZV0uYXBwbHkoZSxyKX1maW5hbGx5e18uZXZlbnQ9b319fSxpfXZhciBfPXQoImQzIiksdz1NYXRoLlBJLzE4MCxBPTE4MC9NYXRoLlBJLGs9e2N1cnNvcjoicG9pbnRlciJ9LE09e2N1cnNvcjoiYXV0byJ9O2UuZXhwb3J0cz1ufSx7ZDM6NzB9XSw0MTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPXQucHJvamVjdGlvbixuPXQuem9vbSxvPWZ1bmN0aW9uKCl7dC5tYWtlUHJvamVjdGlvbihlKSx0Lm1ha2VQYXRoKCksbi5zY2FsZShyLnNjYWxlKCkpLG4udHJhbnNsYXRlKHIudHJhbnNsYXRlKCkpLGkubG9uZVVuaG92ZXIodC5ob3ZlckNvbnRhaW5lciksdC5yZW5kZXIoKX07cmV0dXJuIG99dmFyIGk9dCgiLi4vY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0Iik7ZS5leHBvcnRzPW59LHsiLi4vY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IjozOTh9XSw0MTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3RoaXMuZWxlbWVudD10LHRoaXMucGxvdD1lLHRoaXMubW91c2VMaXN0ZW5lcj1udWxsLHRoaXMud2hlZWxMaXN0ZW5lcj1udWxsLHRoaXMubGFzdElucHV0VGltZT1EYXRlLm5vdygpLHRoaXMubGFzdFBvcz1bMCwwXSx0aGlzLmJveEVuYWJsZWQ9ITEsdGhpcy5ib3hTdGFydD1bMCwwXSx0aGlzLmJveEVuZD1bMCwwXX1mdW5jdGlvbiBpKHQpe3ZhciBlPXQubW91c2VDb250YWluZXIscj10LmdscGxvdCxpPW5ldyBuKGUscik7cmV0dXJuIGkubW91c2VMaXN0ZW5lcj1vKGUsZnVuY3Rpb24oZSxuLG8pe2Z1bmN0aW9uIGEoZSxyLG4pe3ZhciBvPU1hdGgubWluKHIsbiksYT1NYXRoLm1heChyLG4pO28hPT1hPyhlWzBdPW8sZVsxXT1hLGkuZGF0YUJveD1lKToodC5zZWxlY3RCb3guc2VsZWN0Qm94PVswLDAsMSwxXSx0LmdscGxvdC5zZXREaXJ0eSgpKX12YXIgcz10LnhheGlzLnJhbmdlLGw9dC55YXhpcy5yYW5nZSxjPXIudmlld0JveCx1PWkubGFzdFBvc1swXSxoPWkubGFzdFBvc1sxXTtzd2l0Y2gobio9ci5waXhlbFJhdGlvLG8qPXIucGl4ZWxSYXRpbyxvPWNbM10tY1sxXS1vLHQuZnVsbExheW91dC5kcmFnbW9kZSl7Y2FzZSJ6b29tIjppZihlKXt2YXIgZj1uLyhjWzJdLWNbMF0pKihzWzFdLXNbMF0pK3NbMF0sZD1vLyhjWzNdLWNbMV0pKihsWzFdLWxbMF0pK2xbMF07aS5ib3hFbmFibGVkfHwoaS5ib3hTdGFydFswXT1mLGkuYm94U3RhcnRbMV09ZCksaS5ib3hFbmRbMF09ZixpLmJveEVuZFsxXT1kLGkuYm94RW5hYmxlZD0hMH1lbHNlIGkuYm94RW5hYmxlZCYmKGEocyxpLmJveFN0YXJ0WzBdLGkuYm94RW5kWzBdKSxhKGwsaS5ib3hTdGFydFsxXSxpLmJveEVuZFsxXSksaS5ib3hFbmFibGVkPSExKTticmVhaztjYXNlInBhbiI6aWYoaS5ib3hFbmFibGVkPSExLGUpe3ZhciBwPSh1LW4pKihzWzFdLXNbMF0pLyhyLnZpZXdCb3hbMl0tci52aWV3Qm94WzBdKSxnPShoLW8pKihsWzFdLWxbMF0pLyhyLnZpZXdCb3hbM10tci52aWV3Qm94WzFdKTtzWzBdKz1wLHNbMV0rPXAsbFswXSs9ZyxsWzFdKz1nLGkubGFzdElucHV0VGltZT1EYXRlLm5vdygpLHQuY2FtZXJhQ2hhbmdlZCgpfX1pLmxhc3RQb3NbMF09bixpLmxhc3RQb3NbMV09b30pLGkud2hlZWxMaXN0ZW5lcj1hKGUsZnVuY3Rpb24oZSxuKXt2YXIgbz10LnhheGlzLnJhbmdlLGE9dC55YXhpcy5yYW5nZSxzPXIudmlld0JveCxsPWkubGFzdFBvc1swXSxjPWkubGFzdFBvc1sxXTtzd2l0Y2godC5mdWxsTGF5b3V0LmRyYWdtb2RlKXtjYXNlInpvb20iOmJyZWFrO2Nhc2UicGFuIjp2YXIgdT1NYXRoLmV4cCguMSpuLyhzWzNdLXNbMV0pKSxoPWwvKHNbMl0tc1swXSkqKG9bMV0tb1swXSkrb1swXSxmPWMvKHNbM10tc1sxXSkqKGFbMV0tYVswXSkrYVswXTtvWzBdPShvWzBdLWgpKnUraCxvWzFdPShvWzFdLWgpKnUraCxhWzBdPShhWzBdLWYpKnUrZixhWzFdPShhWzFdLWYpKnUrZixpLmxhc3RJbnB1dFRpbWU9RGF0ZS5ub3coKSx0LmNhbWVyYUNoYW5nZWQoKX1yZXR1cm4hMH0pLGl9dmFyIG89dCgibW91c2UtY2hhbmdlIiksYT10KCJtb3VzZS13aGVlbCIpO2UuZXhwb3J0cz1pfSx7Im1vdXNlLWNoYW5nZSI6MTk4LCJtb3VzZS13aGVlbCI6MjAyfV0sNDIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dGhpcy5zY2VuZT10LHRoaXMuZ2w9dC5nbCx0aGlzLnBpeGVsUmF0aW89dC5waXhlbFJhdGlvLHRoaXMuc2NyZWVuQm94PVswLDAsMSwxXSx0aGlzLnZpZXdCb3g9WzAsMCwxLDFdLHRoaXMuZGF0YUJveD1bLTEsLTEsMSwxXSx0aGlzLmJvcmRlckxpbmVFbmFibGU9WyExLCExLCExLCExXSx0aGlzLmJvcmRlckxpbmVXaWR0aD1bMSwxLDEsMV0sdGhpcy5ib3JkZXJMaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aWNrcz1bW10sW11dLHRoaXMudGlja0VuYWJsZT1bITAsITAsITEsITFdLHRoaXMudGlja1BhZD1bMTUsMTUsMTUsMTVdLHRoaXMudGlja0FuZ2xlPVswLDAsMCwwXSx0aGlzLnRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpY2tNYXJrTGVuZ3RoPVswLDAsMCwwXSx0aGlzLnRpY2tNYXJrV2lkdGg9WzAsMCwwLDBdLHRoaXMudGlja01hcmtDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxhYmVscz1bIngiLCJ5Il0sdGhpcy5sYWJlbEVuYWJsZT1bITAsITAsITEsITFdLHRoaXMubGFiZWxBbmdsZT1bMCxNYXRoLlBJLzIsMCwzKk1hdGguUEkvMl0sdGhpcy5sYWJlbFBhZD1bMTUsMTUsMTUsMTVdLHRoaXMubGFiZWxTaXplPVsxMiwxMl0sdGhpcy5sYWJlbEZvbnQ9WyJzYW5zLXNlcmlmIiwic2Fucy1zZXJpZiJdLHRoaXMubGFiZWxDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpdGxlPSIiLHRoaXMudGl0bGVFbmFibGU9ITAsdGhpcy50aXRsZUNlbnRlcj1bMCwwLDAsMF0sdGhpcy50aXRsZUFuZ2xlPTAsdGhpcy50aXRsZUNvbG9yPVswLDAsMCwxXSx0aGlzLnRpdGxlRm9udD0ic2Fucy1zZXJpZiIsdGhpcy50aXRsZVNpemU9MTgsdGhpcy5ncmlkTGluZUVuYWJsZT1bITAsITBdLHRoaXMuZ3JpZExpbmVDb2xvcj1bWzAsMCwwLC41XSxbMCwwLDAsLjVdXSx0aGlzLmdyaWRMaW5lV2lkdGg9WzEsMV0sdGhpcy56ZXJvTGluZUVuYWJsZT1bITAsITBdLHRoaXMuemVyb0xpbmVXaWR0aD1bMSwxXSx0aGlzLnplcm9MaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuYm9yZGVyQ29sb3I9WzAsMCwwLDBdLHRoaXMuYmFja2dyb3VuZENvbG9yPVswLDAsMCwwXX1mdW5jdGlvbiBpKHQpe3JldHVybiBuZXcgbih0KX12YXIgbz10KCIuLi8uLi9wbG90bHkiKSxhPXQoIi4uLy4uL2xpYi9odG1sMnVuaWNvZGUiKSxzPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSxsPW4ucHJvdG90eXBlLGM9WyJ4YXhpcyIsInlheGlzIl07bC5tZXJnZT1mdW5jdGlvbih0KXt0aGlzLnRpdGxlRW5hYmxlPSExLHRoaXMuYmFja2dyb3VuZENvbG9yPXModC5wbG90X2JnY29sb3IpO3ZhciBlLHIsbixpLG8sbCx1LGgsZixkLHA7Zm9yKGQ9MDsyPmQ7KytkKXtmb3IoZT1jW2RdLHI9dFt0aGlzLnNjZW5lW2VdLl9uYW1lXSxuPS9DbGljayB0byBlbnRlciAuKyB0aXRsZS8udGVzdChyLnRpdGxlKT8iIjpyLnRpdGxlLHA9MDsyPj1wO3ArPTIpdGhpcy5sYWJlbEVuYWJsZVtkK3BdPSExLHRoaXMubGFiZWxzW2QrcF09YShuKSx0aGlzLmxhYmVsQ29sb3JbZCtwXT1zKHIudGl0bGVmb250LmNvbG9yKSx0aGlzLmxhYmVsRm9udFtkK3BdPXIudGl0bGVmb250LmZhbWlseSx0aGlzLmxhYmVsU2l6ZVtkK3BdPXIudGl0bGVmb250LnNpemUsdGhpcy5sYWJlbFBhZFtkK3BdPXRoaXMuZ2V0TGFiZWxQYWQoZSxyKSx0aGlzLnRpY2tFbmFibGVbZCtwXT0hMSx0aGlzLnRpY2tDb2xvcltkK3BdPXMoKHIudGlja2ZvbnR8fHt9KS5jb2xvciksdGhpcy50aWNrQW5nbGVbZCtwXT0iYXV0byI9PT1yLnRpY2thbmdsZT8wOk1hdGguUEkqLXIudGlja2FuZ2xlLzE4MCx0aGlzLnRpY2tQYWRbZCtwXT10aGlzLmdldFRpY2tQYWQociksdGhpcy50aWNrTWFya0xlbmd0aFtkK3BdPTAsdGhpcy50aWNrTWFya1dpZHRoW2QrcF09ci50aWNrd2lkdGh8fDAsdGhpcy50aWNrTWFya0NvbG9yW2QrcF09cyhyLnRpY2tjb2xvciksdGhpcy5ib3JkZXJMaW5lRW5hYmxlW2QrcF09ITEsdGhpcy5ib3JkZXJMaW5lQ29sb3JbZCtwXT1zKHIubGluZWNvbG9yKSx0aGlzLmJvcmRlckxpbmVXaWR0aFtkK3BdPXIubGluZXdpZHRofHwwO3U9dGhpcy5oYXNTaGFyZWRBeGlzKHIpLG89dGhpcy5oYXNBeGlzSW5EZmx0UG9zKGUscikmJiF1LGw9dGhpcy5oYXNBeGlzSW5BbHRyUG9zKGUscikmJiF1LGk9ci5taXJyb3J8fCExLGg9dT8tMSE9PVN0cmluZyhpKS5pbmRleE9mKCJhbGwiKTohIWksZj11PyJhbGx0aWNrcyI9PT1pOi0xIT09U3RyaW5nKGkpLmluZGV4T2YoInRpY2tzIiksbz90aGlzLmxhYmVsRW5hYmxlW2RdPSEwOmwmJih0aGlzLmxhYmVsRW5hYmxlW2QrMl09ITApLG8/dGhpcy50aWNrRW5hYmxlW2RdPXIuc2hvd3RpY2tsYWJlbHM6bCYmKHRoaXMudGlja0VuYWJsZVtkKzJdPXIuc2hvd3RpY2tsYWJlbHMpLChvfHxoKSYmKHRoaXMuYm9yZGVyTGluZUVuYWJsZVtkXT1yLnNob3dsaW5lKSwobHx8aCkmJih0aGlzLmJvcmRlckxpbmVFbmFibGVbZCsyXT1yLnNob3dsaW5lKSwob3x8ZikmJih0aGlzLnRpY2tNYXJrTGVuZ3RoW2RdPXRoaXMuZ2V0VGlja01hcmtMZW5ndGgocikpLChsfHxmKSYmKHRoaXMudGlja01hcmtMZW5ndGhbZCsyXT10aGlzLmdldFRpY2tNYXJrTGVuZ3RoKHIpKSx0aGlzLmdyaWRMaW5lRW5hYmxlW2RdPXIuc2hvd2dyaWQsdGhpcy5ncmlkTGluZUNvbG9yW2RdPXMoci5ncmlkY29sb3IpLHRoaXMuZ3JpZExpbmVXaWR0aFtkXT1yLmdyaWR3aWR0aCx0aGlzLnplcm9MaW5lRW5hYmxlW2RdPXIuemVyb2xpbmUsdGhpcy56ZXJvTGluZUNvbG9yW2RdPXMoci56ZXJvbGluZWNvbG9yKSx0aGlzLnplcm9MaW5lV2lkdGhbZF09ci56ZXJvbGluZXdpZHRofX0sbC5oYXNTaGFyZWRBeGlzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2NlbmUscj1vLlBsb3RzLmdldFN1YnBsb3RJZHMoZS5mdWxsTGF5b3V0LCJnbDJkIiksbj1vLkF4ZXMuZmluZFN1YnBsb3RzV2l0aEF4aXMocix0KTtyZXR1cm4gMCE9PW4uaW5kZXhPZihlLmlkKX0sbC5oYXNBeGlzSW5EZmx0UG9zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5zaWRlO3JldHVybiJ4YXhpcyI9PT10PyJib3R0b20iPT09cjoieWF4aXMiPT09dD8ibGVmdCI9PT1yOnZvaWQgMH0sbC5oYXNBeGlzSW5BbHRyUG9zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5zaWRlO3JldHVybiJ4YXhpcyI9PT10PyJ0b3AiPT09cjoieWF4aXMiPT09dD8icmlnaHQiPT09cjp2b2lkIDB9LGwuZ2V0TGFiZWxQYWQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0xLjUsbj1lLnRpdGxlZm9udC5zaXplLGk9ZS5zaG93dGlja2xhYmVscztyZXR1cm4ieGF4aXMiPT09dD8idG9wIj09PWUuc2lkZT8tMTArbioocisoaT8xOjApKTotMTArbioocisoaT8uNTowKSk6InlheGlzIj09PXQ/InJpZ2h0Ij09PWUuc2lkZT8xMCtuKihyKyhpPzE6LjUpKToxMCtuKihyKyhpPy41OjApKTp2b2lkIDB9LGwuZ2V0VGlja1BhZD1mdW5jdGlvbih0KXtyZXR1cm4ib3V0c2lkZSI9PT10LnRpY2tzPzEwK3QudGlja2xlbjoxNX0sbC5nZXRUaWNrTWFya0xlbmd0aD1mdW5jdGlvbih0KXtpZighdC50aWNrcylyZXR1cm4gMDt2YXIgZT10LnRpY2tsZW47cmV0dXJuImluc2lkZSI9PT10LnRpY2tzPy1lOmV9LGUuZXhwb3J0cz1pfSx7Ii4uLy4uL2xpYi9odG1sMnVuaWNvZGUiOjM3MiwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6MzgzLCIuLi8uLi9wbG90bHkiOjM5MH1dLDQyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90bHkiKSxpPXQoIi4vc2NlbmUyZCIpLG89bi5QbG90cztyLm5hbWU9ImdsMmQiLHIuYXR0cj1bInhheGlzIiwieWF4aXMiXSxyLmlkUm9vdD1bIngiLCJ5Il0sci5pZFJlZ2V4PXt4Oi9eeChbMi05XXxbMS05XVswLTldKyk/JC8seTovXnkoWzItOV18WzEtOV1bMC05XSspPyQvfSxyLmF0dHJSZWdleD17eDovXnhheGlzKFsyLTldfFsxLTldWzAtOV0rKT8kLyx5Oi9eeWF4aXMoWzItOV18WzEtOV1bMC05XSspPyQvfSxyLmF0dHJpYnV0ZXM9dCgiLi4vY2FydGVzaWFuL2F0dHJpYnV0ZXMiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj10Ll9mdWxsRGF0YSxuPW8uZ2V0U3VicGxvdElkcyhlLCJnbDJkIiksYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgcz1uW2FdLGw9ZS5fcGxvdHNbc10sYz1vLmdldFN1YnBsb3REYXRhKHIsImdsMmQiLHMpLHU9bC5fc2NlbmUyZDt2b2lkIDA9PT11JiYodT1uZXcgaSh7Y29udGFpbmVyOnQucXVlcnlTZWxlY3RvcigiLmdsLWNvbnRhaW5lciIpLGlkOnMsc3RhdGljUGxvdDp0Ll9jb250ZXh0LnN0YXRpY1Bsb3QscGxvdEdsUGl4ZWxSYXRpbzp0Ll9jb250ZXh0LnBsb3RHbFBpeGVsUmF0aW99LGUpLGwuX3NjZW5lMmQ9dSksdS5wbG90KGMsZSx0LmxheW91dCl9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgaT1vLmdldFN1YnBsb3RJZHMobiwiZ2wyZCIpLGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIHM9bi5fcGxvdHNbaVthXV0sbD1zLnhheGlzLl9uYW1lLGM9cy55YXhpcy5fbmFtZTshcy5fc2NlbmUyZHx8ZVtsXSYmZVtjXXx8cy5fc2NlbmUyZC5kZXN0cm95KCl9fX0seyIuLi8uLi9wbG90bHkiOjM5MCwiLi4vY2FydGVzaWFuL2F0dHJpYnV0ZXMiOjM5MiwiLi9zY2VuZTJkIjo0MjJ9XSw0MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3RoaXMuY29udGFpbmVyPXQuY29udGFpbmVyLHRoaXMucGl4ZWxSYXRpbz10LnBsb3RHbFBpeGVsUmF0aW98fHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHRoaXMuaWQ9dC5pZCx0aGlzLnN0YXRpY1Bsb3Q9ISF0LnN0YXRpY1Bsb3QsdGhpcy5mdWxsTGF5b3V0PWUsdGhpcy51cGRhdGVBeGVzKGUpLHRoaXMubWFrZUZyYW1ld29yaygpLHRoaXMuZ2xwbG90T3B0aW9ucz1kKHRoaXMpLHRoaXMuZ2xwbG90T3B0aW9ucy5tZXJnZShlKSx0aGlzLmdscGxvdD11KHRoaXMuZ2xwbG90T3B0aW9ucyksdGhpcy5jYW1lcmE9cCh0aGlzKSx0aGlzLnRyYWNlcz17fSx0aGlzLnNwaWtlcz1oKHRoaXMuZ2xwbG90KSx0aGlzLnNlbGVjdEJveD1mKHRoaXMuZ2xwbG90LHtpbm5lckZpbGw6ITEsb3V0ZXJGaWxsOiEwfSksdGhpcy5waWNrUmVzdWx0PW51bGwsdGhpcy5ib3VuZHM9WzEvMCwxLzAsLSgxLzApLC0oMS8wKV0sdGhpcy5zdG9wcGVkPSExLHRoaXMucmVkcmF3PXRoaXMuZHJhdy5iaW5kKHRoaXMpLHRoaXMucmVkcmF3KCl9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj0wOzI+cjsrK3Ipe3ZhciBuPXRbcl0saT1lW3JdO2lmKG4ubGVuZ3RoIT09aS5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDsrK28paWYobltvXS54IT09aVtvXS54KXJldHVybiEwfXJldHVybiExfXZhciBvLGEscz10KCIuLi8uLi9wbG90cy9wbG90cyIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCIpLHU9dCgiZ2wtcGxvdDJkIiksaD10KCJnbC1zcGlrZXMyZCIpLGY9dCgiZ2wtc2VsZWN0LWJveCIpLGQ9dCgiLi9jb252ZXJ0IikscD10KCIuL2NhbWVyYSIpLGc9dCgiLi4vLi4vbGliL2h0bWwydW5pY29kZSIpLHY9dCgiLi4vLi4vbGliL3Nob3dfbm9fd2ViZ2xfbXNnIiksbT1bInhheGlzIiwieWF4aXMiXTtlLmV4cG9ydHM9bjt2YXIgeT1uLnByb3RvdHlwZTt5Lm1ha2VGcmFtZXdvcms9ZnVuY3Rpb24oKXtpZih0aGlzLnN0YXRpY1Bsb3Qpe2lmKCFhKXtvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3RyeXthPW8uZ2V0Q29udGV4dCgid2ViZ2wiLHtwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITAscHJlbXVsdGlwbGllZEFscGhhOiEwLGFudGlhbGlhczohMH0pfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihbIkVycm9yIGNyZWF0aW5nIHN0YXRpYyBjYW52YXMvY29udGV4dCBmb3IgaW1hZ2Ugc2VydmVyIl0uam9pbigiICIpKX19dGhpcy5jYW52YXM9byx0aGlzLmdsPWF9ZWxzZXt2YXIgZSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLG49e3ByZW11bHRpcGxpZWRBbHBoYTohMH07dHJ5e2U9ci5nZXRDb250ZXh0KCJ3ZWJnbCIsbil9Y2F0Y2godCl7fWlmKCFlKXRyeXtlPXIuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIixuKX1jYXRjaCh0KXt9ZXx8dih0aGlzKSx0aGlzLmNhbnZhcz1yLHRoaXMuZ2w9ZX12YXIgaT10aGlzLmNhbnZhcyxzPXRoaXMucGl4ZWxSYXRpbyxsPXRoaXMuZnVsbExheW91dDtpLndpZHRoPTB8TWF0aC5jZWlsKHMqbC53aWR0aCksaS5oZWlnaHQ9MHxNYXRoLmNlaWwocypsLmhlaWdodCksaS5zdHlsZS53aWR0aD0iMTAwJSIsaS5zdHlsZS5oZWlnaHQ9IjEwMCUiLGkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixpLnN0eWxlLnRvcD0iMHB4IixpLnN0eWxlLmxlZnQ9IjBweCIsaS5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0ibm9uZSI7dmFyIGM9dGhpcy5zdmdDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpO2Muc3R5bGUucG9zaXRpb249ImFic29sdXRlIixjLnN0eWxlLnRvcD1jLnN0eWxlLmxlZnQ9IjBweCIsYy5zdHlsZS53aWR0aD1jLnN0eWxlLmhlaWdodD0iMTAwJSIsYy5zdHlsZVsiei1pbmRleCJdPTIwLGMuc3R5bGVbInBvaW50ZXItZXZlbnRzIl09Im5vbmUiO3ZhciB1PXRoaXMubW91c2VDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3ZhciBoPXRoaXMuY29udGFpbmVyO2guYXBwZW5kQ2hpbGQoaSksaC5hcHBlbmRDaGlsZChjKSxoLmFwcGVuZENoaWxkKHUpfSx5LnRvSW1hZ2U9ZnVuY3Rpb24odCl7dHx8KHQ9InBuZyIpLHRoaXMuc3RvcHBlZD0hMCx0aGlzLnN0YXRpY1Bsb3QmJnRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKG8pLHRoaXMuZ2xwbG90LnNldERpcnR5KCEwKSx0aGlzLmdscGxvdC5kcmF3KCk7dmFyIGU9dGhpcy5nbHBsb3QuZ2wscj1lLmRyYXdpbmdCdWZmZXJXaWR0aCxuPWUuZHJhd2luZ0J1ZmZlckhlaWdodDtlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLG51bGwpO3ZhciBpPW5ldyBVaW50OEFycmF5KHIqbio0KTtlLnJlYWRQaXhlbHMoMCwwLHIsbixlLlJHQkEsZS5VTlNJR05FRF9CWVRFLGkpO2Zvcih2YXIgYT0wLHM9bi0xO3M+YTsrK2EsLS1zKWZvcih2YXIgbD0wO3I+bDsrK2wpZm9yKHZhciBjPTA7ND5jOysrYyl7dmFyIHU9aVs0KihyKmErbCkrY107aVs0KihyKmErbCkrY109aVs0KihyKnMrbCkrY10saVs0KihyKnMrbCkrY109dX12YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtoLndpZHRoPXIsaC5oZWlnaHQ9bjt2YXIgZj1oLmdldENvbnRleHQoIjJkIiksZD1mLmNyZWF0ZUltYWdlRGF0YShyLG4pO2QuZGF0YS5zZXQoaSksZi5wdXRJbWFnZURhdGEoZCwwLDApO3ZhciBwO3N3aXRjaCh0KXtjYXNlImpwZWciOnA9aC50b0RhdGFVUkwoImltYWdlL2pwZWciKTticmVhaztjYXNlIndlYnAiOnA9aC50b0RhdGFVUkwoImltYWdlL3dlYnAiKTticmVhaztkZWZhdWx0OnA9aC50b0RhdGFVUkwoImltYWdlL3BuZyIpfXJldHVybiB0aGlzLnN0YXRpY1Bsb3QmJnRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKG8pLHB9LHkuY29tcHV0ZVRpY2tNYXJrcz1mdW5jdGlvbigpe3RoaXMueGF4aXMuX2xlbmd0aD10aGlzLmdscGxvdC52aWV3Qm94WzJdLXRoaXMuZ2xwbG90LnZpZXdCb3hbMF0sdGhpcy55YXhpcy5fbGVuZ3RoPXRoaXMuZ2xwbG90LnZpZXdCb3hbM10tdGhpcy5nbHBsb3Qudmlld0JveFsxXTtmb3IodmFyIHQ9W2wuY2FsY1RpY2tzKHRoaXMueGF4aXMpLGwuY2FsY1RpY2tzKHRoaXMueWF4aXMpXSxlPTA7Mj5lOysrZSlmb3IodmFyIHI9MDtyPHRbZV0ubGVuZ3RoOysrcil0W2VdW3JdLnRleHQ9Zyh0W2VdW3JdLnRleHQrIiIpLnJlcGxhY2UoL1xuL2csIiAiKTtyZXR1cm4gdH0seS51cGRhdGVBeGVzPWZ1bmN0aW9uKHQpe3ZhciBlPWwuc3VicGxvdE1hdGNoLHI9InhheGlzIit0aGlzLmlkLm1hdGNoKGUpWzFdLG49InlheGlzIit0aGlzLmlkLm1hdGNoKGUpWzJdO3RoaXMueGF4aXM9dFtyXSx0aGlzLnlheGlzPXRbbl19LHkudXBkYXRlRng9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mdWxsTGF5b3V0O2UuZHJhZ21vZGU9dC5kcmFnbW9kZSxlLmhvdmVybW9kZT10LmhvdmVybW9kZX0seS5jYW1lcmFDaGFuZ2VkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jYW1lcmEsZT10aGlzLnhheGlzLnJhbmdlLHI9dGhpcy55YXhpcy5yYW5nZTt0aGlzLmdscGxvdC5zZXREYXRhQm94KFtlWzBdLHJbMF0sZVsxXSxyWzFdXSk7dmFyIG49dGhpcy5jb21wdXRlVGlja01hcmtzKCksbz10aGlzLmdscGxvdE9wdGlvbnMudGlja3M7aShuLG8pJiYodGhpcy5nbHBsb3RPcHRpb25zLnRpY2tzPW4sdGhpcy5nbHBsb3RPcHRpb25zLmRhdGFCb3g9dC5kYXRhQm94LHRoaXMuZ2xwbG90LnVwZGF0ZSh0aGlzLmdscGxvdE9wdGlvbnMpKX0seS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5nbHBsb3QuZGlzcG9zZSgpLHRoaXMuc3RhdGljUGxvdHx8dGhpcy5jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5jYW52YXMpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuc3ZnQ29udGFpbmVyKSx0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLm1vdXNlQ29udGFpbmVyKSx0aGlzLmdscGxvdD1udWxsLHRoaXMuc3RvcHBlZD0hMH0seS5wbG90PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpPXRoaXMuZ2xwbG90LG89dGhpcy5waXhlbFJhdGlvO3RoaXMuZnVsbExheW91dD1lLHRoaXMudXBkYXRlQXhlcyhlKTt2YXIgYT1lLndpZHRoLGM9ZS5oZWlnaHQsdT0wfE1hdGguY2VpbChvKmEpLGg9MHxNYXRoLmNlaWwobypjKSxmPXRoaXMuY2FudmFzO2Yud2lkdGg9PT11JiZmLmhlaWdodD09PWh8fChmLndpZHRoPXUsZi5oZWlnaHQ9aCksdD9BcnJheS5pc0FycmF5KHQpfHwodD1bdF0pOnQ9W107dmFyIGQscDtmb3Iocj0wO3I8dC5sZW5ndGg7KytyKXtpZihkPXRbcl0scD10aGlzLnRyYWNlc1tkLnVpZF0pcC51cGRhdGUoZCk7ZWxzZXt2YXIgZz1zLmdldE1vZHVsZShkLnR5cGUpO3A9Zy5wbG90KHRoaXMsZCl9dGhpcy50cmFjZXNbZC51aWRdPXB9dmFyIHY9T2JqZWN0LmtleXModGhpcy50cmFjZXMpO3Q6Zm9yKHI9MDtyPHYubGVuZ3RoOysrcil7Zm9yKG49MDtuPHQubGVuZ3RoOysrbilpZih0W25dLnVpZD09PXZbcl0pY29udGludWUgdDtwPXRoaXMudHJhY2VzW3Zbcl1dLHAuZGlzcG9zZSgpLGRlbGV0ZSB0aGlzLnRyYWNlc1t2W3JdXX12YXIgeT10aGlzLmdscGxvdE9wdGlvbnM7eS5tZXJnZShlKSx5LnNjcmVlbkJveD1bMCwwLGEsY107dmFyIGI9ZS5fc2l6ZSx4PXRoaXMueGF4aXMuZG9tYWluLF89dGhpcy55YXhpcy5kb21haW47eS52aWV3Qm94PVtiLmwreFswXSpiLncsYi5iK19bMF0qYi5oLGEtYi5yLSgxLXhbMV0pKmIudyxjLWIudC0oMS1fWzFdKSpiLmhdLHRoaXMubW91c2VDb250YWluZXIuc3R5bGUud2lkdGg9Yi53Kih4WzFdLXhbMF0pKyJweCIsdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9Yi5oKihfWzFdLV9bMF0pKyJweCIsdGhpcy5tb3VzZUNvbnRhaW5lci5oZWlnaHQ9Yi5oKihfWzFdLV9bMF0pLAp0aGlzLm1vdXNlQ29udGFpbmVyLnN0eWxlLmxlZnQ9Yi5sK3hbMF0qYi53KyJweCIsdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZS50b3A9Yi50KygxLV9bMV0pKmIuaCsicHgiO3ZhciB3PXRoaXMuYm91bmRzO2Zvcih3WzBdPXdbMV09MS8wLHdbMl09d1szXT0tKDEvMCksdj1PYmplY3Qua2V5cyh0aGlzLnRyYWNlcykscj0wO3I8di5sZW5ndGg7KytyKXtwPXRoaXMudHJhY2VzW3Zbcl1dO2Zvcih2YXIgQT0wOzI+QTsrK0Epd1tBXT1NYXRoLm1pbih3W0FdLHAuYm91bmRzW0FdKSx3W0ErMl09TWF0aC5tYXgod1tBKzJdLHAuYm91bmRzW0ErMl0pfXZhciBrO2ZvcihyPTA7Mj5yOysrcil3W3JdPndbcisyXSYmKHdbcl09LTEsd1tyKzJdPTEpLGs9dGhpc1ttW3JdXSxrLl9sZW5ndGg9eS52aWV3Qm94W3IrMl0teS52aWV3Qm94W3JdLGwuZG9BdXRvUmFuZ2Uoayk7eS50aWNrcz10aGlzLmNvbXB1dGVUaWNrTWFya3MoKTt2YXIgTT10aGlzLnhheGlzLnJhbmdlLFQ9dGhpcy55YXhpcy5yYW5nZTt5LmRhdGFCb3g9W01bMF0sVFswXSxNWzFdLFRbMV1dLHkubWVyZ2UoZSksaS51cGRhdGUoeSl9LHkuZHJhdz1mdW5jdGlvbigpe2lmKCF0aGlzLnN0b3BwZWQpe3JlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlZHJhdyk7dmFyIHQ9dGhpcy5nbHBsb3QsZT10aGlzLmNhbWVyYSxyPWUubW91c2VMaXN0ZW5lcixuPXRoaXMuZnVsbExheW91dDt0aGlzLmNhbWVyYUNoYW5nZWQoKTt2YXIgaT1yLngqdC5waXhlbFJhdGlvLG89dGhpcy5jYW52YXMuaGVpZ2h0LXQucGl4ZWxSYXRpbypyLnk7aWYoZS5ib3hFbmFibGVkJiYiem9vbSI9PT1uLmRyYWdtb2RlKXRoaXMuc2VsZWN0Qm94LmVuYWJsZWQ9ITAsdGhpcy5zZWxlY3RCb3guc2VsZWN0Qm94PVtNYXRoLm1pbihlLmJveFN0YXJ0WzBdLGUuYm94RW5kWzBdKSxNYXRoLm1pbihlLmJveFN0YXJ0WzFdLGUuYm94RW5kWzFdKSxNYXRoLm1heChlLmJveFN0YXJ0WzBdLGUuYm94RW5kWzBdKSxNYXRoLm1heChlLmJveFN0YXJ0WzFdLGUuYm94RW5kWzFdKV0sdC5zZXREaXJ0eSgpO2Vsc2V7dGhpcy5zZWxlY3RCb3guZW5hYmxlZD0hMTt2YXIgYT1uLl9zaXplLHM9dGhpcy54YXhpcy5kb21haW4sbD10aGlzLnlheGlzLmRvbWFpbix1PXQucGljayhpL3QucGl4ZWxSYXRpbythLmwrc1swXSphLncsby90LnBpeGVsUmF0aW8tKGEudCsoMS1sWzFdKSphLmgpKTtpZih1JiZuLmhvdmVybW9kZSl7dmFyIGg9dS5vYmplY3QuX3RyYWNlLmhhbmRsZVBpY2sodSk7aWYoaCYmKCF0aGlzLmxhc3RQaWNrUmVzdWx0fHx0aGlzLmxhc3RQaWNrUmVzdWx0LnRyYWNlIT09aC50cmFjZXx8dGhpcy5sYXN0UGlja1Jlc3VsdC5kYXRhQ29vcmRbMF0hPT1oLmRhdGFDb29yZFswXXx8dGhpcy5sYXN0UGlja1Jlc3VsdC5kYXRhQ29vcmRbMV0hPT1oLmRhdGFDb29yZFsxXSkpe3ZhciBmPXRoaXMubGFzdFBpY2tSZXN1bHQ9aDt0aGlzLnNwaWtlcy51cGRhdGUoe2NlbnRlcjp1LmRhdGFDb29yZH0pLGYuc2NyZWVuQ29vcmQ9WygodC52aWV3Qm94WzJdLXQudmlld0JveFswXSkqKHUuZGF0YUNvb3JkWzBdLXQuZGF0YUJveFswXSkvKHQuZGF0YUJveFsyXS10LmRhdGFCb3hbMF0pK3Qudmlld0JveFswXSkvdC5waXhlbFJhdGlvLCh0aGlzLmNhbnZhcy5oZWlnaHQtKHQudmlld0JveFszXS10LnZpZXdCb3hbMV0pKih1LmRhdGFDb29yZFsxXS10LmRhdGFCb3hbMV0pLyh0LmRhdGFCb3hbM10tdC5kYXRhQm94WzFdKS10LnZpZXdCb3hbMV0pL3QucGl4ZWxSYXRpb107dmFyIGQ9Zi5ob3ZlcmluZm87aWYoImFsbCIhPT1kKXt2YXIgcD1kLnNwbGl0KCIrIik7LTE9PT1wLmluZGV4T2YoIngiKSYmKGYudHJhY2VDb29yZFswXT12b2lkIDApLC0xPT09cC5pbmRleE9mKCJ5IikmJihmLnRyYWNlQ29vcmRbMV09dm9pZCAwKSwtMT09PXAuaW5kZXhPZigidGV4dCIpJiYoZi50ZXh0TGFiZWw9dm9pZCAwKSwtMT09PXAuaW5kZXhPZigibmFtZSIpJiYoZi5uYW1lPXZvaWQgMCl9Yy5sb25lSG92ZXIoe3g6Zi5zY3JlZW5Db29yZFswXSx5OmYuc2NyZWVuQ29vcmRbMV0seExhYmVsOnRoaXMuaG92ZXJGb3JtYXR0ZXIoInhheGlzIixmLnRyYWNlQ29vcmRbMF0pLHlMYWJlbDp0aGlzLmhvdmVyRm9ybWF0dGVyKCJ5YXhpcyIsZi50cmFjZUNvb3JkWzFdKSx0ZXh0OmYudGV4dExhYmVsLG5hbWU6Zi5uYW1lLGNvbG9yOmYuY29sb3J9LHtjb250YWluZXI6dGhpcy5zdmdDb250YWluZXJ9KSx0aGlzLmxhc3RQaWNrUmVzdWx0PXtkYXRhQ29vcmQ6dS5kYXRhQ29vcmR9fX1lbHNlIXUmJnRoaXMubGFzdFBpY2tSZXN1bHQmJih0aGlzLnNwaWtlcy51cGRhdGUoe30pLHRoaXMubGFzdFBpY2tSZXN1bHQ9bnVsbCxjLmxvbmVVbmhvdmVyKHRoaXMuc3ZnQ29udGFpbmVyKSl9dC5kcmF3KCl9fSx5LmhvdmVyRm9ybWF0dGVyPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09ZSl7dmFyIHI9dGhpc1t0XTtyZXR1cm4gbC50aWNrVGV4dChyLHIuYzJsKGUpLCJob3ZlciIpLnRleHR9fX0seyIuLi8uLi9saWIvaHRtbDJ1bmljb2RlIjozNzIsIi4uLy4uL2xpYi9zaG93X25vX3dlYmdsX21zZyI6MzgxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiOjM5OCwiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNywiLi9jYW1lcmEiOjQxOSwiLi9jb252ZXJ0Ijo0MjAsImdsLXBsb3QyZCI6MTIyLCJnbC1zZWxlY3QtYm94IjoxNTIsImdsLXNwaWtlczJkIjoxNzN9XSw0MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3Q9dHx8ZG9jdW1lbnQuYm9keSxlPWV8fHt9O3ZhciByPVsuMDEsMS8wXTsiZGlzdGFuY2VMaW1pdHMiaW4gZSYmKHJbMF09ZS5kaXN0YW5jZUxpbWl0c1swXSxyWzFdPWUuZGlzdGFuY2VMaW1pdHNbMV0pLCJ6b29tTWluImluIGUmJihyWzBdPWUuem9vbU1pbiksInpvb21NYXgiaW4gZSYmKHJbMV09ZS56b29tTWF4KTt2YXIgbj1vKHtjZW50ZXI6ZS5jZW50ZXJ8fFswLDAsMF0sdXA6ZS51cHx8WzAsMSwwXSxleWU6ZS5leWV8fFswLDAsMTBdLG1vZGU6ZS5tb2RlfHwib3JiaXQiLGRpc3RhbmNlTGltaXRzOnJ9KSxsPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSxjPTAsdT10LmNsaWVudFdpZHRoLGg9dC5jbGllbnRIZWlnaHQsZj17a2V5QmluZGluZ01vZGU6InJvdGF0ZSIsdmlldzpuLGVsZW1lbnQ6dCxkZWxheTplLmRlbGF5fHwxNixyb3RhdGVTcGVlZDplLnJvdGF0ZVNwZWVkfHwxLHpvb21TcGVlZDplLnpvb21TcGVlZHx8MSx0cmFuc2xhdGVTcGVlZDplLnRyYW5zbGF0ZVNwZWVkfHwxLGZsaXBYOiEhZS5mbGlwWCxmbGlwWTohIWUuZmxpcFksbW9kZXM6bi5tb2Rlcyx0aWNrOmZ1bmN0aW9uKCl7dmFyIGU9aSgpLHI9dGhpcy5kZWxheSxvPWUtMipyO24uaWRsZShlLXIpLG4ucmVjYWxjTWF0cml4KG8pLG4uZmx1c2goZS0oMTAwKzIqcikpO2Zvcih2YXIgYT0hMCxzPW4uY29tcHV0ZWRNYXRyaXgsZj0wOzE2PmY7KytmKWE9YSYmbFtmXT09PXNbZl0sbFtmXT1zW2ZdO3ZhciBkPXQuY2xpZW50V2lkdGg9PT11JiZ0LmNsaWVudEhlaWdodD09PWg7cmV0dXJuIHU9dC5jbGllbnRXaWR0aCxoPXQuY2xpZW50SGVpZ2h0LGE/IWQ6KGM9TWF0aC5leHAobi5jb21wdXRlZFJhZGl1c1swXSksITApfSxsb29rQXQ6ZnVuY3Rpb24odCxlLHIpe24ubG9va0F0KG4ubGFzdFQoKSx0LGUscil9LHJvdGF0ZTpmdW5jdGlvbih0LGUscil7bi5yb3RhdGUobi5sYXN0VCgpLHQsZSxyKX0scGFuOmZ1bmN0aW9uKHQsZSxyKXtuLnBhbihuLmxhc3RUKCksdCxlLHIpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlLHIpe24udHJhbnNsYXRlKG4ubGFzdFQoKSx0LGUscil9fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhmLHttYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmNvbXB1dGVkTWF0cml4fSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4uc2V0TWF0cml4KG4ubGFzdFQoKSx0KSxuLmNvbXB1dGVkTWF0cml4fSxlbnVtZXJhYmxlOiEwfSxtb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRNb2RlKCl9LHNldDpmdW5jdGlvbih0KXt2YXIgZT1uLmNvbXB1dGVkVXAuc2xpY2UoKSxyPW4uY29tcHV0ZWRFeWUuc2xpY2UoKSxvPW4uY29tcHV0ZWRDZW50ZXIuc2xpY2UoKTtpZihuLnNldE1vZGUodCksInR1cm50YWJsZSI9PT10KXt2YXIgYT1pKCk7bi5fYWN0aXZlLmxvb2tBdChhLHIsbyxlKSxuLl9hY3RpdmUubG9va0F0KGErNTAwLHIsbyxbMCwwLDFdKSxuLl9hY3RpdmUuZmx1c2goYSl9cmV0dXJuIG4uZ2V0TW9kZSgpfSxlbnVtZXJhYmxlOiEwfSxjZW50ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmNvbXB1dGVkQ2VudGVyfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4ubG9va0F0KG4ubGFzdFQoKSxudWxsLHQpLG4uY29tcHV0ZWRDZW50ZXJ9LGVudW1lcmFibGU6ITB9LGV5ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcHV0ZWRFeWV9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbi5sb29rQXQobi5sYXN0VCgpLHQpLG4uY29tcHV0ZWRFeWV9LGVudW1lcmFibGU6ITB9LHVwOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wdXRlZFVwfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4ubG9va0F0KG4ubGFzdFQoKSxudWxsLG51bGwsdCksbi5jb21wdXRlZFVwfSxlbnVtZXJhYmxlOiEwfSxkaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbi5zZXREaXN0YW5jZShuLmxhc3RUKCksdCksdH0sZW51bWVyYWJsZTohMH0sZGlzdGFuY2VMaW1pdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBuLmdldERpc3RhbmNlTGltaXRzKHIpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4uc2V0RGlzdGFuY2VMaW1pdHModCksdH0sZW51bWVyYWJsZTohMH19KSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLCExfSk7dmFyIGQ9MCxwPTA7cmV0dXJuIGEodCxmdW5jdGlvbihlLHIsbyxhKXt2YXIgcz0icm90YXRlIj09PWYua2V5QmluZGluZ01vZGUsbD0icGFuIj09PWYua2V5QmluZGluZ01vZGUsdT0iem9vbSI9PT1mLmtleUJpbmRpbmdNb2RlLGg9ISFhLmNvbnRyb2wsZz0hIWEuYWx0LHY9ISFhLnNoaWZ0LG09ISEoMSZlKSx5PSEhKDImZSksYj0hISg0JmUpLHg9MS90LmNsaWVudEhlaWdodCxfPXgqKHItZCksdz14KihvLXApLEE9Zi5mbGlwWD8xOi0xLGs9Zi5mbGlwWT8xOi0xLE09aSgpLFQ9TWF0aC5QSSpmLnJvdGF0ZVNwZWVkO2lmKChzJiZtJiYhaCYmIWcmJiF2fHxtJiYhaCYmIWcmJnYpJiZuLnJvdGF0ZShNLEEqVCpfLC1rKlQqdywwKSwobCYmbSYmIWgmJiFnJiYhdnx8eXx8bSYmaCYmIWcmJiF2KSYmbi5wYW4oTSwtZi50cmFuc2xhdGVTcGVlZCpfKmMsZi50cmFuc2xhdGVTcGVlZCp3KmMsMCksdSYmbSYmIWgmJiFnJiYhdnx8Ynx8bSYmIWgmJmcmJiF2KXt2YXIgRT0tZi56b29tU3BlZWQqdy93aW5kb3cuaW5uZXJIZWlnaHQqKE0tbi5sYXN0VCgpKSoxMDA7bi5wYW4oTSwwLDAsYyooTWF0aC5leHAoRSktMSkpfXJldHVybiBkPXIscD1vLCEwfSkscyh0LGZ1bmN0aW9uKHQsZSl7dmFyIHI9Zi5mbGlwWD8xOi0xLG89Zi5mbGlwWT8xOi0xLGE9aSgpO2lmKE1hdGguYWJzKHQpPk1hdGguYWJzKGUpKW4ucm90YXRlKGEsMCwwLC10KnIqTWF0aC5QSSpmLnJvdGF0ZVNwZWVkL3dpbmRvdy5pbm5lcldpZHRoKTtlbHNle3ZhciBzPS1mLnpvb21TcGVlZCpvKmUvd2luZG93LmlubmVySGVpZ2h0KihhLW4ubGFzdFQoKSkvMTAwO24ucGFuKGEsMCwwLGMqKE1hdGguZXhwKHMpLTEpKX19LCEwKSxmfWUuZXhwb3J0cz1uO3ZhciBpPXQoInJpZ2h0LW5vdyIpLG89dCgiM2QtdmlldyIpLGE9dCgibW91c2UtY2hhbmdlIikscz10KCJtb3VzZS13aGVlbCIpfSx7IjNkLXZpZXciOjM4LCJtb3VzZS1jaGFuZ2UiOjE5OCwibW91c2Utd2hlZWwiOjIwMiwicmlnaHQtbm93IjoyMTJ9XSw0MjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zY2VuZSIpLGk9dCgiLi4vcGxvdHMiKSxvPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl07ci5uYW1lPSJnbDNkIixyLmF0dHI9InNjZW5lIixyLmlkUm9vdD0ic2NlbmUiLHIuaWRSZWdleD0vXnNjZW5lKFsyLTldfFsxLTldWzAtOV0rKT8kLyxyLmF0dHJSZWdleD0vXnNjZW5lKFsyLTldfFsxLTldWzAtOV0rKT8kLyxyLmF0dHJpYnV0ZXM9dCgiLi9sYXlvdXQvYXR0cmlidXRlcyIpLHIubGF5b3V0QXR0cmlidXRlcz10KCIuL2xheW91dC9sYXlvdXRfYXR0cmlidXRlcyIpLHIuc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXQvZGVmYXVsdHMiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPXQuX2Z1bGxEYXRhLG89aS5nZXRTdWJwbG90SWRzKGUsImdsM2QiKTtlLl9wYXBlcmRpdi5zdHlsZSh7d2lkdGg6ZS53aWR0aCsicHgiLGhlaWdodDplLmhlaWdodCsicHgifSksdC5fY29udGV4dC5zZXRCYWNrZ3JvdW5kKHQsZS5wYXBlcl9iZ2NvbG9yKTtmb3IodmFyIGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHM9b1thXSxsPWkuZ2V0U3VicGxvdERhdGEociwiZ2wzZCIscyksYz1lW3NdLl9zY2VuZTt2b2lkIDA9PT1jJiYoYz1uZXcgbih7aWQ6cyxncmFwaERpdjp0LGNvbnRhaW5lcjp0LnF1ZXJ5U2VsZWN0b3IoIi5nbC1jb250YWluZXIiKSxzdGF0aWNQbG90OnQuX2NvbnRleHQuc3RhdGljUGxvdCxwbG90R2xQaXhlbFJhdGlvOnQuX2NvbnRleHQucGxvdEdsUGl4ZWxSYXRpb30sZSksZVtzXS5fc2NlbmU9YyksYy5wbG90KGwsZSx0LmxheW91dCl9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgbz1pLmdldFN1YnBsb3RJZHMobiwiZ2wzZCIpLGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHM9b1thXTshZVtzXSYmbltzXS5fc2NlbmUmJm5bc10uX3NjZW5lLmRlc3Ryb3koKX19LHIuY2xlYW5JZD1mdW5jdGlvbih0KXtpZih0Lm1hdGNoKC9ec2NlbmVbMC05XSokLykpe3ZhciBlPXQuc3Vic3RyKDUpO3JldHVybiIxIj09PWUmJihlPSIiKSwic2NlbmUiK2V9fSxyLnNldENvbnZlcnQ9dCgiLi9zZXRfY29udmVydCIpLHIuaW5pdEF4ZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1pLmdldFN1YnBsb3RJZHMoZSwiZ2wzZCIpLG49MDtuPHIubGVuZ3RoOysrbilmb3IodmFyIGE9cltuXSxzPWVbYV0sbD0wOzM+bDsrK2wpe3ZhciBjPW9bbF0sdT1zW2NdO3UuX3RkPXR9fX0seyIuLi9wbG90cyI6NDM3LCIuL2xheW91dC9hdHRyaWJ1dGVzIjo0MjUsIi4vbGF5b3V0L2RlZmF1bHRzIjo0MjksIi4vbGF5b3V0L2xheW91dF9hdHRyaWJ1dGVzIjo0MzAsIi4vc2NlbmUiOjQzNCwiLi9zZXRfY29udmVydCI6NDM1fV0sNDI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17c2NlbmU6e3ZhbFR5cGU6InNjZW5laWQiLGRmbHQ6InNjZW5lIn19fSx7fV0sNDI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtzaG93c3Bpa2VzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxzcGlrZXNpZGVzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxzcGlrZXRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjJ9LHNwaWtlY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2IoMCwwLDApIn0sc2hvd2JhY2tncm91bmQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGJhY2tncm91bmRjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMjA0LCAyMDQsIDIwNCwgMC41KSJ9LHNob3dheGVzbGFiZWxzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSx0aXRsZTpuLnRpdGxlLHRpdGxlZm9udDpuLnRpdGxlZm9udCx0eXBlOm4udHlwZSxhdXRvcmFuZ2U6bi5hdXRvcmFuZ2UscmFuZ2Vtb2RlOm4ucmFuZ2Vtb2RlLHJhbmdlOm4ucmFuZ2UsZml4ZWRyYW5nZTpuLmZpeGVkcmFuZ2UsdGlja21vZGU6bi50aWNrbW9kZSxudGlja3M6bi5udGlja3MsdGljazA6bi50aWNrMCxkdGljazpuLmR0aWNrLHRpY2t2YWxzOm4udGlja3ZhbHMsdGlja3RleHQ6bi50aWNrdGV4dCx0aWNrczpuLnRpY2tzLG1pcnJvcjpuLm1pcnJvcix0aWNrbGVuOm4udGlja2xlbix0aWNrd2lkdGg6bi50aWNrd2lkdGgsdGlja2NvbG9yOm4udGlja2NvbG9yLHNob3d0aWNrbGFiZWxzOm4uc2hvd3RpY2tsYWJlbHMsdGlja2ZvbnQ6bi50aWNrZm9udCx0aWNrYW5nbGU6bi50aWNrYW5nbGUsdGlja3ByZWZpeDpuLnRpY2twcmVmaXgsc2hvd3RpY2twcmVmaXg6bi5zaG93dGlja3ByZWZpeCx0aWNrc3VmZml4Om4udGlja3N1ZmZpeCxzaG93dGlja3N1ZmZpeDpuLnNob3d0aWNrc3VmZml4LHNob3dleHBvbmVudDpuLnNob3dleHBvbmVudCxleHBvbmVudGZvcm1hdDpuLmV4cG9uZW50Zm9ybWF0LHRpY2tmb3JtYXQ6bi50aWNrZm9ybWF0LGhvdmVyZm9ybWF0Om4uaG92ZXJmb3JtYXQsc2hvd2xpbmU6bi5zaG93bGluZSxsaW5lY29sb3I6bi5saW5lY29sb3IsbGluZXdpZHRoOm4ubGluZXdpZHRoLHNob3dncmlkOm4uc2hvd2dyaWQsZ3JpZGNvbG9yOmkoe30sbi5ncmlkY29sb3Ise2RmbHQ6InJnYigyMDQsIDIwNCwgMjA0KSJ9KSxncmlkd2lkdGg6bi5ncmlkd2lkdGgsemVyb2xpbmU6bi56ZXJvbGluZSx6ZXJvbGluZWNvbG9yOm4uemVyb2xpbmVjb2xvcix6ZXJvbGluZXdpZHRoOm4uemVyb2xpbmV3aWR0aH19LHsiLi4vLi4vLi4vbGliL2V4dGVuZCI6MzY5LCIuLi8uLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQwMH1dLDQyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9saWIiKSxpPXQoIi4vYXhpc19hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9jYXJ0ZXNpYW4vYXhpc19kZWZhdWx0cyIpLGE9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXSxzPWZ1bmN0aW9uKCl7fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGwodCxlKXtyZXR1cm4gbi5jb2VyY2UoYyx1LGksdCxlKX1mb3IodmFyIGMsdSxoPTA7aDxhLmxlbmd0aDtoKyspe3ZhciBmPWFbaF07Yz10W2ZdfHx7fSx1PXtfaWQ6ZlswXStyLnNjZW5lLF9uYW1lOmZ9LGVbZl09dT1vKGMsdSxsLHtmb250OnIuZm9udCxsZXR0ZXI6ZlswXSxkYXRhOnIuZGF0YSxzaG93R3JpZDohMH0pLGwoImdyaWRjb2xvciIpLGwoInRpdGxlIixmWzBdKSx1LnNldFNjYWxlPXMsbCgic2hvd3NwaWtlcyIpJiYobCgic3Bpa2VzaWRlcyIpLGwoInNwaWtldGhpY2tuZXNzIiksbCgic3Bpa2Vjb2xvciIpKSxsKCJzaG93YmFja2dyb3VuZCIpJiZsKCJiYWNrZ3JvdW5kY29sb3IiKSxsKCJzaG93YXhlc2xhYmVscyIpfX19LHsiLi4vLi4vLi4vbGliIjozNzMsIi4uLy4uL2NhcnRlc2lhbi9heGlzX2RlZmF1bHRzIjozOTQsIi4vYXhpc19hdHRyaWJ1dGVzIjo0MjZ9XSw0Mjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3RoaXMuYm91bmRzPVtbLTEwLC0xMCwtMTBdLFsxMCwxMCwxMF1dLHRoaXMudGlja3M9W1tdLFtdLFtdXSx0aGlzLnRpY2tFbmFibGU9WyEwLCEwLCEwXSx0aGlzLnRpY2tGb250PVsic2Fucy1zZXJpZiIsInNhbnMtc2VyaWYiLCJzYW5zLXNlcmlmIl0sdGhpcy50aWNrU2l6ZT1bMTIsMTIsMTJdLHRoaXMudGlja0FuZ2xlPVswLDAsMF0sdGhpcy50aWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpY2tQYWQ9WzE4LDE4LDE4XSx0aGlzLmxhYmVscz1bIngiLCJ5IiwieiJdLHRoaXMubGFiZWxFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmxhYmVsRm9udD1bIk9wZW4gU2FucyIsIk9wZW4gU2FucyIsIk9wZW4gU2FucyJdLHRoaXMubGFiZWxTaXplPVsyMCwyMCwyMF0sdGhpcy5sYWJlbEFuZ2xlPVswLDAsMF0sdGhpcy5sYWJlbENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5sYWJlbFBhZD1bMzAsMzAsMzBdLHRoaXMubGluZUVuYWJsZT1bITAsITAsITBdLHRoaXMubGluZU1pcnJvcj1bITEsITEsITFdLHRoaXMubGluZVdpZHRoPVsxLDEsMV0sdGhpcy5saW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxpbmVUaWNrRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5saW5lVGlja01pcnJvcj1bITEsITEsITFdLHRoaXMubGluZVRpY2tMZW5ndGg9WzEwLDEwLDEwXSx0aGlzLmxpbmVUaWNrV2lkdGg9WzEsMSwxXSx0aGlzLmxpbmVUaWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmdyaWRFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmdyaWRXaWR0aD1bMSwxLDFdLHRoaXMuZ3JpZENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy56ZXJvRW5hYmxlPVshMCwhMCwhMF0sdGhpcy56ZXJvTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy56ZXJvTGluZVdpZHRoPVsyLDIsMl0sdGhpcy5iYWNrZ3JvdW5kRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5iYWNrZ3JvdW5kQ29sb3I9W1suOCwuOCwuOCwuNV0sWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdXSx0aGlzLl9kZWZhdWx0VGlja1BhZD1sKHRoaXMudGlja1BhZCksdGhpcy5fZGVmYXVsdExhYmVsUGFkPWwodGhpcy5sYWJlbFBhZCksdGhpcy5fZGVmYXVsdExpbmVUaWNrTGVuZ3RoPWwodGhpcy5saW5lVGlja0xlbmd0aCl9ZnVuY3Rpb24gaSh0KXt2YXIgZT1uZXcgbjtyZXR1cm4gZS5tZXJnZSh0KSxlfXZhciBvPXQoImFycmF5dG9vbHMiKSxhPXQoIi4uLy4uLy4uL2xpYi9odG1sMnVuaWNvZGUiKSxzPXQoIi4uLy4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSxsPW8uY29weTFELGM9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXSx1PW4ucHJvdG90eXBlO3UubWVyZ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMscj0wOzM+cjsrK3Ipe3ZhciBuPXRbY1tyXV07ZS5sYWJlbHNbcl09YShuLnRpdGxlKSwidGl0bGVmb250ImluIG4mJihuLnRpdGxlZm9udC5jb2xvciYmKGUubGFiZWxDb2xvcltyXT1zKG4udGl0bGVmb250LmNvbG9yKSksbi50aXRsZWZvbnQuZmFtaWx5JiYoZS5sYWJlbEZvbnRbcl09bi50aXRsZWZvbnQuZmFtaWx5KSxuLnRpdGxlZm9udC5zaXplJiYoZS5sYWJlbFNpemVbcl09bi50aXRsZWZvbnQuc2l6ZSkpLCJzaG93bGluZSJpbiBuJiYoZS5saW5lRW5hYmxlW3JdPW4uc2hvd2xpbmUpLCJsaW5lY29sb3IiaW4gbiYmKGUubGluZUNvbG9yW3JdPXMobi5saW5lY29sb3IpKSwibGluZXdpZHRoImluIG4mJihlLmxpbmVXaWR0aFtyXT1uLmxpbmV3aWR0aCksInNob3dncmlkImluIG4mJihlLmdyaWRFbmFibGVbcl09bi5zaG93Z3JpZCksImdyaWRjb2xvciJpbiBuJiYoZS5ncmlkQ29sb3Jbcl09cyhuLmdyaWRjb2xvcikpLCJncmlkd2lkdGgiaW4gbiYmKGUuZ3JpZFdpZHRoW3JdPW4uZ3JpZHdpZHRoKSwibG9nIj09PW4udHlwZT9lLnplcm9FbmFibGVbcl09ITE6Inplcm9saW5lImluIG4mJihlLnplcm9FbmFibGVbcl09bi56ZXJvbGluZSksInplcm9saW5lY29sb3IiaW4gbiYmKGUuemVyb0xpbmVDb2xvcltyXT1zKG4uemVyb2xpbmVjb2xvcikpLCJ6ZXJvbGluZXdpZHRoImluIG4mJihlLnplcm9MaW5lV2lkdGhbcl09bi56ZXJvbGluZXdpZHRoKSwidGlja3MiaW4gbiYmbi50aWNrcz9lLmxpbmVUaWNrRW5hYmxlW3JdPSEwOmUubGluZVRpY2tFbmFibGVbcl09ITEsInRpY2tsZW4iaW4gbiYmKGUubGluZVRpY2tMZW5ndGhbcl09ZS5fZGVmYXVsdExpbmVUaWNrTGVuZ3RoW3JdPW4udGlja2xlbiksInRpY2tjb2xvciJpbiBuJiYoZS5saW5lVGlja0NvbG9yW3JdPXMobi50aWNrY29sb3IpKSwidGlja3dpZHRoImluIG4mJihlLmxpbmVUaWNrV2lkdGhbcl09bi50aWNrd2lkdGgpLCJ0aWNrYW5nbGUiaW4gbiYmKGUudGlja0FuZ2xlW3JdPSJhdXRvIj09PW4udGlja2FuZ2xlPzA6TWF0aC5QSSotbi50aWNrYW5nbGUvMTgwKSwic2hvd3RpY2tsYWJlbHMiaW4gbiYmKGUudGlja0VuYWJsZVtyXT1uLnNob3d0aWNrbGFiZWxzKSwidGlja2ZvbnQiaW4gbiYmKG4udGlja2ZvbnQuY29sb3ImJihlLnRpY2tDb2xvcltyXT1zKG4udGlja2ZvbnQuY29sb3IpKSxuLnRpY2tmb250LmZhbWlseSYmKGUudGlja0ZvbnRbcl09bi50aWNrZm9udC5mYW1pbHkpLG4udGlja2ZvbnQuc2l6ZSYmKGUudGlja1NpemVbcl09bi50aWNrZm9udC5zaXplKSksIm1pcnJvciJpbiBuPy0xIT09WyJ0aWNrcyIsImFsbCIsImFsbHRpY2tzIl0uaW5kZXhPZihuLm1pcnJvcik/KGUubGluZVRpY2tNaXJyb3Jbcl09ITAsZS5saW5lTWlycm9yW3JdPSEwKTpuLm1pcnJvcj09PSEwPyhlLmxpbmVUaWNrTWlycm9yW3JdPSExLGUubGluZU1pcnJvcltyXT0hMCk6KGUubGluZVRpY2tNaXJyb3Jbcl09ITEsZS5saW5lTWlycm9yW3JdPSExKTplLmxpbmVNaXJyb3Jbcl09ITEsInNob3diYWNrZ3JvdW5kImluIG4mJm4uc2hvd2JhY2tncm91bmQhPT0hMT8oZS5iYWNrZ3JvdW5kRW5hYmxlW3JdPSEwLGUuYmFja2dyb3VuZENvbG9yW3JdPXMobi5iYWNrZ3JvdW5kY29sb3IpKTplLmJhY2tncm91bmRFbmFibGVbcl09ITF9fSxlLmV4cG9ydHM9aX0seyIuLi8uLi8uLi9saWIvaHRtbDJ1bmljb2RlIjozNzIsIi4uLy4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjM4MyxhcnJheXRvb2xzOjQ4fV0sNDI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMiKSxvPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxhPXQoIi4vYXhpc19kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBuLmNvZXJjZShjLHUsbyx0LGUpfWZ1bmN0aW9uIGwocil7dmFyIG49IShlLl9oYXNDYXJ0ZXNpYW58fGUuX2hhc0dlb3x8ZS5faGFzR0wyRHx8ZS5faGFzUGllKSxpPS0xIT09b1tyXS52YWx1ZXMuaW5kZXhPZih0W3JdKTtyZXR1cm4gbiYmaT90W3JdOnZvaWQgMH1pZihlLl9oYXNHTDNEKWZvcih2YXIgYyx1LGg9aS5maW5kU3VicGxvdElkcyhyLCJnbDNkIiksZj1oLmxlbmd0aCxkPTA7Zj5kO2QrKyl7dmFyIHA9aFtkXTt0W3BdP2M9dFtwXTp0W3BdPWM9e30sdT1lW3BdfHx7fSxzKCJiZ2NvbG9yIik7Zm9yKHZhciBnPU9iamVjdC5rZXlzKG8uY2FtZXJhKSx2PTA7djxnLmxlbmd0aDt2KyspcygiY2FtZXJhLiIrZ1t2XSsiLngiKSxzKCJjYW1lcmEuIitnW3ZdKyIueSIpLHMoImNhbWVyYS4iK2dbdl0rIi56Iik7cygiZG9tYWluLngiLFtkL2YsKGQrMSkvZl0pLHMoImRvbWFpbi55Iik7dmFyIG09ISFzKCJhc3BlY3RyYXRpby54IikmJiEhcygiYXNwZWN0cmF0aW8ueSIpJiYhIXMoImFzcGVjdHJhdGlvLnoiKSx5PW0/Im1hbnVhbCI6ImF1dG8iLGI9cygiYXNwZWN0bW9kZSIseSk7bXx8KGMuYXNwZWN0cmF0aW89dS5hc3BlY3RyYXRpbz17eDoxLHk6MSx6OjF9LCJtYW51YWwiPT09YiYmKHUuYXNwZWN0bW9kZT0iYXV0byIpKSxhKGMsdSx7Zm9udDplLmZvbnQsc2NlbmU6cCxkYXRhOnJ9KSxzKCJkcmFnbW9kZSIsbCgiZHJhZ21vZGUiKSkscygiaG92ZXJtb2RlIixsKCJob3Zlcm1vZGUiKSksZVtwXT11fX19LHsiLi4vLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RzIjo0MzcsIi4vYXhpc19kZWZhdWx0cyI6NDI3LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo0MzB9XSw0MzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7cmV0dXJue3g6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDp0fSx5Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6ZX0sejp7dmFsVHlwZToibnVtYmVyIixkZmx0OnJ9fX12YXIgaT10KCIuL2F4aXNfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSJ9LGNhbWVyYTp7dXA6byhuKDAsMCwxKSx7fSksY2VudGVyOm8obigwLDAsMCkse30pLGV5ZTpvKG4oMS4yNSwxLjI1LDEuMjUpLHt9KX0sZG9tYWluOnt4Ont2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjF9LHt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxfV0sZGZsdDpbMCwxXX0seTp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxfSx7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MX1dLGRmbHQ6WzAsMV19fSxhc3BlY3Rtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwiY3ViZSIsImRhdGEiLCJtYW51YWwiXSxkZmx0OiJhdXRvIn0sYXNwZWN0cmF0aW86e3g6e3ZhbFR5cGU6Im51bWJlciIsbWluOjB9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjB9LHo6e3ZhbFR5cGU6Im51bWJlciIsbWluOjB9fSx4YXhpczppLHlheGlzOmksemF4aXM6aSxkcmFnbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsib3JiaXQiLCJ0dXJudGFibGUiLCJ6b29tIiwicGFuIl0sZGZsdDoidHVybnRhYmxlIn0saG92ZXJtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjbG9zZXN0IiwhMV0sZGZsdDoiY2xvc2VzdCJ9LF9kZXByZWNhdGVkOntjYW1lcmFwb3NpdGlvbjp7dmFsVHlwZToiaW5mb19hcnJheSJ9fX19LHsiLi4vLi4vLi4vbGliL2V4dGVuZCI6MzY5LCIuL2F4aXNfYXR0cmlidXRlcyI6NDI2fV0sNDMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt0aGlzLmVuYWJsZWQ9WyEwLCEwLCEwXSx0aGlzLmNvbG9ycz1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZHJhd1NpZGVzPVshMCwhMCwhMF0sdGhpcy5saW5lV2lkdGg9WzEsMSwxXX1mdW5jdGlvbiBpKHQpe3ZhciBlPW5ldyBuO3JldHVybiBlLm1lcmdlKHQpLGV9dmFyIG89dCgiLi4vLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpLGE9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXSxzPW4ucHJvdG90eXBlO3MubWVyZ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7Mz5lOysrZSl7dmFyIHI9dFthW2VdXTt0aGlzLmVuYWJsZWRbZV09ci5zaG93c3Bpa2VzLHRoaXMuY29sb3JzW2VdPW8oci5zcGlrZWNvbG9yKSx0aGlzLmRyYXdTaWRlc1tlXT1yLnNwaWtlc2lkZXMsdGhpcy5saW5lV2lkdGhbZV09ci5zcGlrZXRoaWNrbmVzc319LGUuZXhwb3J0cz1pfSx7Ii4uLy4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjM4M31dLDQzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkoMykscj0wOzM+cjsrK3Ipe2Zvcih2YXIgbj10W3JdLGk9bmV3IEFycmF5KG4ubGVuZ3RoKSxvPTA7bzxuLmxlbmd0aDsrK28paVtvXT1uW29dLng7ZVtyXT1pfXJldHVybiBlfWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBlPXQuYXhlc09wdGlvbnMscj10LmdscGxvdC5heGVzUGl4ZWxzLGk9dC5mdWxsU2NlbmVMYXlvdXQsYz1bW10sW10sW11dLHU9MDszPnU7Kyt1KXt2YXIgaD1pW3NbdV1dO2lmKGguX2xlbmd0aD0oclt1XS5oaS1yW3VdLmxvKSpyW3VdLnBpeGVsc1BlckRhdGFVbml0L3QuZGF0YVNjYWxlW3VdLE1hdGguYWJzKGguX2xlbmd0aCk9PT0xLzApY1t1XT1bXTtlbHNle2gucmFuZ2VbMF09clt1XS5sby90LmRhdGFTY2FsZVt1XSxoLnJhbmdlWzFdPXJbdV0uaGkvdC5kYXRhU2NhbGVbdV0saC5fbT0xLyh0LmRhdGFTY2FsZVt1XSpyW3VdLnBpeGVsc1BlckRhdGFVbml0KSxoLnJhbmdlWzBdPT09aC5yYW5nZVsxXSYmKGgucmFuZ2VbMF0tPTEsaC5yYW5nZVsxXSs9MSk7dmFyIGY9aC50aWNrbW9kZTtpZigiYXV0byI9PT1oLnRpY2ttb2RlKXtoLnRpY2ttb2RlPSJsaW5lYXIiO3ZhciBkPWgubnRpY2tzfHxvLkxpYi5jb25zdHJhaW4oaC5fbGVuZ3RoLzQwLDQsOSk7by5BeGVzLmF1dG9UaWNrcyhoLE1hdGguYWJzKGgucmFuZ2VbMV0taC5yYW5nZVswXSkvZCl9Zm9yKHZhciBwPW8uQXhlcy5jYWxjVGlja3MoaCksZz0wO2c8cC5sZW5ndGg7KytnKXBbZ10ueD1wW2ddLngqdC5kYXRhU2NhbGVbdV0scFtnXS50ZXh0PWEocFtnXS50ZXh0KTtjW3VdPXAsaC50aWNrbW9kZT1mfX1lLnRpY2tzPWM7Zm9yKHZhciB1PTA7Mz51OysrdSl7bFt1XT0uNSoodC5nbHBsb3QuYm91bmRzWzBdW3VdK3QuZ2xwbG90LmJvdW5kc1sxXVt1XSk7Zm9yKHZhciBnPTA7Mj5nOysrZyllLmJvdW5kc1tnXVt1XT10LmdscGxvdC5ib3VuZHNbZ11bdV19dC5jb250b3VyTGV2ZWxzPW4oYyl9ZS5leHBvcnRzPWk7dmFyIG89dCgiLi4vLi4vLi4vcGxvdGx5IiksYT10KCIuLi8uLi8uLi9saWIvaHRtbDJ1bmljb2RlIikscz1bInhheGlzIiwieWF4aXMiLCJ6YXhpcyJdLGw9WzAsMCwwXX0seyIuLi8uLi8uLi9saWIvaHRtbDJ1bmljb2RlIjozNzIsIi4uLy4uLy4uL3Bsb3RseSI6MzkwfV0sNDMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcixuLGk9WzAsMCwwLDBdO2ZvcihyPTA7ND5yOysrcilmb3Iobj0wOzQ+bjsrK24paVtuXSs9dFs0KnIrbl0qZVtyXTtyZXR1cm4gaX1mdW5jdGlvbiBpKHQsZSl7dmFyIHI9bih0LnByb2plY3Rpb24sbih0LnZpZXcsbih0Lm1vZGVsLFtlWzBdLGVbMV0sZVsyXSwxXSkpKTtyZXR1cm4gcn1lLmV4cG9ydHM9aX0se31dLDQzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUoZSxyKXtpZigic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIHI7dmFyIG49dC5mdWxsU2NlbmVMYXlvdXRbZV07cmV0dXJuIGQudGlja1RleHQobixuLmMybChyKSwiaG92ZXIiKS50ZXh0fXZhciByPXQuc3ZnQ29udGFpbmVyLG49dC5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1uLndpZHRoLG89bi5oZWlnaHQ7ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ2aWV3Qm94IiwiMCAwICIraSsiICIrbyksci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsaSksci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLG8pLHcodCksdC5nbHBsb3QuYXhlcy51cGRhdGUodC5heGVzT3B0aW9ucyk7Zm9yKHZhciBhPU9iamVjdC5rZXlzKHQudHJhY2VzKSxzPW51bGwsbD10LmdscGxvdC5zZWxlY3Rpb24sYz0wO2M8YS5sZW5ndGg7KytjKXt2YXIgdT10LnRyYWNlc1thW2NdXTt1LmhhbmRsZVBpY2sobCkmJihzPXUpLHUuc2V0Q29udG91ckxldmVscyYmdS5zZXRDb250b3VyTGV2ZWxzKCl9dmFyIGg7aWYobnVsbCE9PXMpe3ZhciBmPXkodC5nbHBsb3QuY2FtZXJhUGFyYW1zLGwuZGF0YUNvb3JkaW5hdGUpLHU9cy5kYXRhLGc9dS5ob3ZlcmluZm8sdj1lKCJ4YXhpcyIsbC50cmFjZUNvb3JkaW5hdGVbMF0pLG09ZSgieWF4aXMiLGwudHJhY2VDb29yZGluYXRlWzFdKSxiPWUoInpheGlzIixsLnRyYWNlQ29vcmRpbmF0ZVsyXSk7aWYoImFsbCIhPT1nKXt2YXIgeD1nLnNwbGl0KCIrIik7LTE9PT14LmluZGV4T2YoIngiKSYmKHY9dm9pZCAwKSwtMT09PXguaW5kZXhPZigieSIpJiYobT12b2lkIDApLC0xPT09eC5pbmRleE9mKCJ6IikmJihiPXZvaWQgMCksLTE9PT14LmluZGV4T2YoInRleHQiKSYmKGwudGV4dExhYmVsPXZvaWQgMCksLTE9PT14LmluZGV4T2YoIm5hbWUiKSYmKHMubmFtZT12b2lkIDApfXQuZnVsbFNjZW5lTGF5b3V0LmhvdmVybW9kZSYmcC5sb25lSG92ZXIoe3g6KC41Ky41KmZbMF0vZlszXSkqaSx5OiguNS0uNSpmWzFdL2ZbM10pKm8seExhYmVsOnYseUxhYmVsOm0sekxhYmVsOmIsdGV4dDpsLnRleHRMYWJlbCxuYW1lOnMubmFtZSxjb2xvcjpzLmNvbG9yfSx7Y29udGFpbmVyOnJ9KTt2YXIgXz17cG9pbnRzOlt7eDp2LHk6bSx6OmIsZGF0YTp1Ll9pbnB1dCxmdWxsRGF0YTp1LGN1cnZlTnVtYmVyOnUuaW5kZXgscG9pbnROdW1iZXI6bC5kYXRhLmluZGV4fV19O2wuYnV0dG9ucyYmbC5kaXN0YW5jZTw1P3QuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X2NsaWNrIixfKTp0LmdyYXBoRGl2LmVtaXQoInBsb3RseV9ob3ZlciIsXyksaD1ffWVsc2UgcC5sb25lVW5ob3ZlcihyKSx0LmdyYXBoRGl2LmVtaXQoInBsb3RseV91bmhvdmVyIixoKX1mdW5jdGlvbiBpKHQsZSxyLGkpe3ZhciBvPXtjYW52YXM6cixnbDppLGNvbnRhaW5lcjp0LmNvbnRhaW5lcixheGVzOnQuYXhlc09wdGlvbnMsc3Bpa2VzOnQuc3Bpa2VPcHRpb25zLHBpY2tSYWRpdXM6MTAsc25hcFRvRGF0YTohMCxhdXRvU2NhbGU6ITAsYXV0b0JvdW5kczohMX07aWYodC5zdGF0aWNNb2RlKXtpZighYyl7bD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0cnl7Yz1sLmdldENvbnRleHQoIndlYmdsIix7cHJlc2VydmVEcmF3aW5nQnVmZmVyOiEwLHByZW11bHRpcGxpZWRBbHBoYTohMH0pfWNhdGNoKGEpe3Rocm93IG5ldyBFcnJvcigiZXJyb3IgY3JlYXRpbmcgc3RhdGljIGNhbnZhcy9jb250ZXh0IGZvciBpbWFnZSBzZXJ2ZXIiKX19by5waXhlbFJhdGlvPXQucGl4ZWxSYXRpbyxvLmdsPWMsby5jYW52YXM9bH10cnl7dC5nbHBsb3Q9dShvKX1jYXRjaChhKXt2KHQpfWlmKHQuc3RhdGljTW9kZXx8dC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKCJsb3N0IGNvbnRleHQiKSx0LnByZXZlbnREZWZhdWx0KCl9KSwhdC5jYW1lcmEpe3ZhciBzPXQuZnVsbFNjZW5lTGF5b3V0LmNhbWVyYTt0LmNhbWVyYT1tKHQuY29udGFpbmVyLHtjZW50ZXI6W3MuY2VudGVyLngscy5jZW50ZXIueSxzLmNlbnRlci56XSxleWU6W3MuZXllLngscy5leWUueSxzLmV5ZS56XSx1cDpbcy51cC54LHMudXAueSxzLnVwLnpdLHpvb21NaW46LjEsem9vbU1heDoxMDAsbW9kZToib3JiaXQifSl9cmV0dXJuIHQuZ2xwbG90Lm1vdXNlTGlzdGVuZXIuZW5hYmxlZD0hMSx0LmdscGxvdC5jYW1lcmE9dC5jYW1lcmEsdC5nbHBsb3Qub25jb250ZXh0bG9zcz1mdW5jdGlvbigpe3QucmVjb3ZlckNvbnRleHQoKX0sdC5nbHBsb3Qub25yZW5kZXI9bi5iaW5kKG51bGwsdCksdC50cmFjZXM9e30sITB9ZnVuY3Rpb24gbyh0LGUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dC5jb250YWluZXI7dGhpcy5ncmFwaERpdj10LmdyYXBoRGl2O3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTtvLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsby5zdHlsZS50b3A9by5zdHlsZS5sZWZ0PSIwcHgiLG8uc3R5bGUud2lkdGg9by5zdHlsZS5oZWlnaHQ9IjEwMCUiLG8uc3R5bGVbInotaW5kZXgiXT0yMCxvLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIixyLmFwcGVuZENoaWxkKG8pLHRoaXMuc3ZnQ29udGFpbmVyPW8sci5pZD10LmlkLHIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixyLnN0eWxlLnRvcD1yLnN0eWxlLmxlZnQ9IjBweCIsci5zdHlsZS53aWR0aD1yLnN0eWxlLmhlaWdodD0iMTAwJSIsbi5hcHBlbmRDaGlsZChyKSx0aGlzLmZ1bGxMYXlvdXQ9ZSx0aGlzLmlkPXQuaWR8fCJzY2VuZSIsdGhpcy5mdWxsU2NlbmVMYXlvdXQ9ZVt0aGlzLmlkXSx0aGlzLnBsb3RBcmdzPVtbXSx7fSx7fV0sdGhpcy5heGVzT3B0aW9ucz14KGVbdGhpcy5pZF0pLHRoaXMuc3Bpa2VPcHRpb25zPV8oZVt0aGlzLmlkXSksdGhpcy5jb250YWluZXI9cix0aGlzLnN0YXRpY01vZGU9ISF0LnN0YXRpY1Bsb3QsdGhpcy5waXhlbFJhdGlvPXQucGxvdEdsUGl4ZWxSYXRpb3x8Mix0aGlzLmRhdGFTY2FsZT1bMSwxLDFdLHRoaXMuY29udG91ckxldmVscz1bW10sW10sW11dLCFpKHRoaXMsZSl9ZnVuY3Rpb24gYSh0LGUscixuKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSlpZihBcnJheS5pc0FycmF5KGVbaV0pKWZvcih2YXIgbz0wO288ZVtpXS5sZW5ndGg7KytvKXt2YXIgYT10LmQybChlW2ldW29dKTshaXNOYU4oYSkmJmlzRmluaXRlKGEpJiYoblswXVtyXT1NYXRoLm1pbihuWzBdW3JdLGEpLG5bMV1bcl09TWF0aC5tYXgoblsxXVtyXSxhKSl9ZWxzZXt2YXIgYT10LmQybChlW2ldKTshaXNOYU4oYSkmJmlzRmluaXRlKGEpJiYoblswXVtyXT1NYXRoLm1pbihuWzBdW3JdLGEpLG5bMV1bcl09TWF0aC5tYXgoblsxXVtyXSxhKSl9fWZ1bmN0aW9uIHModCxlLHIpe3ZhciBuPXQuZnVsbFNjZW5lTGF5b3V0O2Eobi54YXhpcyxlLngsMCxyKSxhKG4ueWF4aXMsZS55LDEsciksYShuLnpheGlzLGUueiwyLHIpfXZhciBsLGMsdT10KCJnbC1wbG90M2QiKSxoPXQoIi4uLy4uL2xpYiIpLGY9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxkPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikscD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiKSxnPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSx2PXQoIi4uLy4uL2xpYi9zaG93X25vX3dlYmdsX21zZyIpLG09dCgiLi9jYW1lcmEiKSx5PXQoIi4vcHJvamVjdCIpLGI9dCgiLi9zZXRfY29udmVydCIpLHg9dCgiLi9sYXlvdXQvY29udmVydCIpLF89dCgiLi9sYXlvdXQvc3Bpa2VzIiksdz10KCIuL2xheW91dC90aWNrX21hcmtzIiksQT1vLnByb3RvdHlwZTtBLnJlY292ZXJDb250ZXh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3JldHVybiByLmlzQ29udGV4dExvc3QoKT92b2lkIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0KTppKGUsZS5mdWxsTGF5b3V0LG4scik/dm9pZCBlLnBsb3QuYXBwbHkoZSxlLnBsb3RBcmdzKTp2b2lkIGNvbnNvbGUuZXJyb3IoImNhdGFzdHJvcGhpYy91bnJlY292ZXJhYmxlIHdlYmdsIGVycm9yLiAgY29udGV4dCBsb3N0LiIpfXZhciBlPXRoaXMscj10aGlzLmdscGxvdC5nbCxuPXRoaXMuZ2xwbG90LmNhbnZhczt0aGlzLmdscGxvdC5kaXNwb3NlKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpfTt2YXIgaz1bInhheGlzIiwieWF4aXMiLCJ6YXhpcyJdO0EucGxvdD1mdW5jdGlvbih0LGUscil7aWYodGhpcy5wbG90QXJncz1bdCxlLHJdLCF0aGlzLmdscGxvdC5jb250ZXh0TG9zdCl7dmFyIG4saSxvLGEsbD1lW3RoaXMuaWRdLGM9clt0aGlzLmlkXTtmb3IobC5iZ2NvbG9yP3RoaXMuZ2xwbG90LmNsZWFyQ29sb3I9ZyhsLmJnY29sb3IpOnRoaXMuZ2xwbG90LmNsZWFyQ29sb3I9WzAsMCwwLDBdLHRoaXMuZ2xwbG90LnNuYXBUb0RhdGE9ITAsdGhpcy5mdWxsU2NlbmVMYXlvdXQ9bCx0aGlzLmdscGxvdExheW91dD1sLHRoaXMuYXhlc09wdGlvbnMubWVyZ2UobCksdGhpcy5zcGlrZU9wdGlvbnMubWVyZ2UobCksdGhpcy51cGRhdGVGeChsLmRyYWdtb2RlLGwuaG92ZXJtb2RlKSx0aGlzLmdscGxvdC51cGRhdGUoe30pLG89MDszPm87KytvKXt2YXIgdT1sW2tbb11dO2IodSl9dD9BcnJheS5pc0FycmF5KHQpfHwodD1bdF0pOnQ9W107Zm9yKHZhciBoPVtbMS8wLDEvMCwxLzBdLFstKDEvMCksLSgxLzApLC0oMS8wKV1dLG89MDtvPHQubGVuZ3RoOysrbyl7dmFyIG49dFtvXTtuLnZpc2libGU9PT0hMCYmcyh0aGlzLG4saCl9Zm9yKHZhciBkPVsxLDEsMV0sYT0wOzM+YTsrK2EpaFswXVthXT5oWzFdW2FdP2RbYV09MTpoWzFdW2FdPT09aFswXVthXT9kW2FdPTE6ZFthXT0xLyhoWzFdW2FdLWhbMF1bYV0pO3RoaXMuZGF0YVNjYWxlPWQ7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDsrK28paWYobj10W29dLG4udmlzaWJsZT09PSEwKXtpZihpPXRoaXMudHJhY2VzW24udWlkXSlpLnVwZGF0ZShuKTtlbHNle3ZhciBwPWYuZ2V0TW9kdWxlKG4udHlwZSk7aT1wLnBsb3QodGhpcyxuKSx0aGlzLnRyYWNlc1tuLnVpZF09aX1pLm5hbWU9bi5uYW1lfXZhciB2PU9iamVjdC5rZXlzKHRoaXMudHJhY2VzKTt0OmZvcihvPTA7bzx2Lmxlbmd0aDsrK28pe2ZvcihhPTA7YTx0Lmxlbmd0aDsrK2EpaWYodFthXS51aWQ9PT12W29dJiZ0W2FdLnZpc2libGU9PT0hMCljb250aW51ZSB0O2k9dGhpcy50cmFjZXNbdltvXV0saS5kaXNwb3NlKCksZGVsZXRlIHRoaXMudHJhY2VzW3Zbb11dfXZhciBtPVtbMCwwLDBdLFswLDAsMF1dLHk9W10seD17fTtmb3Iobz0wOzM+bzsrK28pe3ZhciB1PWxba1tvXV0sXz11LnR5cGU7aWYoXyBpbiB4Pyh4W19dLmFjYyo9ZFtvXSx4W19dLmNvdW50Kz0xKTp4W19dPXthY2M6ZFtvXSxjb3VudDoxfSx1LmF1dG9yYW5nZSl7Zm9yKG1bMF1bb109MS8wLG1bMV1bb109LSgxLzApLGE9MDthPHRoaXMuZ2xwbG90Lm9iamVjdHMubGVuZ3RoOysrYSl7dmFyIHc9dGhpcy5nbHBsb3Qub2JqZWN0c1thXS5ib3VuZHM7bVswXVtvXT1NYXRoLm1pbihtWzBdW29dLHdbMF1bb10vZFtvXSksbVsxXVtvXT1NYXRoLm1heChtWzFdW29dLHdbMV1bb10vZFtvXSl9aWYoInJhbmdlbW9kZSJpbiB1JiYidG96ZXJvIj09PXUucmFuZ2Vtb2RlJiYobVswXVtvXT1NYXRoLm1pbihtWzBdW29dLDApLG1bMV1bb109TWF0aC5tYXgobVsxXVtvXSwwKSksbVswXVtvXT5tWzFdW29dKW1bMF1bb109LTEsbVsxXVtvXT0xO2Vsc2V7dmFyIEE9bVsxXVtvXS1tWzBdW29dO21bMF1bb10tPUEvMzIsbVsxXVtvXSs9QS8zMn19ZWxzZXt2YXIgTT1sW2tbb11dLnJhbmdlO21bMF1bb109TVswXSxtWzFdW29dPU1bMV19bVswXVtvXT09PW1bMV1bb10mJihtWzBdW29dLT0xLG1bMV1bb10rPTEpLHlbb109bVsxXVtvXS1tWzBdW29dLHRoaXMuZ2xwbG90LmJvdW5kc1swXVtvXT1tWzBdW29dKmRbb10sdGhpcy5nbHBsb3QuYm91bmRzWzFdW29dPW1bMV1bb10qZFtvXX1mb3IodmFyIFQ9WzEsMSwxXSxvPTA7Mz5vOysrbyl7dmFyIHU9bFtrW29dXSxfPXUudHlwZSxFPXhbX107VFtvXT1NYXRoLnBvdyhFLmFjYywxL0UuY291bnQpL2Rbb119dmFyIEwsUz00O2lmKCJhdXRvIj09PWwuYXNwZWN0bW9kZSlMPU1hdGgubWF4LmFwcGx5KG51bGwsVCkvTWF0aC5taW4uYXBwbHkobnVsbCxUKTw9Uz9UOlsxLDEsMV07ZWxzZSBpZigiY3ViZSI9PT1sLmFzcGVjdG1vZGUpTD1bMSwxLDFdO2Vsc2UgaWYoImRhdGEiPT09bC5hc3BlY3Rtb2RlKUw9VDtlbHNle2lmKCJtYW51YWwiIT09bC5hc3BlY3Rtb2RlKXRocm93IG5ldyBFcnJvcigic2NlbmUuanMgYXNwZWN0UmF0aW8gd2FzIG5vdCBvbmUgb2YgdGhlIGVudW1lcmF0ZWQgdHlwZXMiKTt2YXIgQz1sLmFzcGVjdHJhdGlvO0w9W0MueCxDLnksQy56XX1sLmFzcGVjdHJhdGlvLng9Yy5hc3BlY3RyYXRpby54PUxbMF0sbC5hc3BlY3RyYXRpby55PWMuYXNwZWN0cmF0aW8ueT1MWzFdLGwuYXNwZWN0cmF0aW8uej1jLmFzcGVjdHJhdGlvLno9TFsyXSx0aGlzLmdscGxvdC5hc3BlY3Q9TDt2YXIgUD1sLmRvbWFpbnx8bnVsbCx6PWUuX3NpemV8fG51bGw7aWYoUCYmeil7dmFyIFI9dGhpcy5jb250YWluZXIuc3R5bGU7Ui5wb3NpdGlvbj0iYWJzb2x1dGUiLFIubGVmdD16LmwrUC54WzBdKnoudysicHgiLFIudG9wPXoudCsoMS1QLnlbMV0pKnouaCsicHgiLFIud2lkdGg9ei53KihQLnhbMV0tUC54WzBdKSsicHgiLFIuaGVpZ2h0PXouaCooUC55WzFdLVAueVswXSkrInB4In19fSxBLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmdscGxvdC5kaXNwb3NlKCksdGhpcy5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lciksdGhpcy5nbHBsb3Q9bnVsbH0sQS5zZXRDYW1lcmFUb0RlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLmdscGxvdC5jYW1lcmEubG9va0F0KFsxLjI1LDEuMjUsMS4yNV0sWzAsMCwwXSxbMCwwLDFdKX0sQS5nZXRDYW1lcmE9ZnVuY3Rpb24oKXt0aGlzLmdscGxvdC5jYW1lcmEudmlldy5yZWNhbGNNYXRyaXgodGhpcy5jYW1lcmEudmlldy5sYXN0VCgpKTt2YXIgdD10aGlzLmdscGxvdC5jYW1lcmEudXAsZT10aGlzLmdscGxvdC5jYW1lcmEuY2VudGVyLHI9dGhpcy5nbHBsb3QuY2FtZXJhLmV5ZTtyZXR1cm57dXA6e3g6dFswXSx5OnRbMV0sejp0WzJdfSxjZW50ZXI6e3g6ZVswXSx5OmVbMV0sejplWzJdfSxleWU6e3g6clswXSx5OnJbMV0sejpyWzJdfX19LEEuc2V0Q2FtZXJhPWZ1bmN0aW9uKHQpe3ZhciBlPXQudXAscj10LmNlbnRlcixuPXQuZXllO3RoaXMuZ2xwbG90LmNhbWVyYS5sb29rQXQoW24ueCxuLnksbi56XSxbci54LHIueSxyLnpdLFtlLngsZS55LGUuel0pfSxBLnNhdmVDYW1lcmE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUscixuKXt2YXIgaT1bInVwIiwiY2VudGVyIiwiZXllIl0sbz1bIngiLCJ5IiwieiJdO3JldHVybiB0W2lbcl1dW29bbl1dPT09ZVtpW3JdXVtvW25dXX12YXIgcj10aGlzLmdldENhbWVyYSgpLG49aC5uZXN0ZWRQcm9wZXJ0eSh0LHRoaXMuaWQrIi5jYW1lcmEiKSxpPW4uZ2V0KCksbz0hMTtpZih2b2lkIDA9PT1pKW89ITA7ZWxzZSBmb3IodmFyIGE9MDszPmE7YSsrKWZvcih2YXIgcz0wOzM+cztzKyspaWYoIWUocixpLGEscykpe289ITA7YnJlYWt9cmV0dXJuIG8mJm4uc2V0KHIpLG99LEEudXBkYXRlRng9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmNhbWVyYTtyJiYoIm9yYml0Ij09PXQ/KHIubW9kZT0ib3JiaXQiLHIua2V5QmluZGluZ01vZGU9InJvdGF0ZSIpOiJ0dXJudGFibGUiPT09dD8oci51cD1bMCwwLDFdLHIubW9kZT0idHVybnRhYmxlIixyLmtleUJpbmRpbmdNb2RlPSJyb3RhdGUiKTpyLmtleUJpbmRpbmdNb2RlPXQpLHRoaXMuZnVsbFNjZW5lTGF5b3V0LmhvdmVybW9kZT1lfSxBLnRvSW1hZ2U9ZnVuY3Rpb24odCl7dHx8KHQ9InBuZyIpLHRoaXMuc3RhdGljTW9kZSYmdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQobCksdGhpcy5nbHBsb3QucmVkcmF3KCk7dmFyIGU9dGhpcy5nbHBsb3QuZ2wscj1lLmRyYXdpbmdCdWZmZXJXaWR0aCxuPWUuZHJhd2luZ0J1ZmZlckhlaWdodDtlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLG51bGwpO3ZhciBpPW5ldyBVaW50OEFycmF5KHIqbio0KTtlLnJlYWRQaXhlbHMoMCwwLHIsbixlLlJHQkEsZS5VTlNJR05FRF9CWVRFLGkpO2Zvcih2YXIgbz0wLGE9bi0xO2E+bzsrK28sLS1hKWZvcih2YXIgcz0wO3I+czsrK3MpZm9yKHZhciBjPTA7ND5jOysrYyl7dmFyIHU9aVs0KihyKm8rcykrY107aVs0KihyKm8rcykrY109aVs0KihyKmErcykrY10saVs0KihyKmErcykrY109dX12YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtoLndpZHRoPXIsaC5oZWlnaHQ9bjt2YXIgZj1oLmdldENvbnRleHQoIjJkIiksZD1mLmNyZWF0ZUltYWdlRGF0YShyLG4pO2QuZGF0YS5zZXQoaSksZi5wdXRJbWFnZURhdGEoZCwwLDApO3ZhciBwO3N3aXRjaCh0KXtjYXNlImpwZWciOnA9aC50b0RhdGFVUkwoImltYWdlL2pwZWciKTticmVhaztjYXNlIndlYnAiOnA9aC50b0RhdGFVUkwoImltYWdlL3dlYnAiKTticmVhaztkZWZhdWx0OnA9aC50b0RhdGFVUkwoImltYWdlL3BuZyIpfXJldHVybiB0aGlzLnN0YXRpY01vZGUmJnRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKGwpLHB9LGUuZXhwb3J0cz1vfSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9saWIvc2hvd19ub193ZWJnbF9tc2ciOjM4MSwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6MzgzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiOjM5OCwiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNywiLi9jYW1lcmEiOjQyMywiLi9sYXlvdXQvY29udmVydCI6NDI4LCIuL2xheW91dC9zcGlrZXMiOjQzMSwiLi9sYXlvdXQvdGlja19tYXJrcyI6NDMyLCIuL3Byb2plY3QiOjQzMywiLi9zZXRfY29udmVydCI6NDM1LCJnbC1wbG90M2QiOjE0MH1dLDQzNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9jYXJ0ZXNpYW4vYXhlcyIpLGk9ZnVuY3Rpb24oKXt9O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtuLnNldENvbnZlcnQodCksdC5zZXRTY2FsZT1pfX0seyIuLi9jYXJ0ZXNpYW4vYXhlcyI6MzkzfV0sNDM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3Bsb3RseSIpLGk9dCgiLi9mb250X2F0dHJpYnV0ZXMiKSxvPXQoIi4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLGE9bi5MaWIuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e2ZvbnQ6e2ZhbWlseTphKHt9LGkuZmFtaWx5LHtkZmx0OiciT3BlbiBTYW5zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnfSksc2l6ZTphKHt9LGkuc2l6ZSx7ZGZsdDoxMn0pLGNvbG9yOmEoe30saS5jb2xvcix7ZGZsdDpvLmRlZmF1bHRMaW5lfSl9LHRpdGxlOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IkNsaWNrIHRvIGVudGVyIFBsb3QgdGl0bGUifSx0aXRsZWZvbnQ6YSh7fSxpLHt9KSxhdXRvc2l6ZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMCwhMSwiaW5pdGlhbCJdfSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MTAsZGZsdDo3MDB9LGhlaWdodDp7dmFsVHlwZToibnVtYmVyIixtaW46MTAsZGZsdDo0NTB9LG1hcmdpbjp7bDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjgwfSxyOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6ODB9LHQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxMDB9LGI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDo4MH0scGFkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MH0sYXV0b2V4cGFuZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH19LHBhcGVyX2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om8uYmFja2dyb3VuZH0scGxvdF9iZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpvLmJhY2tncm91bmR9LHNlcGFyYXRvcnM6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiLiwifSxoaWRlc291cmNlczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sc21pdGg6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITFdLGRmbHQ6ITF9LHNob3dsZWdlbmQ6e3ZhbFR5cGU6ImJvb2xlYW4ifSxfaGFzQ2FydGVzaWFuOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxfaGFzR0wzRDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sX2hhc0dlbzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sX2hhc1BpZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sX2hhc0dMMkQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LF9jb21wb3NlZE1vZHVsZXM6eyIqIjoiRngifSxfbmVzdGVkTW9kdWxlczp7eGF4aXM6IkF4ZXMiLHlheGlzOiJBeGVzIixzY2VuZToiZ2wzZCIsZ2VvOiJnZW8iLGxlZ2VuZDoiTGVnZW5kIixhbm5vdGF0aW9uczoiQW5ub3RhdGlvbnMiLHNoYXBlczoiU2hhcGVzIn19fSx7Ii4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6MzAwLCIuLi9wbG90bHkiOjM5MCwiLi9mb250X2F0dHJpYnV0ZXMiOjQwN31dLDQzNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9dC50eXBlKSx0fWZ1bmN0aW9uIGkodCxlKXtlLnRleHQoIiIpO3ZhciByPWUuYXBwZW5kKCJhIikuYXR0cih7InhsaW5rOnhsaW5rOmhyZWYiOiIjIiwiY2xhc3MiOiJsaW5rLS1pbXB0IGxpbmstLWVtYmVkdmlldyIsImZvbnQtd2VpZ2h0IjoiYm9sZCJ9KS50ZXh0KHQuX2NvbnRleHQubGlua1RleHQrIiAiK1N0cmluZy5mcm9tQ2hhckNvZGUoMTg3KSk7aWYodC5fY29udGV4dC5zZW5kRGF0YSlyLm9uKCJjbGljayIsZnVuY3Rpb24oKXt1LnNlbmREYXRhVG9DbG91ZCh0KX0pO2Vsc2V7dmFyIG49d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCIvIiksaT13aW5kb3cubG9jYXRpb24uc2VhcmNoO3IuYXR0cih7InhsaW5rOnhsaW5rOnNob3ciOiJuZXciLCJ4bGluazp4bGluazpocmVmIjoiLyIrblsyXS5zcGxpdCgiLiIpWzBdKyIvIituWzFdK2l9KX19ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcixuPU9iamVjdC5rZXlzKGUpLGk9MDtpPG4ubGVuZ3RoOysraSl7dmFyIGE9bltpXTtpZigiXyI9PT1hLmNoYXJBdCgwKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGVbYV0pe2lmKGEgaW4gdCljb250aW51ZTt0W2FdPWVbYV19ZWxzZSBpZihBcnJheS5pc0FycmF5KGVbYV0pJiZBcnJheS5pc0FycmF5KHRbYV0pJiZlW2FdLmxlbmd0aCYmYy5pc1BsYWluT2JqZWN0KGVbYV1bMF0pKXtpZihlW2FdLmxlbmd0aCE9PXRbYV0ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicmVsaW5rUHJpdmF0ZUtleXMgbmVlZHMgZXF1YWwgbGVuZ3RoIGFycmF5cyIpO2ZvcihyPTA7cjxlW2FdLmxlbmd0aDtyKyspbyh0W2FdW3JdLGVbYV1bcl0pfWVsc2UgYy5pc1BsYWluT2JqZWN0KGVbYV0pJiZjLmlzUGxhaW5PYmplY3QodFthXSkmJihvKHRbYV0sZVthXSksT2JqZWN0LmtleXModFthXSkubGVuZ3RofHxkZWxldGUgdFthXSl9fXZhciBhPXQoIi4uL3Bsb3RseSIpLHM9dCgiZDMiKSxsPXQoImZhc3QtaXNudW1lcmljIiksYz10KCIuLi9saWIiKSx1PWUuZXhwb3J0cz17fSxoPXUubW9kdWxlcz17fSxmPXUuYWxsVHlwZXM9W10sZD11LmFsbENhdGVnb3JpZXM9e30scD11LnN1YnBsb3RzUmVnaXN0cnk9e307dS5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLHUuYXR0cmlidXRlcy50eXBlLnZhbHVlcz1mLHUuZm9udEF0dHJzPXQoIi4vZm9udF9hdHRyaWJ1dGVzIiksdS5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSx1LmZvbnRXZWlnaHQ9Im5vcm1hbCIsdS5yZWdpc3Rlcj1mdW5jdGlvbih0LGUscixuKXtpZihoW2VdKXJldHVybiB2b2lkIGNvbnNvbGUubG9nKCJ0eXBlICIrZSsiIGFscmVhZHkgcmVnaXN0ZXJlZCIpO2Zvcih2YXIgaT17fSxvPTA7bzxyLmxlbmd0aDtvKyspaVtyW29dXT0hMCxkW3Jbb11dPSEwO2hbZV09e19tb2R1bGU6dCxjYXRlZ29yaWVzOml9LG4mJk9iamVjdC5rZXlzKG4pLmxlbmd0aCYmKGhbZV0ubWV0YT1uKSxmLnB1c2goZSl9LHUuZ2V0TW9kdWxlPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQucilyZXR1cm4gY29uc29sZS5sb2coIk9vcHMsIHRyaWVkIHRvIHB1dCBhIHBvbGFyIHRyYWNlIG9uIGFuIGluY29tcGF0aWJsZSBncmFwaCBvZiBjYXJ0ZXNpYW4gZGF0YS4gSWdub3JpbmcgdGhpcyBkYXRhc2V0LiIsdCksITE7dmFyIGU9aFtuKHQpXTtyZXR1cm4gZT9lLl9tb2R1bGU6ITF9LHUudHJhY2VJcz1mdW5jdGlvbih0LGUpe2lmKHQ9bih0KSwidmFyaW91cyI9PT10KXJldHVybiExO3ZhciByPWhbdF07cmV0dXJuIHJ8fCh2b2lkIDAhPT10JiZjb25zb2xlLndhcm4oInVucmVjb2duaXplZCB0cmFjZSB0eXBlICIrdCkscj1oW3UuYXR0cmlidXRlcy50eXBlLmRmbHRdKSwhIXIuY2F0ZWdvcmllc1tlXX0sdS5yZWdpc3RlclN1YnBsb3Q9ZnVuY3Rpb24odCl7dmFyIGU9dC5uYW1lO3JldHVybiBwW2VdP3ZvaWQgY29uc29sZS5sb2coInBsb3QgdHlwZSAiK2UrIiBhbHJlYWR5IHJlZ2lzdGVyZWQiKTp2b2lkKHBbZV09dCl9LHUuZmluZFN1YnBsb3RJZHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1bXTtpZih2b2lkIDA9PT11LnN1YnBsb3RzUmVnaXN0cnlbZV0pcmV0dXJuIHI7Zm9yKHZhciBuPXUuc3VicGxvdHNSZWdpc3RyeVtlXS5hdHRyLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXTt1LnRyYWNlSXMobyxlKSYmLTE9PT1yLmluZGV4T2Yob1tuXSkmJnIucHVzaChvW25dKX1yZXR1cm4gcn0sdS5nZXRTdWJwbG90SWRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dS5zdWJwbG90c1JlZ2lzdHJ5W2VdO2lmKHZvaWQgMD09PXIpcmV0dXJuW107aWYoImNhcnRlc2lhbiI9PT1lJiYhdC5faGFzQ2FydGVzaWFuKXJldHVybltdO2lmKCJnbDJkIj09PWUmJiF0Ll9oYXNHTDJEKXJldHVybltdO2lmKCJjYXJ0ZXNpYW4iPT09ZXx8ImdsMmQiPT09ZSlyZXR1cm4gT2JqZWN0LmtleXModC5fcGxvdHMpO2Zvcih2YXIgbj1yLmlkUmVnZXgsaT1PYmplY3Qua2V5cyh0KSxvPVtdLGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIHM9aVthXTtuLnRlc3QocykmJm8ucHVzaChzKX12YXIgbD1yLmlkUm9vdC5sZW5ndGg7cmV0dXJuIG8uc29ydChmdW5jdGlvbih0LGUpe3ZhciByPSsodC5zdWJzdHIobCl8fDEpLG49KyhlLnN1YnN0cihsKXx8MSk7cmV0dXJuIHItbn0pLG99LHUuZ2V0U3VicGxvdERhdGE9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09PXUuc3VicGxvdHNSZWdpc3RyeVtlXSlyZXR1cm5bXTtmb3IodmFyIG4saT11LnN1YnBsb3RzUmVnaXN0cnlbZV0uYXR0cixvPVtdLHM9MDtzPHQubGVuZ3RoO3MrKylpZihuPXRbc10sImdsMmQiPT09ZSYmdS50cmFjZUlzKG4sImdsMmQiKSl7dmFyIGw9YS5BeGVzLnN1YnBsb3RNYXRjaCxjPSJ4IityLm1hdGNoKGwpWzFdLGg9InkiK3IubWF0Y2gobClbMl07bltpWzBdXT09PWMmJm5baVsxXV09PT1oJiZvLnB1c2gobil9ZWxzZSBuW2ldPT09ciYmby5wdXNoKG4pO3JldHVybiBvfSx1LnJlZHJhd1RleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX2Z1bGxMYXlvdXQuX2hhc0dMM0R8fHQuZGF0YSYmdC5kYXRhWzBdJiZ0LmRhdGFbMF0ucj92b2lkIDA6bmV3IFByb21pc2UoZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe2EuQW5ub3RhdGlvbnMuZHJhd0FsbCh0KSxhLkxlZ2VuZC5kcmF3KHQpLCh0LmNhbGNkYXRhfHxbXSkuZm9yRWFjaChmdW5jdGlvbih0KXt0WzBdJiZ0WzBdLnQmJnRbMF0udC5jYiYmdFswXS50LmNiKCl9KSxlKHUucHJldmlvdXNQcm9taXNlcyh0KSl9LDMwMCl9KX0sdS5yZXNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUscil7dCYmIm5vbmUiIT09cy5zZWxlY3QodCkuc3R5bGUoImRpc3BsYXkiKXx8cihuZXcgRXJyb3IoIlJlc2l6ZSBtdXN0IGJlIHBhc3NlZCBhIHBsb3QgZGl2IGVsZW1lbnQuIikpLHQuX3JlZHJhd1RpbWVyJiZjbGVhclRpbWVvdXQodC5fcmVkcmF3VGltZXIpLHQuX3JlZHJhd1RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZigodC5fZnVsbExheW91dHx8e30pLmF1dG9zaXplKXt2YXIgcj10LmNoYW5nZWQ7dC5hdXRvcGxheT0hMCxhLnJlbGF5b3V0KHQse2F1dG9zaXplOiEwfSksdC5jaGFuZ2VkPXIsZSh0KX19LDEwMCl9KX0sdS5wcmV2aW91c1Byb21pc2VzPWZ1bmN0aW9uKHQpe3JldHVybih0Ll9wcm9taXNlc3x8W10pLmxlbmd0aD9Qcm9taXNlLmFsbCh0Ll9wcm9taXNlcykudGhlbihmdW5jdGlvbigpe3QuX3Byb21pc2VzPVtdfSk6dm9pZCAwfSx1LmFkZExpbmtzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9wYXBlci5zZWxlY3RBbGwoInRleHQuanMtcGxvdC1saW5rLWNvbnRhaW5lciIpLmRhdGEoWzBdKTtyLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZCgianMtcGxvdC1saW5rLWNvbnRhaW5lciIsITApLnN0eWxlKHsiZm9udC1mYW1pbHkiOiciT3BlbiBTYW5zIiwgQXJpYWwsIHNhbnMtc2VyaWYnLCJmb250LXNpemUiOiIxMnB4IixmaWxsOmEuQ29sb3IuZGVmYXVsdExpbmUsInBvaW50ZXItZXZlbnRzIjoiYWxsIn0pLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1zLnNlbGVjdCh0aGlzKTt0LmFwcGVuZCgidHNwYW4iKS5jbGFzc2VkKCJqcy1saW5rLXRvLXRvb2wiLCEwKSx0LmFwcGVuZCgidHNwYW4iKS5jbGFzc2VkKCJqcy1saW5rLXNwYWNlciIsITApLHQuYXBwZW5kKCJ0c3BhbiIpLmNsYXNzZWQoImpzLXNvdXJjZWxpbmtzIiwhMCl9KTt2YXIgbj1yLm5vZGUoKSxvPXt5OmUuX3BhcGVyLmF0dHIoImhlaWdodCIpLTl9O2RvY3VtZW50LmJvZHkuY29udGFpbnMobikmJm4uZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk+PWUud2lkdGgtMjA/KG9bInRleHQtYW5jaG9yIl09InN0YXJ0IixvLng9NSk6KG9bInRleHQtYW5jaG9yIl09ImVuZCIsby54PWUuX3BhcGVyLmF0dHIoIndpZHRoIiktNyksci5hdHRyKG8pO3ZhciBsPXIuc2VsZWN0KCIuanMtbGluay10by10b29sIiksYz1yLnNlbGVjdCgiLmpzLWxpbmstc3BhY2VyIiksdT1yLnNlbGVjdCgiLmpzLXNvdXJjZWxpbmtzIik7dC5fY29udGV4dC5zaG93U291cmNlcyYmdC5fY29udGV4dC5zaG93U291cmNlcyh0KSx0Ll9jb250ZXh0LnNob3dMaW5rJiZpKHQsbCksYy50ZXh0KGwudGV4dCgpJiZ1LnRleHQoKT8iIC0gIjoiIil9LHUuc2VuZERhdGFUb0Nsb3VkPWZ1bmN0aW9uKHQpe3QuZW1pdCgicGxvdGx5X2JlZm9yZWV4cG9ydCIpO3ZhciBlPXdpbmRvdy5QTE9UTFlFTlYmJndpbmRvdy5QTE9UTFlFTlYuQkFTRV9VUkx8fCJodHRwczovL3Bsb3QubHkiLHI9cy5zZWxlY3QodCkuYXBwZW5kKCJkaXYiKS5hdHRyKCJpZCIsImhpZGRlbmZvcm0iKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSxuPXIuYXBwZW5kKCJmb3JtIikuYXR0cih7CmFjdGlvbjplKyIvZXh0ZXJuYWwiLG1ldGhvZDoicG9zdCIsdGFyZ2V0OiJfYmxhbmsifSksaT1uLmFwcGVuZCgiaW5wdXQiKS5hdHRyKHt0eXBlOiJ0ZXh0IixuYW1lOiJkYXRhIn0pO3JldHVybiBpLm5vZGUoKS52YWx1ZT11LmdyYXBoSnNvbih0LCExLCJrZWVwZGF0YSIpLG4ubm9kZSgpLnN1Ym1pdCgpLHIucmVtb3ZlKCksdC5lbWl0KCJwbG90bHlfYWZ0ZXJleHBvcnQiKSwhMX0sdS5zdXBwbHlEZWZhdWx0cz1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxzLGwsYz10Ll9mdWxsTGF5b3V0fHx7fSxoPXQuX2Z1bGxMYXlvdXQ9e30sZj10LmxheW91dHx8e30sZD10Ll9mdWxsRGF0YXx8W10scD10Ll9mdWxsRGF0YT1bXSxnPXQuZGF0YXx8W10sdj10Ll9tb2R1bGVzPVtdO2Zvcih1LnN1cHBseUxheW91dEdsb2JhbERlZmF1bHRzKGYsaCksaC5fZGF0YUxlbmd0aD1nLmxlbmd0aCxlPTA7ZTxnLmxlbmd0aDtlKyspcj1nW2VdLG49dS5zdXBwbHlEYXRhRGVmYXVsdHMocixlLGgpLHAucHVzaChuKSx1LnRyYWNlSXMobiwiY2FydGVzaWFuIik/aC5faGFzQ2FydGVzaWFuPSEwOnUudHJhY2VJcyhuLCJnbDNkIik/aC5faGFzR0wzRD0hMDp1LnRyYWNlSXMobiwiZ2VvIik/aC5faGFzR2VvPSEwOnUudHJhY2VJcyhuLCJwaWUiKT9oLl9oYXNQaWU9ITA6dS50cmFjZUlzKG4sImdsMmQiKT9oLl9oYXNHTDJEPSEwOiJyImluIG4mJihoLl9oYXNQb2xhcj0hMCksaT1uLl9tb2R1bGUsaSYmLTE9PT12LmluZGV4T2YoaSkmJnYucHVzaChpKTtmb3IoZT0wO2U8di5sZW5ndGg7ZSsrKWk9dltlXSxpLmNsZWFuRGF0YSYmaS5jbGVhbkRhdGEocCk7aWYoZC5sZW5ndGg9PT1nLmxlbmd0aClmb3IoZT0wO2U8cC5sZW5ndGg7ZSsrKW8ocFtlXSxkW2VdKTtmb3IodS5zdXBwbHlMYXlvdXRNb2R1bGVEZWZhdWx0cyhmLGgscCksdS5jbGVhblBsb3QocCxoLGQsYyksbyhoLGMpLHUuZG9BdXRvTWFyZ2luKHQpLHM9YS5BeGVzLmxpc3QodCksZT0wO2U8cy5sZW5ndGg7ZSsrKWw9c1tlXSxsLl90ZD10LGwuc2V0U2NhbGUoKTtpZigodC5jYWxjZGF0YXx8W10pLmxlbmd0aD09PXAubGVuZ3RoKWZvcihlPTA7ZTxwLmxlbmd0aDtlKyspcj1wW2VdLCh0LmNhbGNkYXRhW2VdWzBdfHx7fSkudHJhY2U9cn0sdS5jbGVhblBsb3Q9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGksbyxhPU9iamVjdC5rZXlzKHApO2ZvcihpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBzPXBbYVtpXV07cy5jbGVhbiYmcy5jbGVhbih0LGUscixuKX12YXIgbD0hIW4uX3BhcGVyLGM9ISFuLl9pbmZvbGF5ZXI7dDpmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgdT1yW2ldLGg9dS51aWQ7Zm9yKG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIGY9dFtvXTtpZihoPT09Zi51aWQpY29udGludWUgdH1sJiZuLl9wYXBlci5zZWxlY3RBbGwoIi5obSIraCsiLC5jb250b3VyIitoKyIsI2NsaXAiK2gpLnJlbW92ZSgpLGMmJm4uX2luZm9sYXllci5zZWxlY3RBbGwoIi5jYiIraCkucmVtb3ZlKCl9fSx1LnN1cHBseURhdGFEZWZhdWx0cz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbihlLHIpe3JldHVybiBjLmNvZXJjZSh0LG8sdS5hdHRyaWJ1dGVzLGUscil9ZnVuY3Rpb24gaShlLHIpe3JldHVybiB1LnRyYWNlSXMobyxlKT9jLmNvZXJjZSh0LG8sdS5zdWJwbG90c1JlZ2lzdHJ5W2VdLmF0dHJpYnV0ZXMscik6dm9pZCAwfXZhciBvPXt9LHM9YS5Db2xvci5kZWZhdWx0c1tlJWEuQ29sb3IuZGVmYXVsdHMubGVuZ3RoXTtvLmluZGV4PWU7dmFyIGwsaCxmPW4oInZpc2libGUiKTtyZXR1cm4gbigidHlwZSIpLG4oInVpZCIpLGkoImdsM2QiLCJzY2VuZSIpLGkoImdlbyIsImdlbyIpLChmfHxsKSYmKGg9dS5nZXRNb2R1bGUobyksby5fbW9kdWxlPWgpLGYmJm4oImhvdmVyaW5mbyIsMT09PXIuX2RhdGFMZW5ndGg/IngreSt6K3RleHQiOnZvaWQgMCksaCYmZiYmaC5zdXBwbHlEZWZhdWx0cyh0LG8scyxyKSxmJiYobigibmFtZSIsInRyYWNlICIrZSksdS50cmFjZUlzKG8sIm5vT3BhY2l0eSIpfHxuKCJvcGFjaXR5IiksaSgiY2FydGVzaWFuIiwieGF4aXMiKSxpKCJjYXJ0ZXNpYW4iLCJ5YXhpcyIpLGkoImdsMmQiLCJ4YXhpcyIpLGkoImdsMmQiLCJ5YXhpcyIpLHUudHJhY2VJcyhvLCJzaG93TGVnZW5kIikmJihuKCJzaG93bGVnZW5kIiksbigibGVnZW5kZ3JvdXAiKSkpLG8uX2lucHV0PXQsb30sdS5zdXBwbHlMYXlvdXRHbG9iYWxEZWZhdWx0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gYy5jb2VyY2UodCxlLHUubGF5b3V0QXR0cmlidXRlcyxyLG4pfXZhciBuPWMuY29lcmNlRm9udChyLCJmb250Iik7cigidGl0bGUiKSxjLmNvZXJjZUZvbnQociwidGl0bGVmb250Iix7ZmFtaWx5Om4uZmFtaWx5LHNpemU6TWF0aC5yb3VuZCgxLjQqbi5zaXplKSxjb2xvcjpuLmNvbG9yfSk7dmFyIGk9cigiYXV0b3NpemUiLHQud2lkdGgmJnQuaGVpZ2h0PyExOiJpbml0aWFsIik7cigid2lkdGgiKSxyKCJoZWlnaHQiKSxyKCJtYXJnaW4ubCIpLHIoIm1hcmdpbi5yIikscigibWFyZ2luLnQiKSxyKCJtYXJnaW4uYiIpLHIoIm1hcmdpbi5wYWQiKSxyKCJtYXJnaW4uYXV0b2V4cGFuZCIpLCJpbml0aWFsIiE9PWkmJnUuc2FuaXRpemVNYXJnaW5zKGUpLHIoInBhcGVyX2JnY29sb3IiKSxyKCJzZXBhcmF0b3JzIikscigiaGlkZXNvdXJjZXMiKSxyKCJzbWl0aCIpLHIoIl9oYXNDYXJ0ZXNpYW4iKSxyKCJfaGFzR0wzRCIpLHIoIl9oYXNHZW8iKSxyKCJfaGFzUGllIikscigiX2hhc0dMMkQiKX0sdS5zdXBwbHlMYXlvdXRNb2R1bGVEZWZhdWx0cz1mdW5jdGlvbih0LGUscil7dmFyIG4saTthLkF4ZXMuc3VwcGx5TGF5b3V0RGVmYXVsdHModCxlLHIpO3ZhciBvPU9iamVjdC5rZXlzKHApO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspaT1wW29bbl1dLGkuc3VwcGx5TGF5b3V0RGVmYXVsdHMmJmkuc3VwcGx5TGF5b3V0RGVmYXVsdHModCxlLHIpO3ZhciBzPU9iamVjdC5rZXlzKGgpO2ZvcihuPTA7bjxzLmxlbmd0aDtuKyspaT1oW2Zbbl1dLl9tb2R1bGUsaS5zdXBwbHlMYXlvdXREZWZhdWx0cyYmaS5zdXBwbHlMYXlvdXREZWZhdWx0cyh0LGUscik7dmFyIGw9WyJGeCIsIkFubm90YXRpb25zIiwiU2hhcGVzIiwiTGVnZW5kIl07Zm9yKG49MDtuPGwubGVuZ3RoO24rKylpPWxbbl0sYVtpXSYmYVtpXS5zdXBwbHlMYXlvdXREZWZhdWx0cyh0LGUscil9LHUucHVyZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dHx8e307dm9pZCAwIT09ZS5fZ2xjb250YWluZXImJmUuX2dsY29udGFpbmVyLnJlbW92ZSgpLHZvaWQgMCE9PWUuX2dlb2NvbnRhaW5lciYmZS5fZ2VvY29udGFpbmVyLnJlbW92ZSgpLGUuX21vZGVCYXImJmUuX21vZGVCYXIuZGVzdHJveSgpLGRlbGV0ZSB0LmRhdGEsZGVsZXRlIHQubGF5b3V0LGRlbGV0ZSB0Ll9mdWxsRGF0YSxkZWxldGUgdC5fZnVsbExheW91dCxkZWxldGUgdC5jYWxjZGF0YSxkZWxldGUgdC5mcmFtZXdvcmssZGVsZXRlIHQuZW1wdHksZGVsZXRlIHQuZmlkLGRlbGV0ZSB0LnVuZG9xdWV1ZSxkZWxldGUgdC51bmRvbnVtLGRlbGV0ZSB0LmF1dG9wbGF5LGRlbGV0ZSB0LmNoYW5nZWQsZGVsZXRlIHQuX21vZHVsZXMsZGVsZXRlIHQuX3Rlc3RlcixkZWxldGUgdC5fdGVzdHJlZixkZWxldGUgdC5fcHJvbWlzZXMsZGVsZXRlIHQuX3JlZHJhd1RpbWVyLGRlbGV0ZSB0Ll9yZXBsb3R0aW5nLGRlbGV0ZSB0LmZpcnN0c2NhdHRlcixkZWxldGUgdC5obWx1bWNvdW50LGRlbGV0ZSB0LmhtcGl4Y291bnQsZGVsZXRlIHQubnVtYm94ZXMsZGVsZXRlIHQuX2hvdmVyVGltZXIsZGVsZXRlIHQuX2xhc3RIb3ZlclRpbWUsdC5yZW1vdmVBbGxMaXN0ZW5lcnMmJnQucmVtb3ZlQWxsTGlzdGVuZXJzKCl9LHUuc3R5bGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX21vZHVsZXMscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uc3R5bGUmJm4uc3R5bGUodCl9fSx1LnNhbml0aXplTWFyZ2lucz1mdW5jdGlvbih0KXtpZih0JiZ0Lm1hcmdpbil7dmFyIGUscj10LndpZHRoLG49dC5oZWlnaHQsaT10Lm1hcmdpbixvPXItKGkubCtpLnIpLGE9bi0oaS50K2kuYik7MD5vJiYoZT0oci0xKS8oaS5sK2kuciksaS5sPU1hdGguZmxvb3IoZSppLmwpLGkucj1NYXRoLmZsb29yKGUqaS5yKSksMD5hJiYoZT0obi0xKS8oaS50K2kuYiksaS50PU1hdGguZmxvb3IoZSppLnQpLGkuYj1NYXRoLmZsb29yKGUqaS5iKSl9fSx1LmF1dG9NYXJnaW49ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuX2Z1bGxMYXlvdXQ7aWYobi5fcHVzaG1hcmdpbnx8KG4uX3B1c2htYXJnaW49e30pLG4ubWFyZ2luLmF1dG9leHBhbmQhPT0hMSl7aWYocil7dmFyIGk9dm9pZCAwPT09ci5wYWQ/MTI6ci5wYWQ7ci5sK3Iucj4uNSpuLndpZHRoJiYoci5sPXIucj0wKSxyLmIrci50Pi41Km4uaGVpZ2h0JiYoci5iPXIudD0wKSxuLl9wdXNobWFyZ2luW2VdPXtsOnt2YWw6ci54LHNpemU6ci5sK2l9LHI6e3ZhbDpyLngsc2l6ZTpyLnIraX0sYjp7dmFsOnIueSxzaXplOnIuYitpfSx0Ont2YWw6ci55LHNpemU6ci50K2l9fX1lbHNlIGRlbGV0ZSBuLl9wdXNobWFyZ2luW2VdO3QuX3JlcGxvdHRpbmd8fHUuZG9BdXRvTWFyZ2luKHQpfX0sdS5kb0F1dG9NYXJnaW49ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtlLl9zaXplfHwoZS5fc2l6ZT17fSksZS5fcHVzaG1hcmdpbnx8KGUuX3B1c2htYXJnaW49e30pO3ZhciByPWUuX3NpemUsbj1KU09OLnN0cmluZ2lmeShyKSxpPU1hdGgubWF4KGUubWFyZ2luLmx8fDAsMCksbz1NYXRoLm1heChlLm1hcmdpbi5yfHwwLDApLHM9TWF0aC5tYXgoZS5tYXJnaW4udHx8MCwwKSxjPU1hdGgubWF4KGUubWFyZ2luLmJ8fDAsMCksdT1lLl9wdXNobWFyZ2luO3JldHVybiBlLm1hcmdpbi5hdXRvZXhwYW5kIT09ITEmJih1LmJhc2U9e2w6e3ZhbDowLHNpemU6aX0scjp7dmFsOjEsc2l6ZTpvfSx0Ont2YWw6MSxzaXplOnN9LGI6e3ZhbDowLHNpemU6Y319LE9iamVjdC5rZXlzKHUpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9dVt0XS5sfHx7fSxuPXVbdF0uYnx8e30sYT1yLnZhbCxoPXIuc2l6ZSxmPW4udmFsLGQ9bi5zaXplO09iamVjdC5rZXlzKHUpLmZvckVhY2goZnVuY3Rpb24odCl7aWYobChoKSYmdVt0XS5yKXt2YXIgcj11W3RdLnIudmFsLG49dVt0XS5yLnNpemU7aWYocj5hKXt2YXIgcD0oaCpyKyhuLWUud2lkdGgpKmEpLyhyLWEpLGc9KG4qKDEtYSkrKGgtZS53aWR0aCkqKDEtcikpLyhyLWEpO3A+PTAmJmc+PTAmJnArZz5pK28mJihpPXAsbz1nKX19aWYobChkKSYmdVt0XS50KXt2YXIgdj11W3RdLnQudmFsLG09dVt0XS50LnNpemU7aWYodj5mKXt2YXIgeT0oZCp2KyhtLWUuaGVpZ2h0KSpmKS8odi1mKSxiPShtKigxLWYpKyhkLWUuaGVpZ2h0KSooMS12KSkvKHYtZik7eT49MCYmYj49MCYmeStiPmMrcyYmKGM9eSxzPWIpfX19KX0pKSxyLmw9TWF0aC5yb3VuZChpKSxyLnI9TWF0aC5yb3VuZChvKSxyLnQ9TWF0aC5yb3VuZChzKSxyLmI9TWF0aC5yb3VuZChjKSxyLnA9TWF0aC5yb3VuZChlLm1hcmdpbi5wYWQpLHIudz1NYXRoLnJvdW5kKGUud2lkdGgpLXIubC1yLnIsci5oPU1hdGgucm91bmQoZS5oZWlnaHQpLXIudC1yLmIsdC5fcmVwbG90dGluZ3x8Int9Ij09PW58fG49PT1KU09OLnN0cmluZ2lmeShlLl9zaXplKT92b2lkIDA6YS5wbG90KHQpfSx1LmdyYXBoSnNvbj1mdW5jdGlvbih0LGUscixuLGkpe2Z1bmN0aW9uIG8odCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIG51bGw7aWYoYy5pc1BsYWluT2JqZWN0KHQpKXt2YXIgZSxuLGk9e307Zm9yKGUgaW4gdClpZigiZnVuY3Rpb24iIT10eXBlb2YgdFtlXSYmLTE9PT1bIl8iLCJbIl0uaW5kZXhPZihlLmNoYXJBdCgwKSkpe2lmKCJrZWVwZGF0YSI9PT1yKXtpZigic3JjIj09PWUuc3Vic3RyKGUubGVuZ3RoLTMpKWNvbnRpbnVlfWVsc2UgaWYoImtlZXBzdHJlYW0iPT09cil7aWYobj10W2UrInNyYyJdLCJzdHJpbmciPT10eXBlb2YgbiYmbi5pbmRleE9mKCI6Iik+MCYmIWMuaXNQbGFpbk9iamVjdCh0LnN0cmVhbSkpY29udGludWV9ZWxzZSBpZigia2VlcGFsbCIhPT1yJiYobj10W2UrInNyYyJdLCJzdHJpbmciPT10eXBlb2YgbiYmbi5pbmRleE9mKCI6Iik+MCkpY29udGludWU7aVtlXT1vKHRbZV0pfXJldHVybiBpfXJldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKG8pOnQmJnQuZ2V0VGltZT9jLm1zMkRhdGVUaW1lKHQpOnR9KGkmJmUmJiF0Ll9mdWxsRGF0YXx8aSYmIWUmJiF0Ll9mdWxsTGF5b3V0KSYmdS5zdXBwbHlEZWZhdWx0cyh0KTt2YXIgYT1pP3QuX2Z1bGxEYXRhOnQuZGF0YSxzPWk/dC5fZnVsbExheW91dDp0LmxheW91dCxsPXtkYXRhOihhfHxbXSkubWFwKGZ1bmN0aW9uKHQpe3ZhciByPW8odCk7cmV0dXJuIGUmJmRlbGV0ZSByLmZpdCxyfSl9O3JldHVybiBlfHwobC5sYXlvdXQ9byhzKSksdC5mcmFtZXdvcmsmJnQuZnJhbWV3b3JrLmlzUG9sYXImJihsPXQuZnJhbWV3b3JrLmdldENvbmZpZygpKSwib2JqZWN0Ij09PW4/bDpKU09OLnN0cmluZ2lmeShsKX19LHsiLi4vbGliIjozNzMsIi4uL3Bsb3RseSI6MzkwLCIuL2F0dHJpYnV0ZXMiOjM5MSwiLi9mb250X2F0dHJpYnV0ZXMiOjQwNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6NDM2LGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0Mzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGk9bi5tYXJrZXI7ZS5leHBvcnRzPXtyOm4ucix0Om4udCxtYXJrZXI6e2NvbG9yOmkuY29sb3Isc2l6ZTppLnNpemUsc3ltYm9sOmkuc3ltYm9sLG9wYWNpdHk6aS5vcGFjaXR5fX19LHsiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyI6NTI4fV0sNDM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj17c2hvd2xpbmU6e3ZhbFR5cGU6ImJvb2xlYW4ifSxzaG93dGlja2xhYmVsczp7dmFsVHlwZToiYm9vbGVhbiJ9LHRpY2tvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaG9yaXpvbnRhbCIsInZlcnRpY2FsIl19LHRpY2tsZW46e3ZhbFR5cGU6Im51bWJlciIsbWluOjB9LHRpY2tjb2xvcjp7dmFsVHlwZToiY29sb3IifSx0aWNrc3VmZml4Ont2YWxUeXBlOiJzdHJpbmcifSxlbmRwYWRkaW5nOnt2YWxUeXBlOiJudW1iZXIifSx2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIn19O3JldHVybiBvKHt9LGUscil9dmFyIGk9dCgiLi4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxhPW8oe30saS5kb21haW4se30pO2UuZXhwb3J0cz17cmFkaWFsYXhpczpuKCJyYWRpYWwiLHtyYW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIifSx7dmFsVHlwZToibnVtYmVyIn1dfSxkb21haW46YSxvcmllbnRhdGlvbjp7dmFsVHlwZToibnVtYmVyIn19KSxhbmd1bGFyYXhpczpuKCJhbmd1bGFyIix7cmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixkZmx0OjB9LHt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MzYwfV19LGRvbWFpbjphfSksbGF5b3V0OntkaXJlY3Rpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNsb2Nrd2lzZSIsImNvdW50ZXJjbG9ja3dpc2UiXX0sb3JpZW50YXRpb246e3ZhbFR5cGU6ImFuZ2xlIn19fX0seyIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6NDAwfV0sNDQwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vLi4vcGxvdGx5IiksaT10KCJkMyIpLG89ZS5leHBvcnRzPXt2ZXJzaW9uOiIwLjIuMiIsbWFuYWdlcjp0KCIuL21pY3JvcG9sYXJfbWFuYWdlciIpfSxhPW4uTGliLmV4dGVuZERlZXBBbGw7by5BeGlzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyPXR8fHI7dmFyIGM9bC5kYXRhLGg9bC5sYXlvdXQ7cmV0dXJuKCJzdHJpbmciPT10eXBlb2Ygcnx8ci5ub2RlTmFtZSkmJihyPWkuc2VsZWN0KHIpKSxyLmRhdHVtKGMpLmVhY2goZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHModCklMzYwK2gub3JpZW50YXRpb259dmFyIGM9dC5zbGljZSgpO3U9e2RhdGE6by51dGlsLmNsb25lSnNvbihjKSxsYXlvdXQ6by51dGlsLmNsb25lSnNvbihoKX07dmFyIGY9MDtjLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmNvbG9yfHwodC5jb2xvcj1oLmRlZmF1bHRDb2xvclJhbmdlW2ZdLGY9KGYrMSklaC5kZWZhdWx0Q29sb3JSYW5nZS5sZW5ndGgpLHQuc3Ryb2tlQ29sb3J8fCh0LnN0cm9rZUNvbG9yPSJMaW5lUGxvdCI9PT10Lmdlb21ldHJ5P3QuY29sb3I6aS5yZ2IodC5jb2xvcikuZGFya2VyKCkudG9TdHJpbmcoKSksdS5kYXRhW2VdLmNvbG9yPXQuY29sb3IsdS5kYXRhW2VdLnN0cm9rZUNvbG9yPXQuc3Ryb2tlQ29sb3IsdS5kYXRhW2VdLnN0cm9rZURhc2g9dC5zdHJva2VEYXNoLHUuZGF0YVtlXS5zdHJva2VTaXplPXQuc3Ryb2tlU2l6ZX0pO3ZhciBkPWMuZmlsdGVyKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC52aXNpYmxlO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygcnx8cj09PSEwfSkscD0hMSxnPWQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHA9cHx8InVuZGVmaW5lZCIhPXR5cGVvZiB0Lmdyb3VwSWQsdH0pO2lmKHApe3ZhciB2PWkubmVzdCgpLmtleShmdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5ncm91cElkP3QuZ3JvdXBJZDoidW5zdGFja2VkIn0pLmVudHJpZXMoZyksbT1bXSx5PXYubWFwKGZ1bmN0aW9uKHQsZSl7aWYoInVuc3RhY2tlZCI9PT10LmtleSlyZXR1cm4gdC52YWx1ZXM7dmFyIHI9dC52YWx1ZXNbMF0uci5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gMH0pO3JldHVybiB0LnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSxuKXt0LnlTdGFjaz1bcl0sbS5wdXNoKHIpLHI9by51dGlsLnN1bUFycmF5cyh0LnIscil9KSx0LnZhbHVlc30pO2Q9aS5tZXJnZSh5KX1kLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnQ9QXJyYXkuaXNBcnJheSh0LnRbMF0pP3QudDpbdC50XSx0LnI9QXJyYXkuaXNBcnJheSh0LnJbMF0pP3QucjpbdC5yXX0pO3ZhciBiPU1hdGgubWluKGgud2lkdGgtaC5tYXJnaW4ubGVmdC1oLm1hcmdpbi5yaWdodCxoLmhlaWdodC1oLm1hcmdpbi50b3AtaC5tYXJnaW4uYm90dG9tKS8yO2I9TWF0aC5tYXgoMTAsYik7dmFyIHgsXz1baC5tYXJnaW4ubGVmdCtiLGgubWFyZ2luLnRvcCtiXTtpZihwKXt2YXIgdz1pLm1heChvLnV0aWwuc3VtQXJyYXlzKG8udXRpbC5hcnJheUxhc3QoZCkuclswXSxvLnV0aWwuYXJyYXlMYXN0KG0pKSk7eD1bMCx3XX1lbHNlIHg9aS5leHRlbnQoby51dGlsLmZsYXR0ZW5BcnJheShkLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0LnJ9KSkpO2gucmFkaWFsQXhpcy5kb21haW4hPW8uREFUQUVYVEVOVCYmKHhbMF09MCksbj1pLnNjYWxlLmxpbmVhcigpLmRvbWFpbihoLnJhZGlhbEF4aXMuZG9tYWluIT1vLkRBVEFFWFRFTlQmJmgucmFkaWFsQXhpcy5kb21haW4/aC5yYWRpYWxBeGlzLmRvbWFpbjp4KS5yYW5nZShbMCxiXSksdS5sYXlvdXQucmFkaWFsQXhpcy5kb21haW49bi5kb21haW4oKTt2YXIgQSxrPW8udXRpbC5mbGF0dGVuQXJyYXkoZC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50fSkpLE09InN0cmluZyI9PXR5cGVvZiBrWzBdO00mJihrPW8udXRpbC5kZWR1cGxpY2F0ZShrKSxBPWsuc2xpY2UoKSxrPWkucmFuZ2Uoay5sZW5ndGgpLGQ9ZC5tYXAoZnVuY3Rpb24odCxlKXt2YXIgcj10O3JldHVybiB0LnQ9W2tdLHAmJihyLnlTdGFjaz10LnlTdGFjaykscn0pKTt2YXIgVD1kLmZpbHRlcihmdW5jdGlvbih0LGUpe3JldHVybiJMaW5lUGxvdCI9PT10Lmdlb21ldHJ5fHwiRG90UGxvdCI9PT10Lmdlb21ldHJ5fSkubGVuZ3RoPT09ZC5sZW5ndGgsRT1udWxsPT09aC5uZWVkc0VuZFNwYWNpbmc/TXx8IVQ6aC5uZWVkc0VuZFNwYWNpbmcsTD1oLmFuZ3VsYXJBeGlzLmRvbWFpbiYmaC5hbmd1bGFyQXhpcy5kb21haW4hPW8uREFUQUVYVEVOVCYmIU0mJmguYW5ndWxhckF4aXMuZG9tYWluWzBdPj0wLFM9TD9oLmFuZ3VsYXJBeGlzLmRvbWFpbjppLmV4dGVudChrKSxDPU1hdGguYWJzKGtbMV0ta1swXSk7VCYmIU0mJihDPTApO3ZhciBQPVMuc2xpY2UoKTtFJiZNJiYoUFsxXSs9Qyk7dmFyIHo9aC5hbmd1bGFyQXhpcy50aWNrc0NvdW50fHw0O3o+OCYmKHo9ei8oei84KSt6JTgpLGguYW5ndWxhckF4aXMudGlja3NTdGVwJiYoej0oUFsxXS1QWzBdKS96KTt2YXIgUj1oLmFuZ3VsYXJBeGlzLnRpY2tzU3RlcHx8KFBbMV0tUFswXSkvKHoqKGgubWlub3JUaWNrcysxKSk7QSYmKFI9TWF0aC5tYXgoTWF0aC5yb3VuZChSKSwxKSksUFsyXXx8KFBbMl09Uik7dmFyIE89aS5yYW5nZS5hcHBseSh0aGlzLFApO2lmKE89Ty5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LnRvUHJlY2lzaW9uKDEyKSl9KSxzPWkuc2NhbGUubGluZWFyKCkuZG9tYWluKFAuc2xpY2UoMCwyKSkucmFuZ2UoImNsb2Nrd2lzZSI9PT1oLmRpcmVjdGlvbj9bMCwzNjBdOlszNjAsMF0pLHUubGF5b3V0LmFuZ3VsYXJBeGlzLmRvbWFpbj1zLmRvbWFpbigpLHUubGF5b3V0LmFuZ3VsYXJBeGlzLmVuZFBhZGRpbmc9RT9DOjAsZT1pLnNlbGVjdCh0aGlzKS5zZWxlY3QoInN2Zy5jaGFydC1yb290IiksInVuZGVmaW5lZCI9PXR5cGVvZiBlfHxlLmVtcHR5KCkpe3ZhciBJPSI8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgY2xhc3M9J2NoYXJ0LXJvb3QnPicgKyAnPGcgY2xhc3M9J291dGVyLWdyb3VwJz4nICsgJzxnIGNsYXNzPSdjaGFydC1ncm91cCc+JyArICc8Y2lyY2xlIGNsYXNzPSdiYWNrZ3JvdW5kLWNpcmNsZSc+PC9jaXJjbGU+JyArICc8ZyBjbGFzcz0nZ2VvbWV0cnktZ3JvdXAnPjwvZz4nICsgJzxnIGNsYXNzPSdyYWRpYWwgYXhpcy1ncm91cCc+JyArICc8Y2lyY2xlIGNsYXNzPSdvdXRzaWRlLWNpcmNsZSc+PC9jaXJjbGU+JyArICc8L2c+JyArICc8ZyBjbGFzcz0nYW5ndWxhciBheGlzLWdyb3VwJz48L2c+JyArICc8ZyBjbGFzcz0nZ3VpZGVzLWdyb3VwJz48bGluZT48L2xpbmU+PGNpcmNsZSByPScwJz48L2NpcmNsZT48L2c+JyArICc8L2c+JyArICc8ZyBjbGFzcz0nbGVnZW5kLWdyb3VwJz48L2c+JyArICc8ZyBjbGFzcz0ndG9vbHRpcHMtZ3JvdXAnPjwvZz4nICsgJzxnIGNsYXNzPSd0aXRsZS1ncm91cCc+PHRleHQ+PC90ZXh0PjwvZz4nICsgJzwvZz4nICsgJzwvc3ZnPiIsTj0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKEksImFwcGxpY2F0aW9uL3htbCIpLGo9dGhpcy5hcHBlbmRDaGlsZCh0aGlzLm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZShOLmRvY3VtZW50RWxlbWVudCwhMCkpO2U9aS5zZWxlY3Qoail9ZS5zZWxlY3QoIi5ndWlkZXMtZ3JvdXAiKS5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KSxlLnNlbGVjdCgiLmFuZ3VsYXIuYXhpcy1ncm91cCIpLnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJub25lIn0pLGUuc2VsZWN0KCIucmFkaWFsLmF4aXMtZ3JvdXAiKS5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KTt2YXIgRixEPWUuc2VsZWN0KCIuY2hhcnQtZ3JvdXAiKSxCPXtmaWxsOiJub25lIixzdHJva2U6aC50aWNrQ29sb3J9LFU9eyJmb250LXNpemUiOmguZm9udC5zaXplLCJmb250LWZhbWlseSI6aC5mb250LmZhbWlseSxmaWxsOmguZm9udC5jb2xvciwidGV4dC1zaGFkb3ciOlsiLTFweCAwcHgiLCIxcHggLTFweCIsIi0xcHggMXB4IiwiMXB4IDFweCJdLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiIgIit0KyIgMCAiK2guZm9udC5vdXRsaW5lQ29sb3J9KS5qb2luKCIsIil9O2lmKGguc2hvd0xlZ2VuZCl7Rj1lLnNlbGVjdCgiLmxlZ2VuZC1ncm91cCIpLmF0dHIoe3RyYW5zZm9ybToidHJhbnNsYXRlKCIrW2IsaC5tYXJnaW4udG9wXSsiKSJ9KS5zdHlsZSh7ZGlzcGxheToiYmxvY2sifSk7dmFyIFY9ZC5tYXAoZnVuY3Rpb24odCxlKXt2YXIgcj1vLnV0aWwuY2xvbmVKc29uKHQpO3JldHVybiByLnN5bWJvbD0iRG90UGxvdCI9PT10Lmdlb21ldHJ5P3QuZG90VHlwZXx8ImNpcmNsZSI6IkxpbmVQbG90IiE9dC5nZW9tZXRyeT8ic3F1YXJlIjoibGluZSIsci52aXNpYmxlSW5MZWdlbmQ9InVuZGVmaW5lZCI9PXR5cGVvZiB0LnZpc2libGVJbkxlZ2VuZHx8dC52aXNpYmxlSW5MZWdlbmQsci5jb2xvcj0iTGluZVBsb3QiPT09dC5nZW9tZXRyeT90LnN0cm9rZUNvbG9yOnQuY29sb3Iscn0pO28uTGVnZW5kKCkuY29uZmlnKHtkYXRhOmQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubmFtZXx8IkVsZW1lbnQiK2V9KSxsZWdlbmRDb25maWc6YSh7fSxvLkxlZ2VuZC5kZWZhdWx0Q29uZmlnKCkubGVnZW5kQ29uZmlnLHtjb250YWluZXI6RixlbGVtZW50czpWLHJldmVyc2VPcmRlcjpoLmxlZ2VuZC5yZXZlcnNlT3JkZXJ9KX0pKCk7dmFyIHE9Ri5ub2RlKCkuZ2V0QkJveCgpO2I9TWF0aC5taW4oaC53aWR0aC1xLndpZHRoLWgubWFyZ2luLmxlZnQtaC5tYXJnaW4ucmlnaHQsaC5oZWlnaHQtaC5tYXJnaW4udG9wLWgubWFyZ2luLmJvdHRvbSkvMixiPU1hdGgubWF4KDEwLGIpLF89W2gubWFyZ2luLmxlZnQrYixoLm1hcmdpbi50b3ArYl0sbi5yYW5nZShbMCxiXSksdS5sYXlvdXQucmFkaWFsQXhpcy5kb21haW49bi5kb21haW4oKSxGLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK1tfWzBdK2IsX1sxXS1iXSsiKSIpfWVsc2UgRj1lLnNlbGVjdCgiLmxlZ2VuZC1ncm91cCIpLnN0eWxlKHtkaXNwbGF5OiJub25lIn0pO2UuYXR0cih7d2lkdGg6aC53aWR0aCxoZWlnaHQ6aC5oZWlnaHR9KS5zdHlsZSh7b3BhY2l0eTpoLm9wYWNpdHl9KSxELmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK18rIikiKS5zdHlsZSh7Y3Vyc29yOiJjcm9zc2hhaXIifSk7dmFyIEg9WyhoLndpZHRoLShoLm1hcmdpbi5sZWZ0K2gubWFyZ2luLnJpZ2h0KzIqYisocT9xLndpZHRoOjApKSkvMiwoaC5oZWlnaHQtKGgubWFyZ2luLnRvcCtoLm1hcmdpbi5ib3R0b20rMipiKSkvMl07aWYoSFswXT1NYXRoLm1heCgwLEhbMF0pLEhbMV09TWF0aC5tYXgoMCxIWzFdKSxlLnNlbGVjdCgiLm91dGVyLWdyb3VwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrSCsiKSIpLGgudGl0bGUpe3ZhciBHPWUuc2VsZWN0KCJnLnRpdGxlLWdyb3VwIHRleHQiKS5zdHlsZShVKS50ZXh0KGgudGl0bGUpLFk9Ry5ub2RlKCkuZ2V0QkJveCgpO0cuYXR0cih7eDpfWzBdLVkud2lkdGgvMix5Ol9bMV0tYi0yMH0pfXZhciBYPWUuc2VsZWN0KCIucmFkaWFsLmF4aXMtZ3JvdXAiKTtpZihoLnJhZGlhbEF4aXMuZ3JpZExpbmVzVmlzaWJsZSl7dmFyIFc9WC5zZWxlY3RBbGwoImNpcmNsZS5ncmlkLWNpcmNsZSIpLmRhdGEobi50aWNrcyg1KSk7Vy5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuYXR0cih7ImNsYXNzIjoiZ3JpZC1jaXJjbGUifSkuc3R5bGUoQiksVy5hdHRyKCJyIixuKSxXLmV4aXQoKS5yZW1vdmUoKX1YLnNlbGVjdCgiY2lyY2xlLm91dHNpZGUtY2lyY2xlIikuYXR0cih7cjpifSkuc3R5bGUoQik7dmFyIFo9ZS5zZWxlY3QoImNpcmNsZS5iYWNrZ3JvdW5kLWNpcmNsZSIpLmF0dHIoe3I6Yn0pLnN0eWxlKHtmaWxsOmguYmFja2dyb3VuZENvbG9yLHN0cm9rZTpoLnN0cm9rZX0pO2lmKGgucmFkaWFsQXhpcy52aXNpYmxlKXt2YXIgJD1pLnN2Zy5heGlzKCkuc2NhbGUobikudGlja3MoNSkudGlja1NpemUoNSk7WC5jYWxsKCQpLmF0dHIoe3RyYW5zZm9ybToicm90YXRlKCIraC5yYWRpYWxBeGlzLm9yaWVudGF0aW9uKyIpIn0pLFguc2VsZWN0QWxsKCIuZG9tYWluIikuc3R5bGUoQiksWC5zZWxlY3RBbGwoImc+dGV4dCIpLnRleHQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50ZXh0Q29udGVudCtoLnJhZGlhbEF4aXMudGlja3NTdWZmaXh9KS5zdHlsZShVKS5zdHlsZSh7InRleHQtYW5jaG9yIjoic3RhcnQifSkuYXR0cih7eDowLHk6MCxkeDowLGR5OjAsdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuImhvcml6b250YWwiPT09aC5yYWRpYWxBeGlzLnRpY2tPcmllbnRhdGlvbj8icm90YXRlKCIrLWgucmFkaWFsQXhpcy5vcmllbnRhdGlvbisiKSB0cmFuc2xhdGUoIitbMCxVWyJmb250LXNpemUiXV0rIikiOiJ0cmFuc2xhdGUoIitbMCxVWyJmb250LXNpemUiXV0rIikifX0pLFguc2VsZWN0QWxsKCJnPmxpbmUiKS5zdHlsZSh7c3Ryb2tlOiJibGFjayJ9KX12YXIgSz1lLnNlbGVjdCgiLmFuZ3VsYXIuYXhpcy1ncm91cCIpLnNlbGVjdEFsbCgiZy5hbmd1bGFyLXRpY2siKS5kYXRhKE8pLFE9Sy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFuZ3VsYXItdGljayIsITApO0suYXR0cih7dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuInJvdGF0ZSgiK2wodCxlKSsiKSJ9fSkuc3R5bGUoe2Rpc3BsYXk6aC5hbmd1bGFyQXhpcy52aXNpYmxlPyJibG9jayI6Im5vbmUifSksSy5leGl0KCkucmVtb3ZlKCksUS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJncmlkLWxpbmUiLCEwKS5jbGFzc2VkKCJtYWpvciIsZnVuY3Rpb24odCxlKXtyZXR1cm4gZSUoaC5taW5vclRpY2tzKzEpPT0wfSkuY2xhc3NlZCgibWlub3IiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIShlJShoLm1pbm9yVGlja3MrMSk9PTApfSkuc3R5bGUoQiksUS5zZWxlY3RBbGwoIi5taW5vciIpLnN0eWxlKHtzdHJva2U6aC5taW5vclRpY2tDb2xvcn0pLEsuc2VsZWN0KCJsaW5lLmdyaWQtbGluZSIpLmF0dHIoe3gxOmgudGlja0xlbmd0aD9iLWgudGlja0xlbmd0aDowLHgyOmJ9KS5zdHlsZSh7ZGlzcGxheTpoLmFuZ3VsYXJBeGlzLmdyaWRMaW5lc1Zpc2libGU/ImJsb2NrIjoibm9uZSJ9KSxRLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImF4aXMtdGV4dCIsITApLnN0eWxlKFUpO3ZhciBKPUsuc2VsZWN0KCJ0ZXh0LmF4aXMtdGV4dCIpLmF0dHIoe3g6YitoLmxhYmVsT2Zmc2V0LGR5OiIuMzVlbSIsdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7dmFyIHI9bCh0LGUpLG49YitoLmxhYmVsT2Zmc2V0LGk9aC5hbmd1bGFyQXhpcy50aWNrT3JpZW50YXRpb247cmV0dXJuImhvcml6b250YWwiPT1pPyJyb3RhdGUoIistcisiICIrbisiIDApIjoicmFkaWFsIj09aT8yNzA+ciYmcj45MD8icm90YXRlKDE4MCAiK24rIiAwKSI6bnVsbDoicm90YXRlKCIrKDE4MD49ciYmcj4wPy05MDo5MCkrIiAiK24rIiAwKSJ9fSkuc3R5bGUoeyJ0ZXh0LWFuY2hvciI6Im1pZGRsZSIsZGlzcGxheTpoLmFuZ3VsYXJBeGlzLmxhYmVsc1Zpc2libGU/ImJsb2NrIjoibm9uZSJ9KS50ZXh0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlKGgubWlub3JUaWNrcysxKSE9MD8iIjpBP0FbdF0raC5hbmd1bGFyQXhpcy50aWNrc1N1ZmZpeDp0K2guYW5ndWxhckF4aXMudGlja3NTdWZmaXh9KS5zdHlsZShVKTtoLmFuZ3VsYXJBeGlzLnJld3JpdGVUaWNrcyYmSi50ZXh0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlKGgubWlub3JUaWNrcysxKSE9MD8iIjpoLmFuZ3VsYXJBeGlzLnJld3JpdGVUaWNrcyh0aGlzLnRleHRDb250ZW50LGUpfSk7dmFyIHR0PWkubWF4KEQuc2VsZWN0QWxsKCIuYW5ndWxhci10aWNrIHRleHQiKVswXS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRDVE0oKS5lK3QuZ2V0QkJveCgpLndpZHRofSkpO0YuYXR0cih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitbYit0dCxoLm1hcmdpbi50b3BdKyIpIn0pO3ZhciBldD1lLnNlbGVjdCgiZy5nZW9tZXRyeS1ncm91cCIpLnNlbGVjdEFsbCgiZyIpLnNpemUoKT4wLHJ0PWUuc2VsZWN0KCJnLmdlb21ldHJ5LWdyb3VwIikuc2VsZWN0QWxsKCJnLmdlb21ldHJ5IikuZGF0YShkKTtpZihydC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoeyJjbGFzcyI6ZnVuY3Rpb24odCxlKXtyZXR1cm4iZ2VvbWV0cnkgZ2VvbWV0cnkiK2V9fSkscnQuZXhpdCgpLnJlbW92ZSgpLGRbMF18fGV0KXt2YXIgbnQ9W107ZC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9e307ci5yYWRpYWxTY2FsZT1uLHIuYW5ndWxhclNjYWxlPXMsci5jb250YWluZXI9cnQuZmlsdGVyKGZ1bmN0aW9uKHQscil7cmV0dXJuIHI9PWV9KSxyLmdlb21ldHJ5PXQuZ2VvbWV0cnksci5vcmllbnRhdGlvbj1oLm9yaWVudGF0aW9uLHIuZGlyZWN0aW9uPWguZGlyZWN0aW9uLHIuaW5kZXg9ZSxudC5wdXNoKHtkYXRhOnQsZ2VvbWV0cnlDb25maWc6cn0pfSk7dmFyIGl0PWkubmVzdCgpLmtleShmdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5kYXRhLmdyb3VwSWR8fCJ1bnN0YWNrZWQifSkuZW50cmllcyhudCksb3Q9W107aXQuZm9yRWFjaChmdW5jdGlvbih0LGUpeyJ1bnN0YWNrZWQiPT09dC5rZXk/b3Q9b3QuY29uY2F0KHQudmFsdWVzLm1hcChmdW5jdGlvbih0LGUpe3JldHVyblt0XX0pKTpvdC5wdXNoKHQudmFsdWVzKX0pLG90LmZvckVhY2goZnVuY3Rpb24odCxlKXt2YXIgcjtyPUFycmF5LmlzQXJyYXkodCk/dFswXS5nZW9tZXRyeUNvbmZpZy5nZW9tZXRyeTp0Lmdlb21ldHJ5Q29uZmlnLmdlb21ldHJ5O3ZhciBuPXQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEob1tyXS5kZWZhdWx0Q29uZmlnKCksdCl9KTtvW3JdKCkuY29uZmlnKG4pKCl9KX12YXIgYXQsc3QsbHQ9ZS5zZWxlY3QoIi5ndWlkZXMtZ3JvdXAiKSxjdD1lLnNlbGVjdCgiLnRvb2x0aXBzLWdyb3VwIiksdXQ9by50b29sdGlwUGFuZWwoKS5jb25maWcoe2NvbnRhaW5lcjpjdCxmb250U2l6ZTo4fSkoKSxodD1vLnRvb2x0aXBQYW5lbCgpLmNvbmZpZyh7Y29udGFpbmVyOmN0LGZvbnRTaXplOjh9KSgpLGZ0PW8udG9vbHRpcFBhbmVsKCkuY29uZmlnKHtjb250YWluZXI6Y3QsaGFzVGljazohMH0pKCk7aWYoIU0pe3ZhciBkdD1sdC5zZWxlY3QoImxpbmUiKS5hdHRyKHt4MTowLHkxOjAseTI6MH0pLnN0eWxlKHtzdHJva2U6ImdyZXkiLCJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSk7RC5vbigibW91c2Vtb3ZlLmFuZ3VsYXItZ3VpZGUiLGZ1bmN0aW9uKHQsZSl7dmFyIHI9by51dGlsLmdldE1vdXNlUG9zKFopLmFuZ2xlO2R0LmF0dHIoe3gyOi1iLHRyYW5zZm9ybToicm90YXRlKCIrcisiKSJ9KS5zdHlsZSh7b3BhY2l0eTouNX0pO3ZhciBuPShyKzE4MCszNjAtaC5vcmllbnRhdGlvbiklMzYwO2F0PXMuaW52ZXJ0KG4pO3ZhciBpPW8udXRpbC5jb252ZXJ0VG9DYXJ0ZXNpYW4oYisxMixyKzE4MCk7dXQudGV4dChvLnV0aWwucm91bmQoYXQpKS5tb3ZlKFtpWzBdK19bMF0saVsxXStfWzFdXSl9KS5vbigibW91c2VvdXQuYW5ndWxhci1ndWlkZSIsZnVuY3Rpb24odCxlKXtsdC5zZWxlY3QoImxpbmUiKS5zdHlsZSh7b3BhY2l0eTowfSl9KX12YXIgcHQ9bHQuc2VsZWN0KCJjaXJjbGUiKS5zdHlsZSh7c3Ryb2tlOiJncmV5IixmaWxsOiJub25lIn0pO0Qub24oIm1vdXNlbW92ZS5yYWRpYWwtZ3VpZGUiLGZ1bmN0aW9uKHQsZSl7dmFyIHI9by51dGlsLmdldE1vdXNlUG9zKFopLnJhZGl1cztwdC5hdHRyKHtyOnJ9KS5zdHlsZSh7b3BhY2l0eTouNX0pLHN0PW4uaW52ZXJ0KG8udXRpbC5nZXRNb3VzZVBvcyhaKS5yYWRpdXMpO3ZhciBpPW8udXRpbC5jb252ZXJ0VG9DYXJ0ZXNpYW4ocixoLnJhZGlhbEF4aXMub3JpZW50YXRpb24pO2h0LnRleHQoby51dGlsLnJvdW5kKHN0KSkubW92ZShbaVswXStfWzBdLGlbMV0rX1sxXV0pfSkub24oIm1vdXNlb3V0LnJhZGlhbC1ndWlkZSIsZnVuY3Rpb24odCxlKXtwdC5zdHlsZSh7b3BhY2l0eTowfSksZnQuaGlkZSgpLHV0LmhpZGUoKSxodC5oaWRlKCl9KSxlLnNlbGVjdEFsbCgiLmdlb21ldHJ5LWdyb3VwIC5tYXJrIikub24oIm1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbih0LHIpe3ZhciBuPWkuc2VsZWN0KHRoaXMpLGE9bi5zdHlsZSgiZmlsbCIpLHM9ImJsYWNrIixsPW4uc3R5bGUoIm9wYWNpdHkiKXx8MTtpZihuLmF0dHIoeyJkYXRhLW9wYWNpdHkiOmx9KSwibm9uZSIhPWEpe24uYXR0cih7ImRhdGEtZmlsbCI6YX0pLHM9aS5oc2woYSkuZGFya2VyKCkudG9TdHJpbmcoKSxuLnN0eWxlKHtmaWxsOnMsb3BhY2l0eToxfSk7dmFyIGM9e3Q6by51dGlsLnJvdW5kKHRbMF0pLHI6by51dGlsLnJvdW5kKHRbMV0pfTtNJiYoYy50PUFbdFswXV0pO3ZhciB1PSJ0OiAiK2MudCsiLCByOiAiK2MucixoPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj1lLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPVtoLmxlZnQraC53aWR0aC8yLUhbMF0tZi5sZWZ0LGgudG9wK2guaGVpZ2h0LzItSFsxXS1mLnRvcF07ZnQuY29uZmlnKHtjb2xvcjpzfSkudGV4dCh1KSxmdC5tb3ZlKGQpfWVsc2UgYT1uLnN0eWxlKCJzdHJva2UiKSxuLmF0dHIoeyJkYXRhLXN0cm9rZSI6YX0pLHM9aS5oc2woYSkuZGFya2VyKCkudG9TdHJpbmcoKSxuLnN0eWxlKHtzdHJva2U6cyxvcGFjaXR5OjF9KX0pLm9uKCJtb3VzZW1vdmUudG9vbHRpcCIsZnVuY3Rpb24odCxlKXtyZXR1cm4gMCE9aS5ldmVudC53aGljaD8hMTp2b2lkKGkuc2VsZWN0KHRoaXMpLmF0dHIoImRhdGEtZmlsbCIpJiZmdC5zaG93KCkpfSkub24oIm1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKHQsZSl7ZnQuaGlkZSgpO3ZhciByPWkuc2VsZWN0KHRoaXMpLG49ci5hdHRyKCJkYXRhLWZpbGwiKTtuP3Iuc3R5bGUoe2ZpbGw6bixvcGFjaXR5OnIuYXR0cigiZGF0YS1vcGFjaXR5Iil9KTpyLnN0eWxlKHtzdHJva2U6ci5hdHRyKCJkYXRhLXN0cm9rZSIpLG9wYWNpdHk6ci5hdHRyKCJkYXRhLW9wYWNpdHkiKX0pfSl9KSxmfXZhciBlLHIsbixzLGw9e2RhdGE6W10sbGF5b3V0Ont9fSxjPXt9LHU9e30saD1pLmRpc3BhdGNoKCJob3ZlciIpLGY9e307cmV0dXJuIGYucmVuZGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUpLHRoaXN9LGYuY29uZmlnPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBsO3ZhciBlPW8udXRpbC5jbG9uZUpzb24odCk7cmV0dXJuIGUuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bC5kYXRhW2VdfHwobC5kYXRhW2VdPXt9KSxhKGwuZGF0YVtlXSxvLkF4aXMuZGVmYXVsdENvbmZpZygpLmRhdGFbMF0pLGEobC5kYXRhW2VdLHQpfSksYShsLmxheW91dCxvLkF4aXMuZGVmYXVsdENvbmZpZygpLmxheW91dCksYShsLmxheW91dCxlLmxheW91dCksdGhpc30sZi5nZXRMaXZlQ29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHV9LGYuZ2V0aW5wdXRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gY30sZi5yYWRpYWxTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbn0sZi5hbmd1bGFyU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHN9LGYuc3ZnPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LGkucmViaW5kKGYsaCwib24iKSxmfSxvLkF4aXMuZGVmYXVsdENvbmZpZz1mdW5jdGlvbih0LGUpe3ZhciByPXtkYXRhOlt7dDpbMSwyLDMsNF0scjpbMTAsMTEsMTIsMTNdLG5hbWU6IkxpbmUxIixnZW9tZXRyeToiTGluZVBsb3QiLGNvbG9yOm51bGwsc3Ryb2tlRGFzaDoic29saWQiLHN0cm9rZUNvbG9yOm51bGwsc3Ryb2tlU2l6ZToiMSIsdmlzaWJsZUluTGVnZW5kOiEwLG9wYWNpdHk6MX1dLGxheW91dDp7ZGVmYXVsdENvbG9yUmFuZ2U6aS5zY2FsZS5jYXRlZ29yeTEwKCkucmFuZ2UoKSx0aXRsZTpudWxsLGhlaWdodDo0NTAsd2lkdGg6NTAwLG1hcmdpbjp7dG9wOjQwLHJpZ2h0OjQwLGJvdHRvbTo0MCxsZWZ0OjQwfSxmb250OntzaXplOjEyLGNvbG9yOiJncmF5IixvdXRsaW5lQ29sb3I6IndoaXRlIixmYW1pbHk6IlRhaG9tYSwgc2Fucy1zZXJpZiJ9LGRpcmVjdGlvbjoiY2xvY2t3aXNlIixvcmllbnRhdGlvbjowLGxhYmVsT2Zmc2V0OjEwLHJhZGlhbEF4aXM6e2RvbWFpbjpudWxsLG9yaWVudGF0aW9uOi00NSx0aWNrc1N1ZmZpeDoiIix2aXNpYmxlOiEwLGdyaWRMaW5lc1Zpc2libGU6ITAsdGlja09yaWVudGF0aW9uOiJob3Jpem9udGFsIixyZXdyaXRlVGlja3M6bnVsbH0sYW5ndWxhckF4aXM6e2RvbWFpbjpbMCwzNjBdLHRpY2tzU3VmZml4OiIiLHZpc2libGU6ITAsZ3JpZExpbmVzVmlzaWJsZTohMCxsYWJlbHNWaXNpYmxlOiEwLHRpY2tPcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIscmV3cml0ZVRpY2tzOm51bGwsdGlja3NDb3VudDpudWxsLHRpY2tzU3RlcDpudWxsfSxtaW5vclRpY2tzOjAsdGlja0xlbmd0aDpudWxsLHRpY2tDb2xvcjoic2lsdmVyIixtaW5vclRpY2tDb2xvcjoiI2VlZSIsYmFja2dyb3VuZENvbG9yOiJub25lIixuZWVkc0VuZFNwYWNpbmc6bnVsbCxzaG93TGVnZW5kOiEwLGxlZ2VuZDp7cmV2ZXJzZU9yZGVyOiExfSxvcGFjaXR5OjF9fTtyZXR1cm4gcn0sby51dGlsPXt9LG8uREFUQUVYVEVOVD0iZGF0YUV4dGVudCIsby5BUkVBPSJBcmVhQ2hhcnQiLG8uTElORT0iTGluZVBsb3QiLG8uRE9UPSJEb3RQbG90IixvLkJBUj0iQmFyQ2hhcnQiLG8udXRpbC5fb3ZlcnJpZGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gdClyIGluIGUmJihlW3JdPXRbcl0pfSxvLnV0aWwuX2V4dGVuZD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXX0sby51dGlsLl9ybmRTbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gMipNYXRoLnJhbmRvbSgpLTErKDIqTWF0aC5yYW5kb20oKS0xKSsoMipNYXRoLnJhbmRvbSgpLTEpfSxvLnV0aWwuZGF0YUZyb21FcXVhdGlvbjI9ZnVuY3Rpb24odCxlKXt2YXIgcj1lfHw2LG49aS5yYW5nZSgwLDM2MCtyLHIpLm1hcChmdW5jdGlvbihlLHIpe3ZhciBuPWUqTWF0aC5QSS8xODAsaT10KG4pO3JldHVybltlLGldfSk7cmV0dXJuIG59LG8udXRpbC5kYXRhRnJvbUVxdWF0aW9uPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lfHw2LG89W10sYT1bXTtpLnJhbmdlKDAsMzYwK24sbikuZm9yRWFjaChmdW5jdGlvbihlLHIpe3ZhciBuPWUqTWF0aC5QSS8xODAsaT10KG4pO28ucHVzaChlKSxhLnB1c2goaSl9KTt2YXIgcz17dDpvLHI6YX07cmV0dXJuIHImJihzLm5hbWU9ciksc30sby51dGlsLmVuc3VyZUFycmF5PWZ1bmN0aW9uKHQsZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB0KXJldHVybiBudWxsO3ZhciByPVtdLmNvbmNhdCh0KTtyZXR1cm4gaS5yYW5nZShlKS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gcltlXXx8clswXX0pfSxvLnV0aWwuZmlsbEFycmF5cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe3RbZV09by51dGlsLmVuc3VyZUFycmF5KHRbZV0scil9KSx0fSxvLnV0aWwuY2xvbmVKc29uPWZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX0sby51dGlsLnZhbGlkYXRlS2V5cz1mdW5jdGlvbih0LGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS5zcGxpdCgiLiIpKTt2YXIgcj1lLnNoaWZ0KCk7cmV0dXJuIHRbcl0mJighZS5sZW5ndGh8fG9iakhhc0tleXModFtyXSxlKSl9LG8udXRpbC5zdW1BcnJheXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS56aXAodCxlKS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5zdW0odCl9KX0sby51dGlsLmFycmF5TGFzdD1mdW5jdGlvbih0KXtyZXR1cm4gdFt0Lmxlbmd0aC0xXX0sby51dGlsLmFycmF5RXF1YWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9TWF0aC5tYXgodC5sZW5ndGgsZS5sZW5ndGgsMSk7ci0tID49MCYmdFtyXT09PWVbcl07KTtyZXR1cm4tMj09PXJ9LG8udXRpbC5mbGF0dGVuQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdOyFvLnV0aWwuYXJyYXlFcXVhbChlLHQpOyllPXQsdD1bXS5jb25jYXQuYXBwbHkoW10sdCk7cmV0dXJuIHR9LG8udXRpbC5kZWR1cGxpY2F0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rpb24odCxlLHIpe3JldHVybiByLmluZGV4T2YodCk9PWV9KX0sby51dGlsLmNvbnZlcnRUb0NhcnRlc2lhbj1mdW5jdGlvbih0LGUpe3ZhciByPWUqTWF0aC5QSS8xODAsbj10Kk1hdGguY29zKHIpLGk9dCpNYXRoLnNpbihyKTtyZXR1cm5bbixpXX0sby51dGlsLnJvdW5kPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZXx8MixuPU1hdGgucG93KDEwLHIpO3JldHVybiBNYXRoLnJvdW5kKHQqbikvbn0sby51dGlsLmdldE1vdXNlUG9zPWZ1bmN0aW9uKHQpe3ZhciBlPWkubW91c2UodC5ub2RlKCkpLHI9ZVswXSxuPWVbMV0sbz17fTtyZXR1cm4gby54PXIsby55PW4sby5wb3M9ZSxvLmFuZ2xlPTE4MCooTWF0aC5hdGFuMihuLHIpK01hdGguUEkpL01hdGguUEksby5yYWRpdXM9TWF0aC5zcXJ0KHIqcituKm4pLG99LG8udXRpbC5kdXBsaWNhdGVzQ291bnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9e30sbj17fSxpPTAsbz10Lmxlbmd0aDtvPmk7aSsrKWU9dFtpXSxlIGluIHI/KHJbZV0rKyxuW2VdPXJbZV0pOnJbZV09MTtyZXR1cm4gbn0sby51dGlsLmR1cGxpY2F0ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKG8udXRpbC5kdXBsaWNhdGVzQ291bnQodCkpfSxvLnV0aWwudHJhbnNsYXRvcj1mdW5jdGlvbih0LGUscixuKXtpZihuKXt2YXIgaT1yLnNsaWNlKCk7cj1lLGU9aX12YXIgbz1lLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdD90W2VdOnZvaWQgMH0sdCk7InVuZGVmaW5lZCIhPXR5cGVvZiBvJiYoZS5yZWR1Y2UoZnVuY3Rpb24odCxyLG4pe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdD8obj09PWUubGVuZ3RoLTEmJmRlbGV0ZSB0W3JdLHRbcl0pOnZvaWQgMH0sdCksci5yZWR1Y2UoZnVuY3Rpb24odCxlLG4pe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdFtlXSYmKHRbZV09e30pLG49PT1yLmxlbmd0aC0xJiYodFtlXT1vKSx0W2VdfSx0KSl9LG8uUG9seUNoYXJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PXJbMF0uZ2VvbWV0cnlDb25maWcsZT10LmNvbnRhaW5lcjsic3RyaW5nIj09dHlwZW9mIGUmJihlPWkuc2VsZWN0KGUpKSxlLmRhdHVtKHIpLmVhY2goZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKGUscil7dmFyIG49dC5yYWRpYWxTY2FsZShlWzFdKSxpPSh0LmFuZ3VsYXJTY2FsZShlWzBdKSt0Lm9yaWVudGF0aW9uKSpNYXRoLlBJLzE4MDtyZXR1cm57cjpuLHQ6aX19ZnVuY3Rpb24gbyh0KXt2YXIgZT10LnIqTWF0aC5jb3ModC50KSxyPXQucipNYXRoLnNpbih0LnQpO3JldHVybnt4OmUseTpyfX12YXIgYT0hIWVbMF0uZGF0YS55U3RhY2ssbD1lLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBhP2kuemlwKHQuZGF0YS50WzBdLHQuZGF0YS5yWzBdLHQuZGF0YS55U3RhY2tbMF0pOmkuemlwKHQuZGF0YS50WzBdLHQuZGF0YS5yWzBdKX0pLGM9dC5hbmd1bGFyU2NhbGUsdT10LnJhZGlhbFNjYWxlLmRvbWFpbigpWzBdLGg9e307aC5iYXI9ZnVuY3Rpb24ocixuLG8pe3ZhciBhPWVbb10uZGF0YSxzPXQucmFkaWFsU2NhbGUoclsxXSktdC5yYWRpYWxTY2FsZSgwKSxsPXQucmFkaWFsU2NhbGUoclsyXXx8MCksdT1hLmJhcldpZHRoO2kuc2VsZWN0KHRoaXMpLmF0dHIoeyJjbGFzcyI6Im1hcmsgYmFyIixkOiJNIitbW3MrbCwtdS8yXSxbcytsLHUvMl0sW2wsdS8yXSxbbCwtdS8yXV0uam9pbigiTCIpKyJaIix0cmFuc2Zvcm06ZnVuY3Rpb24oZSxyKXtyZXR1cm4icm90YXRlKCIrKHQub3JpZW50YXRpb24rYyhlWzBdKSkrIikifX0pfSxoLmRvdD1mdW5jdGlvbih0LHIsYSl7dmFyIHM9dFsyXT9bdFswXSx0WzFdK3RbMl1dOnQsbD1pLnN2Zy5zeW1ib2woKS5zaXplKGVbYV0uZGF0YS5kb3RTaXplKS50eXBlKGVbYV0uZGF0YS5kb3RUeXBlKSh0LHIpO2kuc2VsZWN0KHRoaXMpLmF0dHIoeyJjbGFzcyI6Im1hcmsgZG90IixkOmwsdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7dmFyIHI9byhuKHMpKTtyZXR1cm4idHJhbnNsYXRlKCIrW3IueCxyLnldKyIpIn19KX07dmFyIGY9aS5zdmcubGluZS5yYWRpYWwoKS5pbnRlcnBvbGF0ZShlWzBdLmRhdGEubGluZUludGVycG9sYXRpb24pLnJhZGl1cyhmdW5jdGlvbihlKXtyZXR1cm4gdC5yYWRpYWxTY2FsZShlWzFdKX0pLmFuZ2xlKGZ1bmN0aW9uKGUpe3JldHVybiB0LmFuZ3VsYXJTY2FsZShlWzBdKSpNYXRoLlBJLzE4MH0pO2gubGluZT1mdW5jdGlvbihyLG4sbyl7dmFyIGE9clsyXT9sW29dLm1hcChmdW5jdGlvbih0LGUpe3JldHVyblt0WzBdLHRbMV0rdFsyXV19KTpsW29dO2lmKGkuc2VsZWN0KHRoaXMpLmVhY2goaC5kb3QpLnN0eWxlKHtvcGFjaXR5OmZ1bmN0aW9uKHQscil7cmV0dXJuK2Vbb10uZGF0YS5kb3RWaXNpYmxlfSxmaWxsOnYuc3Ryb2tlKHIsbixvKX0pLmF0dHIoeyJjbGFzcyI6Im1hcmsgZG90In0pLCEobj4wKSl7dmFyIHM9aS5zZWxlY3QodGhpcy5wYXJlbnROb2RlKS5zZWxlY3RBbGwoInBhdGgubGluZSIpLmRhdGEoWzBdKTtzLmVudGVyKCkuaW5zZXJ0KCJwYXRoIikscy5hdHRyKHsiY2xhc3MiOiJsaW5lIixkOmYoYSksdHJhbnNmb3JtOmZ1bmN0aW9uKGUscil7cmV0dXJuInJvdGF0ZSgiKyh0Lm9yaWVudGF0aW9uKzkwKSsiKSJ9LCJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSkuc3R5bGUoe2ZpbGw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdi5maWxsKHIsbixvKX0sImZpbGwtb3BhY2l0eSI6MCxzdHJva2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdi5zdHJva2UocixuLG8pfSwic3Ryb2tlLXdpZHRoIjpmdW5jdGlvbih0LGUpe3JldHVybiB2WyJzdHJva2Utd2lkdGgiXShyLG4sbyl9LCJzdHJva2UtZGFzaGFycmF5IjpmdW5jdGlvbih0LGUpe3JldHVybiB2WyJzdHJva2UtZGFzaGFycmF5Il0ocixuLG8pfSxvcGFjaXR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHYub3BhY2l0eShyLG4sbyl9LGRpc3BsYXk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdi5kaXNwbGF5KHIsbixvKX19KX19O3ZhciBkPXQuYW5ndWxhclNjYWxlLnJhbmdlKCkscD1NYXRoLmFicyhkWzFdLWRbMF0pL2xbMF0ubGVuZ3RoKk1hdGguUEkvMTgwLGc9aS5zdmcuYXJjKCkuc3RhcnRBbmdsZShmdW5jdGlvbih0KXtyZXR1cm4tcC8yfSkuZW5kQW5nbGUoZnVuY3Rpb24odCl7cmV0dXJuIHAvMn0pLmlubmVyUmFkaXVzKGZ1bmN0aW9uKGUpe3JldHVybiB0LnJhZGlhbFNjYWxlKHUrKGVbMl18fDApKX0pLm91dGVyUmFkaXVzKGZ1bmN0aW9uKGUpe3JldHVybiB0LnJhZGlhbFNjYWxlKHUrKGVbMl18fDApKSt0LnJhZGlhbFNjYWxlKGVbMV0pfSk7aC5hcmM9ZnVuY3Rpb24oZSxyLG4pe2kuc2VsZWN0KHRoaXMpLmF0dHIoeyJjbGFzcyI6Im1hcmsgYXJjIixkOmcsdHJhbnNmb3JtOmZ1bmN0aW9uKGUscil7cmV0dXJuInJvdGF0ZSgiKyh0Lm9yaWVudGF0aW9uK2MoZVswXSkrOTApKyIpIn19KX07dmFyIHY9e2ZpbGw6ZnVuY3Rpb24odCxyLG4pe3JldHVybiBlW25dLmRhdGEuY29sb3J9LHN0cm9rZTpmdW5jdGlvbih0LHIsbil7cmV0dXJuIGVbbl0uZGF0YS5zdHJva2VDb2xvcn0sInN0cm9rZS13aWR0aCI6ZnVuY3Rpb24odCxyLG4pe3JldHVybiBlW25dLmRhdGEuc3Ryb2tlU2l6ZSsicHgifSwic3Ryb2tlLWRhc2hhcnJheSI6ZnVuY3Rpb24odCxyLG4pe3JldHVybiBzW2Vbbl0uZGF0YS5zdHJva2VEYXNoXX0sb3BhY2l0eTpmdW5jdGlvbih0LHIsbil7cmV0dXJuIGVbbl0uZGF0YS5vcGFjaXR5fSxkaXNwbGF5OmZ1bmN0aW9uKHQscixuKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGVbbl0uZGF0YS52aXNpYmxlfHxlW25dLmRhdGEudmlzaWJsZT8iYmxvY2siOiJub25lIn19LG09aS5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLmxheWVyIikuZGF0YShsKTttLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cih7ImNsYXNzIjoibGF5ZXIifSk7dmFyIHk9bS5zZWxlY3RBbGwoInBhdGgubWFyayIpLmRhdGEoZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0pO3kuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKHsiY2xhc3MiOiJtYXJrIn0pLHkuc3R5bGUodikuZWFjaChoW3QuZ2VvbWV0cnlUeXBlXSkseS5leGl0KCkucmVtb3ZlKCksbS5leGl0KCkucmVtb3ZlKCl9KX12YXIgZSxyPVtvLlBvbHlDaGFydC5kZWZhdWx0Q29uZmlnKCldLG49aS5kaXNwYXRjaCgiaG92ZXIiKSxzPXtzb2xpZDoibm9uZSIsZGFzaDpbNSwyXSxkb3Q6WzIsNV19O3JldHVybiB0LmNvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cltlXXx8KHJbZV09e30pLGEocltlXSxvLlBvbHlDaGFydC5kZWZhdWx0Q29uZmlnKCkpLGEocltlXSx0KX0pLHRoaXMpOnJ9LHQuZ2V0Q29sb3JTY2FsZT1mdW5jdGlvbigpe3JldHVybiBlfSxpLnJlYmluZCh0LG4sIm9uIiksdH0sby5Qb2x5Q2hhcnQuZGVmYXVsdENvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXtkYXRhOntuYW1lOiJnZW9tMSIsdDpbWzEsMiwzLDRdXSxyOltbMSwyLDMsNF1dLGRvdFR5cGU6ImNpcmNsZSIsZG90U2l6ZTo2NCxkb3RWaXNpYmxlOiExLGJhcldpZHRoOjIwLGNvbG9yOiIjZmZhNTAwIixzdHJva2VTaXplOjEsc3Ryb2tlQ29sb3I6InNpbHZlciIsc3Ryb2tlRGFzaDoic29saWQiLG9wYWNpdHk6MSxpbmRleDowLHZpc2libGU6ITAsdmlzaWJsZUluTGVnZW5kOiEwfSxnZW9tZXRyeUNvbmZpZzp7Z2VvbWV0cnk6IkxpbmVQbG90IixnZW9tZXRyeVR5cGU6ImFyYyIsZGlyZWN0aW9uOiJjbG9ja3dpc2UiLG9yaWVudGF0aW9uOjAsY29udGFpbmVyOiJib2R5IixyYWRpYWxTY2FsZTpudWxsLGFuZ3VsYXJTY2FsZTpudWxsLGNvbG9yU2NhbGU6aS5zY2FsZS5jYXRlZ29yeTIwKCl9fTtyZXR1cm4gdH0sby5CYXJDaGFydD1mdW5jdGlvbigpe3JldHVybiBvLlBvbHlDaGFydCgpfSxvLkJhckNoYXJ0LmRlZmF1bHRDb25maWc9ZnVuY3Rpb24oKXt2YXIgdD17Z2VvbWV0cnlDb25maWc6e2dlb21ldHJ5VHlwZToiYmFyIn19O3JldHVybiB0fSxvLkFyZWFDaGFydD1mdW5jdGlvbigpe3JldHVybiBvLlBvbHlDaGFydCgpfSxvLkFyZWFDaGFydC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKCl7dmFyIHQ9e2dlb21ldHJ5Q29uZmlnOntnZW9tZXRyeVR5cGU6ImFyYyJ9fTtyZXR1cm4gdH0sby5Eb3RQbG90PWZ1bmN0aW9uKCl7cmV0dXJuIG8uUG9seUNoYXJ0KCl9LG8uRG90UGxvdC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKCl7dmFyIHQ9e2dlb21ldHJ5Q29uZmlnOntnZW9tZXRyeVR5cGU6ImRvdCIsZG90VHlwZToiY2lyY2xlIn19O3JldHVybiB0fSxvLkxpbmVQbG90PWZ1bmN0aW9uKCl7cmV0dXJuIG8uUG9seUNoYXJ0KCl9LG8uTGluZVBsb3QuZGVmYXVsdENvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXtnZW9tZXRyeUNvbmZpZzp7Z2VvbWV0cnlUeXBlOiJsaW5lIn19O3JldHVybiB0fSxvLkxlZ2VuZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmxlZ2VuZENvbmZpZyxuPWUuZGF0YS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5bXS5jb25jYXQodCkubWFwKGZ1bmN0aW9uKHQsbil7dmFyIGk9YSh7fSxyLmVsZW1lbnRzW2VdKTtyZXR1cm4gaS5uYW1lPXQsaS5jb2xvcj1bXS5jb25jYXQoci5lbGVtZW50c1tlXS5jb2xvcilbbl0saX0pfSksbz1pLm1lcmdlKG4pO289by5maWx0ZXIoZnVuY3Rpb24odCxlKXtyZXR1cm4gci5lbGVtZW50c1tlXSYmKHIuZWxlbWVudHNbZV0udmlzaWJsZUluTGVnZW5kfHwidW5kZWZpbmVkIj09dHlwZW9mIHIuZWxlbWVudHNbZV0udmlzaWJsZUluTGVnZW5kKX0pLHIucmV2ZXJzZU9yZGVyJiYobz1vLnJldmVyc2UoKSk7dmFyIHM9ci5jb250YWluZXI7KCJzdHJpbmciPT10eXBlb2Ygc3x8cy5ub2RlTmFtZSkmJihzPWkuc2VsZWN0KHMpKTt2YXIgbD1vLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0LmNvbG9yfSksYz1yLmZvbnRTaXplLHU9bnVsbD09ci5pc0NvbnRpbnVvdXM/Im51bWJlciI9PXR5cGVvZiBvWzBdOnIuaXNDb250aW51b3VzLGg9dT9yLmhlaWdodDpjKm8ubGVuZ3RoLGY9cy5jbGFzc2VkKCJsZWdlbmQtZ3JvdXAiLCEwKSxkPWYuc2VsZWN0QWxsKCJzdmciKS5kYXRhKFswXSkscD1kLmVudGVyKCkuYXBwZW5kKCJzdmciKS5hdHRyKHt3aWR0aDozMDAsaGVpZ2h0OmgrYyx4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHZlcnNpb246IjEuMSJ9KTtwLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxlZ2VuZC1heGlzIiwhMCkscC5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmQtbWFya3MiLCEwKTt2YXIgZz1pLnJhbmdlKG8ubGVuZ3RoKSx2PWkuc2NhbGVbdT8ibGluZWFyIjoib3JkaW5hbCJdKCkuZG9tYWluKGcpLnJhbmdlKGwpLG09aS5zY2FsZVt1PyJsaW5lYXIiOiJvcmRpbmFsIl0oKS5kb21haW4oZylbdT8icmFuZ2UiOiJyYW5nZVBvaW50cyJdKFswLGhdKSx5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9MyplO3JldHVybiJsaW5lIj09PXQ/Ik0iK1tbLWUvMiwtZS8xMl0sW2UvMiwtZS8xMl0sW2UvMixlLzEyXSxbLWUvMixlLzEyXV0rIloiOi0xIT1pLnN2Zy5zeW1ib2xUeXBlcy5pbmRleE9mKHQpP2kuc3ZnLnN5bWJvbCgpLnR5cGUodCkuc2l6ZShyKSgpOmkuc3ZnLnN5bWJvbCgpLnR5cGUoInNxdWFyZSIpLnNpemUocikoKX07aWYodSl7dmFyIGI9ZC5zZWxlY3QoIi5sZWdlbmQtbWFya3MiKS5hcHBlbmQoImRlZnMiKS5hcHBlbmQoImxpbmVhckdyYWRpZW50IikuYXR0cih7aWQ6ImdyYWQxIix4MToiMCUiLHkxOiIwJSIseDI6IjAlIix5MjoiMTAwJSJ9KS5zZWxlY3RBbGwoInN0b3AiKS5kYXRhKGwpO2IuZW50ZXIoKS5hcHBlbmQoInN0b3AiKSxiLmF0dHIoe29mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiBlLyhsLmxlbmd0aC0xKSoxMDArIiUifX0pLnN0eWxlKHsic3RvcC1jb2xvciI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH19KSxkLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoImxlZ2VuZC1tYXJrIiwhMCkuYXR0cih7aGVpZ2h0OnIuaGVpZ2h0LHdpZHRoOnIuY29sb3JCYW5kV2lkdGgsZmlsbDoidXJsKCNncmFkMSkifSl9ZWxzZXt2YXIgeD1kLnNlbGVjdCgiLmxlZ2VuZC1tYXJrcyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmQtbWFyayIpLmRhdGEobyk7eC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImxlZ2VuZC1tYXJrIiwhMCkseC5hdHRyKHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4idHJhbnNsYXRlKCIrW2MvMixtKGUpK2MvMl0rIikifSxkOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5zeW1ib2w7cmV0dXJuIHkocixjKX0sZmlsbDpmdW5jdGlvbih0LGUpe3JldHVybiB2KGUpfX0pLHguZXhpdCgpLnJlbW92ZSgpfXZhciBfPWkuc3ZnLmF4aXMoKS5zY2FsZShtKS5vcmllbnQoInJpZ2h0Iiksdz1kLnNlbGVjdCgiZy5sZWdlbmQtYXhpcyIpLmF0dHIoe3RyYW5zZm9ybToidHJhbnNsYXRlKCIrW3U/ci5jb2xvckJhbmRXaWR0aDpjLGMvMl0rIikifSkuY2FsbChfKTtyZXR1cm4gdy5zZWxlY3RBbGwoIi5kb21haW4iKS5zdHlsZSh7ZmlsbDoibm9uZSIsc3Ryb2tlOiJub25lIn0pLHcuc2VsZWN0QWxsKCJsaW5lIikuc3R5bGUoe2ZpbGw6Im5vbmUiLHN0cm9rZTp1P3IudGV4dENvbG9yOiJub25lIn0pLHcuc2VsZWN0QWxsKCJ0ZXh0Iikuc3R5bGUoe2ZpbGw6ci50ZXh0Q29sb3IsImZvbnQtc2l6ZSI6ci5mb250U2l6ZX0pLnRleHQoZnVuY3Rpb24odCxlKXtyZXR1cm4gb1tlXS5uYW1lfSksdH12YXIgZT1vLkxlZ2VuZC5kZWZhdWx0Q29uZmlnKCkscj1pLmRpc3BhdGNoKCJob3ZlciIpO3JldHVybiB0LmNvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYShlLHQpLHRoaXMpOmV9LGkucmViaW5kKHQsciwib24iKSx0fSxvLkxlZ2VuZC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e2RhdGE6WyJhIiwiYiIsImMiXSxsZWdlbmRDb25maWc6e2VsZW1lbnRzOlt7c3ltYm9sOiJsaW5lIixjb2xvcjoicmVkIn0se3N5bWJvbDoic3F1YXJlIixjb2xvcjoieWVsbG93In0se3N5bWJvbDoiZGlhbW9uZCIsY29sb3I6ImxpbWVncmVlbiJ9XSxoZWlnaHQ6MTUwLGNvbG9yQmFuZFdpZHRoOjMwLGZvbnRTaXplOjEyLGNvbnRhaW5lcjoiYm9keSIsaXNDb250aW51b3VzOm51bGwsdGV4dENvbG9yOiJncmV5IixyZXZlcnNlT3JkZXI6ITF9fTtyZXR1cm4gcn0sby50b29sdGlwUGFuZWw9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbj17Y29udGFpbmVyOm51bGwsaGFzVGljazohMSxmb250U2l6ZToxMixjb2xvcjoid2hpdGUiLHBhZGRpbmc6NX0scz0idG9vbHRpcC0iK28udG9vbHRpcFBhbmVsLnVpZCsrLGw9MTAsYz1mdW5jdGlvbigpe3Q9bi5jb250YWluZXIuc2VsZWN0QWxsKCJnLiIrcykuZGF0YShbMF0pO3ZhciBpPXQuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHMsITApLnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJub25lIixkaXNwbGF5OiJub25lIn0pO3JldHVybiByPWkuYXBwZW5kKCJwYXRoIikuc3R5bGUoe2ZpbGw6IndoaXRlIiwiZmlsbC1vcGFjaXR5IjouOX0pLmF0dHIoe2Q6Ik0wIDAifSksZT1pLmFwcGVuZCgidGV4dCIpLmF0dHIoe2R4Om4ucGFkZGluZytsLGR5Oi4zKituLmZvbnRTaXplfSksY307cmV0dXJuIGMudGV4dD1mdW5jdGlvbihvKXt2YXIgYT1pLmhzbChuLmNvbG9yKS5sLHM9YT49LjU/IiNhYWEiOiJ3aGl0ZSIsdT1hPj0uNT8iYmxhY2siOiJ3aGl0ZSIsaD1vfHwiIjtlLnN0eWxlKHtmaWxsOnUsImZvbnQtc2l6ZSI6bi5mb250U2l6ZSsicHgifSkudGV4dChoKTt2YXIgZj1uLnBhZGRpbmcsZD1lLm5vZGUoKS5nZXRCQm94KCkscD17ZmlsbDpuLmNvbG9yLHN0cm9rZTpzLCJzdHJva2Utd2lkdGgiOiIycHgifSxnPWQud2lkdGgrMipmK2wsdj1kLmhlaWdodCsyKmY7cmV0dXJuIHIuYXR0cih7ZDoiTSIrW1tsLC12LzJdLFtsLC12LzRdLFtuLmhhc1RpY2s/MDpsLDBdLFtsLHYvNF0sW2wsdi8yXSxbZyx2LzJdLFtnLC12LzJdXS5qb2luKCJMIikrIloifSkuc3R5bGUocCksdC5hdHRyKHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1tsLC12LzIrMipmXSsiKSJ9KSx0LnN0eWxlKHtkaXNwbGF5OiJibG9jayJ9KSxjfSxjLm1vdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQ/KHQuYXR0cih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitbZVswXSxlWzFdXSsiKSJ9KS5zdHlsZSh7ZGlzcGxheToiYmxvY2sifSksYyk6dm9pZCAwfSxjLmhpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdD8odC5zdHlsZSh7ZGlzcGxheToibm9uZSJ9KSxjKTp2b2lkIDB9LGMuc2hvdz1mdW5jdGlvbigpe3JldHVybiB0Pyh0LnN0eWxlKHtkaXNwbGF5OiJibG9jayJ9KSxjKTp2b2lkIDB9LGMuY29uZmlnPWZ1bmN0aW9uKHQpe3JldHVybiBhKG4sdCksY30sY30sby50b29sdGlwUGFuZWwudWlkPTEsby5hZGFwdGVyPXt9LG8uYWRhcHRlci5wbG90bHk9ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gdC5jb252ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9e307aWYodC5kYXRhJiYoci5kYXRhPXQuZGF0YS5tYXAoZnVuY3Rpb24odCxyKXt2YXIgbj1hKHt9LHQpLGk9W1tuLFsibWFya2VyIiwiY29sb3IiXSxbImNvbG9yIl1dLFtuLFsibWFya2VyIiwib3BhY2l0eSJdLFsib3BhY2l0eSJdXSxbbixbIm1hcmtlciIsImxpbmUiLCJjb2xvciJdLFsic3Ryb2tlQ29sb3IiXV0sW24sWyJtYXJrZXIiLCJsaW5lIiwiZGFzaCJdLFsic3Ryb2tlRGFzaCJdXSxbbixbIm1hcmtlciIsImxpbmUiLCJ3aWR0aCJdLFsic3Ryb2tlU2l6ZSJdXSxbbixbIm1hcmtlciIsInN5bWJvbCJdLFsiZG90VHlwZSJdXSxbbixbIm1hcmtlciIsInNpemUiXSxbImRvdFNpemUiXV0sW24sWyJtYXJrZXIiLCJiYXJXaWR0aCJdLFsiYmFyV2lkdGgiXV0sW24sWyJsaW5lIiwiaW50ZXJwb2xhdGlvbiJdLFsibGluZUludGVycG9sYXRpb24iXV0sW24sWyJzaG93bGVnZW5kIl0sWyJ2aXNpYmxlSW5MZWdlbmQiXV1dO3JldHVybiBpLmZvckVhY2goZnVuY3Rpb24odCxyKXtvLnV0aWwudHJhbnNsYXRvci5hcHBseShudWxsLHQuY29uY2F0KGUpKX0pLGV8fGRlbGV0ZSBuLm1hcmtlcixlJiZkZWxldGUgbi5ncm91cElkLGU/KCJMaW5lUGxvdCI9PT1uLmdlb21ldHJ5PyhuLnR5cGU9InNjYXR0ZXIiLG4uZG90VmlzaWJsZT09PSEwPyhkZWxldGUgbi5kb3RWaXNpYmxlLG4ubW9kZT0ibGluZXMrbWFya2VycyIpOm4ubW9kZT0ibGluZXMiKToiRG90UGxvdCI9PT1uLmdlb21ldHJ5PyhuLnR5cGU9InNjYXR0ZXIiLG4ubW9kZT0ibWFya2VycyIpOiJBcmVhQ2hhcnQiPT09bi5nZW9tZXRyeT9uLnR5cGU9ImFyZWEiOiJCYXJDaGFydCI9PT1uLmdlb21ldHJ5JiYobi50eXBlPSJiYXIiKSwKZGVsZXRlIG4uZ2VvbWV0cnkpOigic2NhdHRlciI9PT1uLnR5cGU/ImxpbmVzIj09PW4ubW9kZT9uLmdlb21ldHJ5PSJMaW5lUGxvdCI6Im1hcmtlcnMiPT09bi5tb2RlP24uZ2VvbWV0cnk9IkRvdFBsb3QiOiJsaW5lcyttYXJrZXJzIj09PW4ubW9kZSYmKG4uZ2VvbWV0cnk9IkxpbmVQbG90IixuLmRvdFZpc2libGU9ITApOiJhcmVhIj09PW4udHlwZT9uLmdlb21ldHJ5PSJBcmVhQ2hhcnQiOiJiYXIiPT09bi50eXBlJiYobi5nZW9tZXRyeT0iQmFyQ2hhcnQiKSxkZWxldGUgbi5tb2RlLGRlbGV0ZSBuLnR5cGUpLG59KSwhZSYmdC5sYXlvdXQmJiJzdGFjayI9PT10LmxheW91dC5iYXJtb2RlKSl7dmFyIG49by51dGlsLmR1cGxpY2F0ZXMoci5kYXRhLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmdlb21ldHJ5fSkpO3IuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5pbmRleE9mKHQuZ2VvbWV0cnkpOy0xIT1pJiYoci5kYXRhW2VdLmdyb3VwSWQ9aSl9KX1pZih0LmxheW91dCl7dmFyIHM9YSh7fSx0LmxheW91dCksbD1bW3MsWyJwbG90X2JnY29sb3IiXSxbImJhY2tncm91bmRDb2xvciJdXSxbcyxbInNob3dsZWdlbmQiXSxbInNob3dMZWdlbmQiXV0sW3MsWyJyYWRpYWxheGlzIl0sWyJyYWRpYWxBeGlzIl1dLFtzLFsiYW5ndWxhcmF4aXMiXSxbImFuZ3VsYXJBeGlzIl1dLFtzLmFuZ3VsYXJheGlzLFsic2hvd2xpbmUiXSxbImdyaWRMaW5lc1Zpc2libGUiXV0sW3MuYW5ndWxhcmF4aXMsWyJzaG93dGlja2xhYmVscyJdLFsibGFiZWxzVmlzaWJsZSJdXSxbcy5hbmd1bGFyYXhpcyxbIm50aWNrcyJdLFsidGlja3NDb3VudCJdXSxbcy5hbmd1bGFyYXhpcyxbInRpY2tvcmllbnRhdGlvbiJdLFsidGlja09yaWVudGF0aW9uIl1dLFtzLmFuZ3VsYXJheGlzLFsidGlja3N1ZmZpeCJdLFsidGlja3NTdWZmaXgiXV0sW3MuYW5ndWxhcmF4aXMsWyJyYW5nZSJdLFsiZG9tYWluIl1dLFtzLmFuZ3VsYXJheGlzLFsiZW5kcGFkZGluZyJdLFsiZW5kUGFkZGluZyJdXSxbcy5yYWRpYWxheGlzLFsic2hvd2xpbmUiXSxbImdyaWRMaW5lc1Zpc2libGUiXV0sW3MucmFkaWFsYXhpcyxbInRpY2tvcmllbnRhdGlvbiJdLFsidGlja09yaWVudGF0aW9uIl1dLFtzLnJhZGlhbGF4aXMsWyJ0aWNrc3VmZml4Il0sWyJ0aWNrc1N1ZmZpeCJdXSxbcy5yYWRpYWxheGlzLFsicmFuZ2UiXSxbImRvbWFpbiJdXSxbcy5hbmd1bGFyQXhpcyxbInNob3dsaW5lIl0sWyJncmlkTGluZXNWaXNpYmxlIl1dLFtzLmFuZ3VsYXJBeGlzLFsic2hvd3RpY2tsYWJlbHMiXSxbImxhYmVsc1Zpc2libGUiXV0sW3MuYW5ndWxhckF4aXMsWyJudGlja3MiXSxbInRpY2tzQ291bnQiXV0sW3MuYW5ndWxhckF4aXMsWyJ0aWNrb3JpZW50YXRpb24iXSxbInRpY2tPcmllbnRhdGlvbiJdXSxbcy5hbmd1bGFyQXhpcyxbInRpY2tzdWZmaXgiXSxbInRpY2tzU3VmZml4Il1dLFtzLmFuZ3VsYXJBeGlzLFsicmFuZ2UiXSxbImRvbWFpbiJdXSxbcy5hbmd1bGFyQXhpcyxbImVuZHBhZGRpbmciXSxbImVuZFBhZGRpbmciXV0sW3MucmFkaWFsQXhpcyxbInNob3dsaW5lIl0sWyJncmlkTGluZXNWaXNpYmxlIl1dLFtzLnJhZGlhbEF4aXMsWyJ0aWNrb3JpZW50YXRpb24iXSxbInRpY2tPcmllbnRhdGlvbiJdXSxbcy5yYWRpYWxBeGlzLFsidGlja3N1ZmZpeCJdLFsidGlja3NTdWZmaXgiXV0sW3MucmFkaWFsQXhpcyxbInJhbmdlIl0sWyJkb21haW4iXV0sW3MuZm9udCxbIm91dGxpbmVjb2xvciJdLFsib3V0bGluZUNvbG9yIl1dLFtzLmxlZ2VuZCxbInRyYWNlb3JkZXIiXSxbInJldmVyc2VPcmRlciJdXSxbcyxbImxhYmVsb2Zmc2V0Il0sWyJsYWJlbE9mZnNldCJdXSxbcyxbImRlZmF1bHRjb2xvcnJhbmdlIl0sWyJkZWZhdWx0Q29sb3JSYW5nZSJdXV07aWYobC5mb3JFYWNoKGZ1bmN0aW9uKHQscil7by51dGlsLnRyYW5zbGF0b3IuYXBwbHkobnVsbCx0LmNvbmNhdChlKSl9KSxlPygidW5kZWZpbmVkIiE9dHlwZW9mIHMudGlja0xlbmd0aCYmKHMuYW5ndWxhcmF4aXMudGlja2xlbj1zLnRpY2tMZW5ndGgsZGVsZXRlIHMudGlja0xlbmd0aCkscy50aWNrQ29sb3ImJihzLmFuZ3VsYXJheGlzLnRpY2tjb2xvcj1zLnRpY2tDb2xvcixkZWxldGUgcy50aWNrQ29sb3IpKToocy5hbmd1bGFyQXhpcyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzLmFuZ3VsYXJBeGlzLnRpY2tsZW4mJihzLnRpY2tMZW5ndGg9cy5hbmd1bGFyQXhpcy50aWNrbGVuKSxzLmFuZ3VsYXJBeGlzJiYidW5kZWZpbmVkIiE9dHlwZW9mIHMuYW5ndWxhckF4aXMudGlja2NvbG9yJiYocy50aWNrQ29sb3I9cy5hbmd1bGFyQXhpcy50aWNrY29sb3IpKSxzLmxlZ2VuZCYmImJvb2xlYW4iIT10eXBlb2Ygcy5sZWdlbmQucmV2ZXJzZU9yZGVyJiYocy5sZWdlbmQucmV2ZXJzZU9yZGVyPSJub3JtYWwiIT1zLmxlZ2VuZC5yZXZlcnNlT3JkZXIpLHMubGVnZW5kJiYiYm9vbGVhbiI9PXR5cGVvZiBzLmxlZ2VuZC50cmFjZW9yZGVyJiYocy5sZWdlbmQudHJhY2VvcmRlcj1zLmxlZ2VuZC50cmFjZW9yZGVyPyJyZXZlcnNlZCI6Im5vcm1hbCIsZGVsZXRlIHMubGVnZW5kLnJldmVyc2VPcmRlcikscy5tYXJnaW4mJiJ1bmRlZmluZWQiIT10eXBlb2Ygcy5tYXJnaW4udCl7dmFyIGM9WyJ0IiwiciIsImIiLCJsIiwicGFkIl0sdT1bInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsInBhZCJdLGg9e307aS5lbnRyaWVzKHMubWFyZ2luKS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7aFt1W2MuaW5kZXhPZih0LmtleSldXT10LnZhbHVlfSkscy5tYXJnaW49aH1lJiYoZGVsZXRlIHMubmVlZHNFbmRTcGFjaW5nLGRlbGV0ZSBzLm1pbm9yVGlja0NvbG9yLGRlbGV0ZSBzLm1pbm9yVGlja3MsZGVsZXRlIHMuYW5ndWxhcmF4aXMudGlja3NDb3VudCxkZWxldGUgcy5hbmd1bGFyYXhpcy50aWNrc0NvdW50LGRlbGV0ZSBzLmFuZ3VsYXJheGlzLnRpY2tzU3RlcCxkZWxldGUgcy5hbmd1bGFyYXhpcy5yZXdyaXRlVGlja3MsZGVsZXRlIHMuYW5ndWxhcmF4aXMubnRpY2tzLGRlbGV0ZSBzLnJhZGlhbGF4aXMudGlja3NDb3VudCxkZWxldGUgcy5yYWRpYWxheGlzLnRpY2tzQ291bnQsZGVsZXRlIHMucmFkaWFsYXhpcy50aWNrc1N0ZXAsZGVsZXRlIHMucmFkaWFsYXhpcy5yZXdyaXRlVGlja3MsZGVsZXRlIHMucmFkaWFsYXhpcy5udGlja3MpLHIubGF5b3V0PXN9cmV0dXJuIHJ9LHR9fSx7Ii4uLy4uL3Bsb3RseSI6MzkwLCIuL21pY3JvcG9sYXJfbWFuYWdlciI6NDQxLGQzOjcwfV0sNDQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RseSIpLGk9dCgiZDMiKSxvPXQoIi4vdW5kb19tYW5hZ2VyIiksYT1lLmV4cG9ydHM9e30scz1uLkxpYi5leHRlbmREZWVwQWxsO2EuZnJhbWV3b3JrPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxvKXtyZXR1cm4gbyYmKGg9byksaS5zZWxlY3QoaS5zZWxlY3QoaCkubm9kZSgpLnBhcmVudE5vZGUpLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXI+Kjpub3QoLmNoYXJ0LXJvb3QpIikucmVtb3ZlKCkscj1yP3MocixlKTplLGN8fChjPW4ubWljcm9wb2xhci5BeGlzKCkpLHU9bi5taWNyb3BvbGFyLmFkYXB0ZXIucGxvdGx5KCkuY29udmVydChyKSxjLmNvbmZpZyh1KS5yZW5kZXIoaCksdC5kYXRhPXIuZGF0YSx0LmxheW91dD1yLmxheW91dCxhLmZpbGxMYXlvdXQodCkscn12YXIgcixsLGMsdSxoLGY9bmV3IG87cmV0dXJuIGUuaXNQb2xhcj0hMCxlLnN2Zz1mdW5jdGlvbigpe3JldHVybiBjLnN2ZygpfSxlLmdldENvbmZpZz1mdW5jdGlvbigpe3JldHVybiByfSxlLmdldExpdmVDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gbi5taWNyb3BvbGFyLmFkYXB0ZXIucGxvdGx5KCkuY29udmVydChjLmdldExpdmVDb25maWcoKSwhMCl9LGUuZ2V0TGl2ZVNjYWxlcz1mdW5jdGlvbigpe3JldHVybnt0OmMuYW5ndWxhclNjYWxlKCkscjpjLnJhZGlhbFNjYWxlKCl9fSxlLnNldFVuZG9Qb2ludD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uLm1pY3JvcG9sYXIudXRpbC5jbG9uZUpzb24ocik7IWZ1bmN0aW9uKGUscil7Zi5hZGQoe3VuZG86ZnVuY3Rpb24oKXtyJiZ0KHIpfSxyZWRvOmZ1bmN0aW9uKCl7dChlKX19KX0oZSxsKSxsPW4ubWljcm9wb2xhci51dGlsLmNsb25lSnNvbihlKX0sZS51bmRvPWZ1bmN0aW9uKCl7Zi51bmRvKCl9LGUucmVkbz1mdW5jdGlvbigpe2YucmVkbygpfSxlfSxhLmZpbGxMYXlvdXQ9ZnVuY3Rpb24odCl7dmFyIGU9aS5zZWxlY3QodCkuc2VsZWN0QWxsKCIucGxvdC1jb250YWluZXIiKSxyPWUuc2VsZWN0QWxsKCIuc3ZnLWNvbnRhaW5lciIpLG89dC5mcmFtZXdvcmsmJnQuZnJhbWV3b3JrLnN2ZyYmdC5mcmFtZXdvcmsuc3ZnKCksYT17d2lkdGg6ODAwLGhlaWdodDo2MDAscGFwZXJfYmdjb2xvcjpuLkNvbG9yLmJhY2tncm91bmQsX2NvbnRhaW5lcjplLF9wYXBlcmRpdjpyLF9wYXBlcjpvfTt0Ll9mdWxsTGF5b3V0PXMoYSx0LmxheW91dCl9fSx7Ii4uLy4uL3Bsb3RseSI6MzkwLCIuL3VuZG9fbWFuYWdlciI6NDQyLGQzOjcwfV0sNDQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtyZXR1cm4gdD8oaT0hMCx0W2VdKCksaT0hMSx0aGlzKTp0aGlzfXZhciBlLHI9W10sbj0tMSxpPSExO3JldHVybnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGk/dGhpczooci5zcGxpY2UobisxLHIubGVuZ3RoLW4pLHIucHVzaCh0KSxuPXIubGVuZ3RoLTEsdGhpcyl9LHNldENhbGxiYWNrOmZ1bmN0aW9uKHQpe2U9dH0sdW5kbzpmdW5jdGlvbigpe3ZhciBpPXJbbl07cmV0dXJuIGk/KHQoaSwidW5kbyIpLG4tPTEsZSYmZShpLnVuZG8pLHRoaXMpOnRoaXN9LHJlZG86ZnVuY3Rpb24oKXt2YXIgaT1yW24rMV07cmV0dXJuIGk/KHQoaSwicmVkbyIpLG4rPTEsZSYmZShpLnJlZG8pLHRoaXMpOnRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7cj1bXSxuPS0xfSxoYXNVbmRvOmZ1bmN0aW9uKCl7cmV0dXJuLTEhPT1ufSxoYXNSZWRvOmZ1bmN0aW9uKCl7cmV0dXJuIG48ci5sZW5ndGgtMX0sZ2V0Q29tbWFuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sZ2V0UHJldmlvdXNDb21tYW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHJbbi0xXX0sZ2V0SW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gbn19fX0se31dLDQ0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBlO3N3aXRjaCh0KXtjYXNlInRoZW1lc19fdGh1bWIiOmU9e2F1dG9zaXplOiEwLHdpZHRoOjE1MCxoZWlnaHQ6MTUwLHRpdGxlOiIiLHNob3dsZWdlbmQ6ITEsbWFyZ2luOntsOjUscjo1LHQ6NSxiOjUscGFkOjB9LGFubm90YXRpb25zOltdfTticmVhaztjYXNlInRodW1ibmFpbCI6ZT17dGl0bGU6IiIsaGlkZXNvdXJjZXM6ITAsc2hvd2xlZ2VuZDohMSxib3JkZXJ3aWR0aDowLGJvcmRlcmNvbG9yOiIiLG1hcmdpbjp7bDoxLHI6MSx0OjEsYjoxLHBhZDowfSxhbm5vdGF0aW9uczpbXX07YnJlYWs7ZGVmYXVsdDplPXt9fXJldHVybiBlfWZ1bmN0aW9uIGkodCl7dmFyIGU9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXTtyZXR1cm4gZS5pbmRleE9mKHQuc2xpY2UoMCw1KSk+LTF9dmFyIG89dCgiLi4vcGxvdGx5IiksYT1vLkxpYi5leHRlbmRGbGF0LHM9by5MaWIuZXh0ZW5kRGVlcDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LmZyYW1ld29yayYmdC5mcmFtZXdvcmsuaXNQb2xhciYmKHQ9dC5mcmFtZXdvcmsuZ2V0Q29uZmlnKCkpO3ZhciByLGw9dC5kYXRhLGM9dC5sYXlvdXQsdT1zKFtdLGwpLGg9cyh7fSxjLG4oZS50aWxlQ2xhc3MpKTtpZihlLndpZHRoJiYoaC53aWR0aD1lLndpZHRoKSxlLmhlaWdodCYmKGguaGVpZ2h0PWUuaGVpZ2h0KSwidGh1bWJuYWlsIj09PWUudGlsZUNsYXNzfHwidGhlbWVzX190aHVtYiI9PT1lLnRpbGVDbGFzcyl7aC5hbm5vdGF0aW9ucz1bXTt2YXIgZj1PYmplY3Qua2V5cyhoKTtmb3Iocj0wO3I8Zi5sZW5ndGg7cisrKWkoZltyXSkmJihoW2Zbcl1dLnRpdGxlPSIiKTtmb3Iocj0wO3I8dS5sZW5ndGg7cisrKXt2YXIgZD11W3JdO2Quc2hvd3NjYWxlPSExLGQubWFya2VyJiYoZC5tYXJrZXIuc2hvd3NjYWxlPSExKSwicGllIj09PWQudHlwZSYmKGQudGV4dHBvc2l0aW9uPSJub25lIil9fWlmKEFycmF5LmlzQXJyYXkoZS5hbm5vdGF0aW9ucykpZm9yKHI9MDtyPGUuYW5ub3RhdGlvbnMubGVuZ3RoO3IrKyloLmFubm90YXRpb25zLnB1c2goZS5hbm5vdGF0aW9uc1tyXSk7dmFyIHA9by5QbG90cy5nZXRTdWJwbG90SWRzKGgsImdsM2QiKTtpZihwLmxlbmd0aCl7dmFyIGc9e307Zm9yKCJ0aHVtYm5haWwiPT09ZS50aWxlQ2xhc3MmJihnPXt0aXRsZToiIixzaG93YXhlc2xhYmVsczohMSxzaG93dGlja2xhYmVsczohMSxsaW5ldGlja2VuYWJsZTohMX0pLHI9MDtyPHAubGVuZ3RoO3IrKyl7dmFyIHY9cFtyXTthKGhbdl0ueGF4aXMsZyksYShoW3ZdLnlheGlzLGcpLGEoaFt2XS56YXhpcyxnKSxoW3ZdLl9zY2VuZT1udWxsfX12YXIgbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLnRpbGVDbGFzcyYmKG0uY2xhc3NOYW1lPWUudGlsZUNsYXNzKTt2YXIgeT17dGQ6bSxsYXlvdXQ6aCxkYXRhOnUsY29uZmlnOntzdGF0aWNQbG90OnZvaWQgMD09PWUuc3RhdGljUGxvdD8hMDplLnN0YXRpY1Bsb3QscGxvdEdsUGl4ZWxSYXRpbzp2b2lkIDA9PT1lLnBsb3RHbFBpeGVsUmF0aW8/MjplLnBsb3RHbFBpeGVsUmF0aW8sZGlzcGxheWxvZ286ZS5kaXNwbGF5bG9nb3x8ITEsc2hvd0xpbms6ZS5zaG93TGlua3x8ITEsc2hvd1RpcHM6ZS5zaG93VGlwc3x8ITF9fTtyZXR1cm4idHJhbnNwYXJlbnQiIT09ZS5zZXRCYWNrZ3JvdW5kJiYoeS5jb25maWcuc2V0QmFja2dyb3VuZD1lLnNldEJhY2tncm91bmR8fCJvcGFxdWUiKSx5LnRkLmRlZmF1bHRMYXlvdXQ9bihlLnRpbGVDbGFzcykseX19LHsiLi4vcGxvdGx5IjozOTB9XSw0NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5faGFzR0wzRHx8dC5faGFzR0wyRD81MDA6MH1mdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7ZS5faGFzR0wzRHx8ZS5faGFzR0wyRHx8dC5kYXRhJiZ0LmRhdGFbMF0mJnQuZGF0YVswXS5yfHwodC5jYWxjZGF0YXx8W10pLmZvckVhY2goZnVuY3Rpb24odCl7dFswXSYmdFswXS50JiZ0WzBdLnQuY2ImJnRbMF0udC5jYigpfSl9fXZhciBvPXtnZXREZWxheTpuLGdldFJlZHJhd0Z1bmM6aSxjbG9uZTp0KCIuL2Nsb25lcGxvdCIpLHRvU1ZHOnQoIi4vdG9zdmciKSxzdmdUb0ltZzp0KCIuL3N2Z3RvaW1nIiksdG9JbWFnZTp0KCIuL3RvaW1hZ2UiKX07ZS5leHBvcnRzPW99LHsiLi9jbG9uZXBsb3QiOjQ0MywiLi9zdmd0b2ltZyI6NDQ1LCIuL3RvaW1hZ2UiOjQ0NiwiLi90b3N2ZyI6NDQ3fV0sNDQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5lbWl0dGVyP3QuZW1pdHRlcjpuZXcgaSxyPXdpbmRvdy5JbWFnZSxuPXdpbmRvdy5CbG9iLG89dC5zdmcsYT10LmZvcm1hdHx8InBuZyIscz10LmNhbnZhcyxsPXMuZ2V0Q29udGV4dCgiMmQiKSxjPW5ldyByLHU9d2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTCxoPW5ldyBuKFtvXSx7dHlwZToiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04In0pLGY9dS5jcmVhdGVPYmplY3RVUkwoaCk7cmV0dXJuIHMuaGVpZ2h0PXQuaGVpZ2h0fHwxNTAscy53aWR0aD10LndpZHRofHwzMDAsYy5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgdDtzd2l0Y2godS5yZXZva2VPYmplY3RVUkwoZiksbC5kcmF3SW1hZ2UoYywwLDApLGEpe2Nhc2UianBlZyI6dD1zLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIpO2JyZWFrO2Nhc2UicG5nIjp0PXMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTticmVhaztjYXNlIndlYnAiOnQ9cy50b0RhdGFVUkwoImltYWdlL3dlYnAiKTticmVhaztjYXNlInN2ZyI6dD1vO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGUuZW1pdCgiZXJyb3IiLCJJbWFnZSBmb3JtYXQgaXMgbm90IGpwZWcsIHBuZyBvciBzdmciKX1lLmVtaXQoInN1Y2Nlc3MiLHQpfSxjLm9uZXJyb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHUucmV2b2tlT2JqZWN0VVJMKGYpLGUuZW1pdCgiZXJyb3IiLHQpfSxjLnNyYz1mLGV9dmFyIGk9dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyO2UuZXhwb3J0cz1ufSx7ZXZlbnRzOjU0fV0sNDQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtmdW5jdGlvbiByKCl7dmFyIHQ9bi5nZXREZWxheShsLl9mdWxsTGF5b3V0KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHQ9by5TbmFwc2hvdC50b1NWRyhsKSxyPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxuPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtyLmFwcGVuZENoaWxkKG4pLHIuaWQ9by5MaWIucmFuZHN0cigpLG4uaWQ9by5MaWIucmFuZHN0cigpLGE9by5TbmFwc2hvdC5zdmdUb0ltZyh7Zm9ybWF0OmUuZm9ybWF0LHdpZHRoOmwuX2Z1bGxMYXlvdXQud2lkdGgsaGVpZ2h0OmwuX2Z1bGxMYXlvdXQuaGVpZ2h0LGNhbnZhczpuLGVtaXR0ZXI6YSxzdmc6dH0pLGEuY2xlYW49ZnVuY3Rpb24oKXtsJiZsLnJlbW92ZSgpfX0sdCl9dmFyIG49by5TbmFwc2hvdCxhPW5ldyBpLHM9bi5jbG9uZSh0LHtmb3JtYXQ6InBuZyJ9KSxsPXMudGQ7bC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGwuc3R5bGUubGVmdD0iLTUwMDBweCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsKTt2YXIgYz1uLmdldFJlZHJhd0Z1bmMobCk7cmV0dXJuIG8ucGxvdChsLHMuZGF0YSxzLmxheW91dCxzLmNvbmZpZykudGhlbihjKS50aGVuKHIpLmNhdGNoKGZ1bmN0aW9uKHQpe2EuZW1pdCgiZXJyb3IiLHQpfSksYX12YXIgaT10KCJldmVudHMiKS5FdmVudEVtaXR0ZXIsbz10KCIuLi9wbG90bHkiKTtlLmV4cG9ydHM9bn0seyIuLi9wbG90bHkiOjM5MCxldmVudHM6NTR9XSw0NDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZS50b0ltYWdlKCJwbmciKTt0Ll9nbGltYWdlcy5hcHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOmEuc3ZnLCJ4bGluazpocmVmIjpuLHg6ci54LHk6ci55LHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0LHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSksZS5kZXN0cm95KCl9dmFyIGk9dCgiLi4vcGxvdGx5Iiksbz10KCJkMyIpLGE9dCgiLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixzLGw9dC5fZnVsbExheW91dCxjPWwuX3BhcGVyLHU9bC5fc2l6ZTtjLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmNhbGwoaS5EcmF3aW5nLnNldFJlY3QsMCwwLGwud2lkdGgsbC5oZWlnaHQpLmNhbGwoaS5Db2xvci5maWxsLGwucGFwZXJfYmdjb2xvcik7dmFyIGgsZj1pLlBsb3RzLmdldFN1YnBsb3RJZHMobCwiZ2wzZCIpO2ZvcihzPTA7czxmLmxlbmd0aDtzKyspaD1sW2Zbc11dLHI9aC5kb21haW4sbihsLGguX3NjZW5lLHt4OnUubCt1Lncqci54WzBdLHk6dS50K3UuaCooMS1yLnlbMV0pLHdpZHRoOnUudyooci54WzFdLXIueFswXSksaGVpZ2h0OnUuaCooci55WzFdLXIueVswXSl9KTt2YXIgZCxwPWkuUGxvdHMuZ2V0U3VicGxvdElkcyhsLCJnbDJkIik7Zm9yKHM9MDtzPHAubGVuZ3RoO3MrKylkPWwuX3Bsb3RzW3Bbc11dLG4obCxkLl9zY2VuZTJkLHt4OnUubCx5OnUudCx3aWR0aDp1LncsaGVpZ2h0OnUuaH0pO3ZhciBnLHYsbT1pLlBsb3RzLmdldFN1YnBsb3RJZHMobCwiZ2VvIik7Zm9yKHM9MDtzPG0ubGVuZ3RoO3MrKylnPWxbbVtzXV0scj1nLmRvbWFpbix2PWcuX2dlby5mcmFtZXdvcmssdi5hdHRyKCJzdHlsZSIsbnVsbCksdi5hdHRyKHt4OnUubCt1Lncqci54WzBdK2cuX21hcmdpblgseTp1LnQrdS5oKigxLXIueVsxXSkrZy5fbWFyZ2luWSx3aWR0aDpnLl93aWR0aCxoZWlnaHQ6Zy5faGVpZ2h0fSksbC5fZ2VvaW1hZ2VzLm5vZGUoKS5hcHBlbmRDaGlsZCh2Lm5vZGUoKSk7aWYobC5fdG9wcGFwZXIpe3ZhciB5PWwuX3RvcHBhcGVyLm5vZGUoKS5jaGlsZE5vZGVzLGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoeSk7Zm9yKHM9MDtzPGIubGVuZ3RoO3MrKyl7dmFyIHg9YltzXTt4LmNoaWxkTm9kZXMubGVuZ3RoJiZjLm5vZGUoKS5hcHBlbmRDaGlsZCh4KX19Yy5ub2RlKCkuc3R5bGUuYmFja2dyb3VuZD0iIixjLnNlbGVjdEFsbCgidGV4dCIpLmF0dHIoImRhdGEtdW5mb3JtYXR0ZWQiLG51bGwpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1vLnNlbGVjdCh0aGlzKTtpZigiaGlkZGVuIj09PXQuc3R5bGUoInZpc2liaWxpdHkiKSlyZXR1cm4gdm9pZCB0LnJlbW92ZSgpO3ZhciBlPXQuc3R5bGUoImZvbnQtZmFtaWx5Iik7ZSYmLTEhPT1lLmluZGV4T2YoJyInKSYmdC5zdHlsZSgiZm9udC1mYW1pbHkiLGUucmVwbGFjZSgvIi9nLCJcXCciKSl9KSwicGRmIiE9PWUmJiJlcHMiIT09ZXx8Yy5zZWxlY3RBbGwoIiNNYXRoSmF4X1NWR19nbHlwaHMgcGF0aCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMCksYy5ub2RlKCkuc2V0QXR0cmlidXRlTlMoYS54bWxucywieG1sbnMiLGEuc3ZnKSxjLm5vZGUoKS5zZXRBdHRyaWJ1dGVOUyhhLnhtbG5zLCJ4bWxuczp4bGluayIsYS54bGluayk7dmFyIF89KG5ldyB3aW5kb3cuWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoYy5ub2RlKCkpO3JldHVybiBfPWkudXRpbC5odG1sX2VudGl0eV9kZWNvZGUoXyksXz1pLnV0aWwueG1sX2VudGl0eV9lbmNvZGUoXyl9fSx7Ii4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjozNjIsIi4uL3Bsb3RseSI6MzkwLGQzOjcwfV0sNDQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLm1lcmdlQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1lLm1hcmtlcixpPXIubGluZTtuKGUudGV4dCx0LCJ0eCIpLG4oci5vcGFjaXR5LHQsIm1vIiksbihyLmNvbG9yLHQsIm1jIiksbihpLmNvbG9yLHQsIm1sYyIpLG4oaS53aWR0aCx0LCJtbHciKX19LHsiLi4vLi4vbGliIjozNzN9XSw0NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksaT1uLm1hcmtlcixvPWkubGluZTtlLmV4cG9ydHM9e3g6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHksdGV4dDpuLnRleHQsb3JpZW50YXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInYiLCJoIl19LG1hcmtlcjp7Y29sb3I6aS5jb2xvcixjb2xvcnNjYWxlOmkuY29sb3JzY2FsZSxjYXV0bzppLmNhdXRvLGNtYXg6aS5jbWF4LGNtaW46aS5jbWluLGF1dG9jb2xvcnNjYWxlOmkuYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOmkucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTppLnNob3dzY2FsZSxsaW5lOntjb2xvcjpvLmNvbG9yLGNvbG9yc2NhbGU6by5jb2xvcnNjYWxlLGNhdXRvOm8uY2F1dG8sY21heDpvLmNtYXgsY21pbjpvLmNtaW4sd2lkdGg6by53aWR0aCxhdXRvY29sb3JzY2FsZTpvLmF1dG9jb2xvcnNjYWxlLHJldmVyc2VzY2FsZTpvLnJldmVyc2VzY2FsZX19LHI6bi5yLHQ6bi50LF9uZXN0ZWRNb2R1bGVzOntlcnJvcl95OiJFcnJvckJhcnMiLGVycm9yX3g6IkVycm9yQmFycyIsIm1hcmtlci5jb2xvcmJhciI6IkNvbG9yYmFyIn0sX2RlcHJlY2F0ZWQ6e2JhcmRpcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIsImgiXX19fX0seyIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjUyOH1dLDQ1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oYXNfY29sb3JzY2FsZSIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixzLGwsYz1pLmdldEZyb21JZCh0LGUueGF4aXN8fCJ4IiksdT1pLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5IiksaD1lLm9yaWVudGF0aW9ufHwoZS54JiYhZS55PyJoIjoidiIpOyJoIj09PWg/KHM9Yy5tYWtlQ2FsY2RhdGEoZSwieCIpLHI9dS5tYWtlQ2FsY2RhdGEoZSwieSIpKToocz11Lm1ha2VDYWxjZGF0YShlLCJ5Iikscj1jLm1ha2VDYWxjZGF0YShlLCJ4IikpO3ZhciBmPU1hdGgubWluKHIubGVuZ3RoLHMubGVuZ3RoKSxkPVtdO2ZvcihsPTA7Zj5sO2wrKyluKHJbbF0pJiZuKHNbbF0pJiZkLnB1c2goe3A6cltsXSxzOnNbbF0sYjowfSk7cmV0dXJuIG8oZSwibWFya2VyIikmJmEoZSxlLm1hcmtlci5jb2xvciwibWFya2VyIiwiYyIpLG8oZSwibWFya2VyLmxpbmUiKSYmYShlLGUubWFya2VyLmxpbmUuY29sb3IsIm1hcmtlci5saW5lIiwiYyIpLGR9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjozMDgsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oYXNfY29sb3JzY2FsZSI6MzEzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuLi9zY2F0dGVyL3h5X2RlZmF1bHRzIiksYT10KCIuLi9iYXIvc3R5bGVfZGVmYXVsdHMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzL2RlZmF1bHRzIiksbD10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYyl7ZnVuY3Rpb24gdShyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsbCxyLGkpfXZhciBoPW8odCxlLHUpO3JldHVybiBoPyh1KCJvcmllbnRhdGlvbiIsZS54JiYhZS55PyJoIjoidiIpLHUoInRleHQiKSxhKHQsZSx1LHIsYykscyh0LGUsaS5kZWZhdWx0TGluZSx7YXhpczoieSJ9KSx2b2lkIHModCxlLGkuZGVmYXVsdExpbmUse2F4aXM6IngiLGluaGVyaXQ6InkifSkpOnZvaWQoZS52aXNpYmxlPSExKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycy9kZWZhdWx0cyI6MzI0LCIuLi8uLi9saWIiOjM3MywiLi4vYmFyL3N0eWxlX2RlZmF1bHRzIjo0NTksIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiOjU0OCwiLi9hdHRyaWJ1dGVzIjo0NDl9XSw0NTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgcyxsPXQuY2QsYz1sWzBdLnRyYWNlLHU9bFswXS50LGg9dC54YSxmPXQueWEsZD0iY2xvc2VzdCI9PT1hP3UuYmFyd2lkdGgvMjp1LmRiYXIqKDEtaC5fdGQuX2Z1bGxMYXlvdXQuYmFyZ2FwKS8yO3M9ImNsb3Nlc3QiIT09YT9mdW5jdGlvbih0KXtyZXR1cm4gdC5wfToiaCI9PT1jLm9yaWVudGF0aW9uP2Z1bmN0aW9uKHQpe3JldHVybiB0Lnl9OmZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9O3ZhciBwLGc7ImgiPT09Yy5vcmllbnRhdGlvbj8ocD1mdW5jdGlvbih0KXtyZXR1cm4gbi5pbmJveCh0LmItZSx0LngtZSkrKHQueC1lKS8odC54LXQuYil9LGc9ZnVuY3Rpb24odCl7dmFyIGU9cyh0KS1yO3JldHVybiBuLmluYm94KGUtZCxlK2QpfSk6KGc9ZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5ib3godC5iLXIsdC55LXIpKyh0LnktcikvKHQueS10LmIpfSxwPWZ1bmN0aW9uKHQpe3ZhciByPXModCktZTtyZXR1cm4gbi5pbmJveChyLWQscitkKX0pO3ZhciB2PW4uZ2V0RGlzdGFuY2VGdW5jdGlvbihhLHAsZyk7aWYobi5nZXRDbG9zZXN0KGwsdix0KSx0LmluZGV4IT09ITEpe3ZhciBtPWxbdC5pbmRleF0seT1tLm1jY3x8Yy5tYXJrZXIuY29sb3IsYj1tLm1sY2N8fGMubWFya2VyLmxpbmUuY29sb3IseD1tLm1sd3x8Yy5tYXJrZXIubGluZS53aWR0aDtyZXR1cm4gby5vcGFjaXR5KHkpP3QuY29sb3I9eTpvLm9wYWNpdHkoYikmJngmJih0LmNvbG9yPWIpLCJoIj09PWMub3JpZW50YXRpb24/KHQueDA9dC54MT1oLmMycChtLngsITApLHQueExhYmVsVmFsPW0ucyx0LnkwPWYuYzJwKHMobSktZCwhMCksdC55MT1mLmMycChzKG0pK2QsITApLHQueUxhYmVsVmFsPW0ucCk6KHQueTA9dC55MT1mLmMycChtLnksITApLHQueUxhYmVsVmFsPW0ucyx0LngwPWguYzJwKHMobSktZCwhMCksdC54MT1oLmMycChzKG0pK2QsITApLHQueExhYmVsVmFsPW0ucCksbS50eCYmKHQudGV4dD1tLnR4KSxpLmhvdmVySW5mbyhtLGMsdCksW3RdfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycyI6MzI1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiOjM5OH1dLDQ1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17fTtuLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksbi5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxuLnN1cHBseURlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLnN1cHBseUxheW91dERlZmF1bHRzPXQoIi4vbGF5b3V0X2RlZmF1bHRzIiksbi5jYWxjPXQoIi4vY2FsYyIpLG4uc2V0UG9zaXRpb25zPXQoIi4vc2V0X3Bvc2l0aW9ucyIpLG4uY29sb3JiYXI9dCgiLi4vc2NhdHRlci9jb2xvcmJhciIpLG4uYXJyYXlzVG9DYWxjZGF0YT10KCIuL2FycmF5c190b19jYWxjZGF0YSIpLG4ucGxvdD10KCIuL3Bsb3QiKSxuLnN0eWxlPXQoIi4vc3R5bGUiKSxuLmhvdmVyUG9pbnRzPXQoIi4vaG92ZXIiKSxuLm1vZHVsZVR5cGU9InRyYWNlIixuLm5hbWU9ImJhciIsbi5iYXNlUGxvdE1vZHVsZT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxuLmNhdGVnb3JpZXM9WyJjYXJ0ZXNpYW4iLCJiYXIiLCJvcmllbnRlZCIsIm1hcmtlckNvbG9yc2NhbGUiLCJlcnJvckJhcnNPSyIsInNob3dMZWdlbmQiXSxuLm1ldGE9e30sZS5leHBvcnRzPW59LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjozOTksIi4uL3NjYXR0ZXIvY29sb3JiYXIiOjUzMSwiLi9hcnJheXNfdG9fY2FsY2RhdGEiOjQ0OCwiLi9hdHRyaWJ1dGVzIjo0NDksIi4vY2FsYyI6NDUwLCIuL2RlZmF1bHRzIjo0NTEsIi4vaG92ZXIiOjQ1MiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NDU0LCIuL2xheW91dF9kZWZhdWx0cyI6NDU1LCIuL3Bsb3QiOjQ1NiwiLi9zZXRfcG9zaXRpb25zIjo0NTcsIi4vc3R5bGUiOjQ1OH1dLDQ1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2Jhcm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInN0YWNrIiwiZ3JvdXAiLCJvdmVybGF5Il0sZGZsdDoiZ3JvdXAifSxiYXJub3JtOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyIiLCJmcmFjdGlvbiIsInBlcmNlbnQiXSxkZmx0OiIifSxiYXJnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjF9LGJhcmdyb3VwZ2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MH19fSx7fV0sNDU1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBzKHIsbil7cmV0dXJuIG8uY29lcmNlKHQsZSxhLHIsbil9Zm9yKHZhciBsPSExLGM9ITEsdT0hMSxoPXt9LGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIGQ9cltmXTtpZihuLnRyYWNlSXMoZCwiYmFyIikpe2lmKGw9ITAsIm92ZXJsYXkiIT09dC5iYXJtb2RlJiYic3RhY2siIT09dC5iYXJtb2RlKXt2YXIgcD1kLnhheGlzK2QueWF4aXM7aFtwXSYmKHU9ITApLGhbcF09ITB9aWYoZC52aXNpYmxlJiYiaGlzdG9ncmFtIj09PWQudHlwZSl7dmFyIGc9aS5nZXRGcm9tSWQoe19mdWxsTGF5b3V0OmV9LGRbInYiPT09ZC5vcmllbnRhdGlvbj8ieGF4aXMiOiJ5YXhpcyJdKTsiY2F0ZWdvcnkiIT09Zy50eXBlJiYoYz0hMCl9fX1pZihsKXt2YXIgdj1zKCJiYXJtb2RlIik7Im92ZXJsYXkiIT09diYmcygiYmFybm9ybSIpLHMoImJhcmdhcCIsYyYmIXU/MDouMikscygiYmFyZ3JvdXBnYXAiKX19fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuLi8uLi9wbG90cy9wbG90cyI6NDM3LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo0NTR9XSw0NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoImZhc3QtaXNudW1lcmljIiksbz10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzIiksbD10KCIuL2FycmF5c190b19jYWxjZGF0YSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGM9ZS54KCksdT1lLnkoKSxoPXQuX2Z1bGxMYXlvdXQsZj1lLnBsb3Quc2VsZWN0KCIuYmFybGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2UuYmFycyIpLmRhdGEocikuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRyYWNlIGJhcnMiKTtmLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwicG9pbnRzIikuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1lWzBdLnQscz1lWzBdLnRyYWNlO2woZSksbi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJwYXRoIikuZGF0YShvLmlkZW50aXR5KS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gMD09PWguYmFyZ2FwJiYwPT09aC5iYXJncm91cGdhcD9uLnJvdW5kKE1hdGgucm91bmQodCktbSwyKTp0fWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gTWF0aC5hYnModC1lKT49Mj9vKHQpOnQ+ZT9NYXRoLmNlaWwodCk6TWF0aC5mbG9vcih0KX12YXIgZixkLHAsZztpZigiaCI9PT1zLm9yaWVudGF0aW9uPyhwPXUuYzJwKHIucG9mZnNldCtlLnAsITApLGc9dS5jMnAoci5wb2Zmc2V0K2UucCtyLmJhcndpZHRoLCEwKSxmPWMuYzJwKGUuYiwhMCksZD1jLmMycChlLnMrZS5iLCEwKSk6KGY9Yy5jMnAoci5wb2Zmc2V0K2UucCwhMCksZD1jLmMycChyLnBvZmZzZXQrZS5wK3IuYmFyd2lkdGgsITApLGc9dS5jMnAoZS5zK2UuYiwhMCkscD11LmMycChlLmIsITApKSwhKGkoZikmJmkoZCkmJmkocCkmJmkoZykmJmYhPT1kJiZwIT09ZykpcmV0dXJuIHZvaWQgbi5zZWxlY3QodGhpcykucmVtb3ZlKCk7dmFyIHY9KGUubWx3KzF8fHMubWFya2VyLmxpbmUud2lkdGgrMXx8KGUudHJhY2U/ZS50cmFjZS5tYXJrZXIubGluZS53aWR0aDowKSsxKS0xLG09bi5yb3VuZCh2LzIlMSwyKTtpZighdC5fY29udGV4dC5zdGF0aWNQbG90KXt2YXIgeT1hLm9wYWNpdHkoZS5tY3x8cy5tYXJrZXIuY29sb3IpLGI9MT55fHx2Pi4wMT9vOmw7Zj1iKGYsZCksZD1iKGQsZikscD1iKHAsZyksZz1iKGcscCl9bi5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK2YrIiwiK3ArIlYiK2crIkgiK2QrIlYiK3ArIloiKX0pfSksZi5jYWxsKHMucGxvdCxlKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycyI6MzI1LCIuLi8uLi9saWIiOjM3MywiLi9hcnJheXNfdG9fY2FsY2RhdGEiOjQ0OCxkMzo3MCwiZmFzdC1pc251bWVyaWMiOjc0fV0sNDU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLHMsbD10Ll9mdWxsTGF5b3V0LGM9ZS54KCksdT1lLnkoKTtbInYiLCJoIl0uZm9yRWFjaChmdW5jdGlvbihoKXtmdW5jdGlvbiBmKGUpe2Z1bmN0aW9uIHIodCl7dFtwXT10LnArZn12YXIgbj1bXTtlLmZvckVhY2goZnVuY3Rpb24oZSl7dC5jYWxjZGF0YVtlXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucHVzaCh0LnApfSl9KTt2YXIgaT1hLmRpc3RpbmN0VmFscyhuKSxzPWkudmFscyxjPWkubWluRGlmZix1PSExLGg9W107Imdyb3VwIj09PWwuYmFybW9kZSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3V8fCh0LmNhbGNkYXRhW2VdLmZvckVhY2goZnVuY3Rpb24odCl7dXx8aC5mb3JFYWNoKGZ1bmN0aW9uKGUpe01hdGguYWJzKHQucC1lKTxjJiYodT0hMCl9KX0pLHV8fHQuY2FsY2RhdGFbZV0uZm9yRWFjaChmdW5jdGlvbih0KXtoLnB1c2godC5wKX0pKX0pLG8ubWluRHRpY2sodixjLHNbMF0sdSksby5leHBhbmQodixzLHt2cGFkOmMvMn0pLGMqPTEtbC5iYXJnYXAsdSYmKGMvPWQubGVuZ3RoKTtmb3IodmFyIGYsZz0wO2c8ZS5sZW5ndGg7ZysrKXt2YXIgbT10LmNhbGNkYXRhW2VbZ11dWzBdLnQ7bS5iYXJ3aWR0aD1jKigxLWwuYmFyZ3JvdXBnYXApLG0ucG9mZnNldD0oKHU/KDIqZysxLWUubGVuZ3RoKSpjOjApLW0uYmFyd2lkdGgpLzIsbS5kYmFyPWkubWluRGlmZixmPW0ucG9mZnNldCttLmJhcndpZHRoLzIsdC5jYWxjZGF0YVtlW2ddXS5mb3JFYWNoKHIpfX12YXIgZD1bXSxwPXt2OiJ4IixoOiJ5In1baF0sZz17djoieSIsaDoieCJ9W2hdLHY9ZVtwXSgpLG09ZVtnXSgpO2lmKHQuX2Z1bGxEYXRhLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnZpc2libGU9PT0hMCYmaS50cmFjZUlzKHQsImJhciIpJiZ0Lm9yaWVudGF0aW9uPT09aCYmdC54YXhpcz09PWMuX2lkJiZ0LnlheGlzPT09dS5faWQmJmQucHVzaChlKX0pLGQubGVuZ3RoKXsib3ZlcmxheSI9PT1sLmJhcm1vZGU/ZC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2YoW3RdKX0pOmYoZCk7dmFyIHk9InN0YWNrIj09PWwuYmFybW9kZSxiPWwuYmFybm9ybTtpZih5fHxiKXt2YXIgeCxfLHcsQT1tLmwyYyhtLmMybCgwKSksaz1BLE09e30sVD10LmNhbGNkYXRhW2RbMF1dWzBdLnQuYmFyd2lkdGgvMTAwLEU9MCxMPSEwO2ZvcihyPTA7cjxkLmxlbmd0aDtyKyspZm9yKF89dC5jYWxjZGF0YVtkW3JdXSxzPTA7czxfLmxlbmd0aDtzKyspe0U9TWF0aC5yb3VuZChfW3NdLnAvVCk7dmFyIFM9TVtFXXx8MDt5JiYoX1tzXS5iPVMpLHg9X1tzXS5iK19bc10ucyxNW0VdPVMrX1tzXS5zLHkmJihfW3NdW2ddPXgsIWImJm4obS5jMmwoeCkpJiYoQT1NYXRoLm1heChBLHgpLGs9TWF0aC5taW4oayx4KSkpfWlmKGIpe0w9ITE7dmFyIEM9ImZyYWN0aW9uIj09PWI/MToxMDAsUD1DLzFlOTtmb3Ioaz0wLEE9eT9DOjAscj0wO3I8ZC5sZW5ndGg7cisrKWZvcihfPXQuY2FsY2RhdGFbZFtyXV0scz0wO3M8Xy5sZW5ndGg7cysrKXc9Qy9NW01hdGgucm91bmQoX1tzXS5wL1QpXSxfW3NdLmIqPXcsX1tzXS5zKj13LHg9X1tzXS5iK19bc10ucyxfW3NdW2ddPXgsbihtLmMybCh4KSkmJihrLVA+eCYmKEw9ITAsaz14KSx4PkErUCYmKEw9ITAsQT14KSl9by5leHBhbmQobSxbayxBXSx7dG96ZXJvOiEwLHBhZGRlZDpMfSl9ZWxzZXt2YXIgej1mdW5jdGlvbih0KXtyZXR1cm4gdFtnXT10LnMsdC5zfTtmb3Iocj0wO3I8ZC5sZW5ndGg7cisrKW8uZXhwYW5kKG0sdC5jYWxjZGF0YVtkW3JdXS5tYXAoeikse3RvemVybzohMCxwYWRkZWQ6ITB9KX19fSl9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuLi8uLi9wbG90cy9wbG90cyI6NDM3LCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLnRyYWNlLmJhcnMiKSxyPWUuc2l6ZSgpLHM9dC5fZnVsbExheW91dDtlLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFjaXR5fSkuZWFjaChmdW5jdGlvbih0KXsoInN0YWNrIj09PXMuYmFybW9kZSYmcj4xfHwwPT09cy5iYXJnYXAmJjA9PT1zLmJhcmdyb3VwZ2FwJiYhdFswXS50cmFjZS5tYXJrZXIubGluZS53aWR0aCkmJm4uc2VsZWN0KHRoaXMpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKX0pLGUuc2VsZWN0QWxsKCJnLnBvaW50cyIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPWUubWFya2VyLGE9ci5saW5lLHM9KGUuX2lucHV0fHx7fSkubWFya2VyfHx7fSxsPW8udHJ5Q29sb3JzY2FsZShyLHMsIiIpLGM9by50cnlDb2xvcnNjYWxlKHIscywibGluZS4iKTtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLG8scz0odC5tbHcrMXx8YS53aWR0aCsxKS0xLHU9bi5zZWxlY3QodGhpcyk7ZT0ibWMiaW4gdD90Lm1jYz1sKHQubWMpOkFycmF5LmlzQXJyYXkoci5jb2xvcik/aS5kZWZhdWx0TGluZTpyLmNvbG9yLHUuc3R5bGUoInN0cm9rZS13aWR0aCIscysicHgiKS5jYWxsKGkuZmlsbCxlKSxzJiYobz0ibWxjImluIHQ/dC5tbGNjPWModC5tbGMpOkFycmF5LmlzQXJyYXkoYS5jb2xvcik/aS5kZWZhdWx0TGluZTphLmNvbG9yLHUuY2FsbChpLnN0cm9rZSxvKSl9KX0pLGUuY2FsbChhLnN0eWxlKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjMxOSwiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiOjMyNSxkMzo3MH1dLDQ1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGFzX2NvbG9yc2NhbGUiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhLHMpe3IoIm1hcmtlci5jb2xvciIsYSksaSh0LCJtYXJrZXIiKSYmbyh0LGUscyxyLHtwcmVmaXg6Im1hcmtlci4iLGNMZXR0ZXI6ImMifSkscigibWFya2VyLmxpbmUuY29sb3IiLG4uZGVmYXVsdExpbmUpLGkodCwibWFya2VyLmxpbmUiKSYmbyh0LGUscyxyLHtwcmVmaXg6Im1hcmtlci5saW5lLiIsY0xldHRlcjoiYyJ9KSxyKCJtYXJrZXIubGluZS53aWR0aCIpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozMDEsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6MzEwLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGFzX2NvbG9yc2NhbGUiOjMxM31dLDQ2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsYT1uLm1hcmtlcixzPWEubGluZTtlLmV4cG9ydHM9e3k6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx4Ont2YWxUeXBlOiJkYXRhX2FycmF5In0seDA6e3ZhbFR5cGU6ImFueSJ9LHkwOnt2YWxUeXBlOiJhbnkifSx3aGlza2Vyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouNX0sYm94cG9pbnRzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJvdXRsaWVycyIsInN1c3BlY3RlZG91dGxpZXJzIiwhMV0sZGZsdDoib3V0bGllcnMifSxib3htZWFuOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCJzZCIsITFdLGRmbHQ6ITF9LGppdHRlcjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MX0scG9pbnRwb3M6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDoyfSxvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIsImgiXX0sbWFya2VyOntvdXRsaWVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsIDAsIDAsIDApIn0sc3ltYm9sOm8oe30sYS5zeW1ib2wse2FycmF5T2s6ITF9KSxvcGFjaXR5Om8oe30sYS5vcGFjaXR5LHthcnJheU9rOiExLGRmbHQ6MX0pLHNpemU6byh7fSxhLnNpemUse2FycmF5T2s6ITF9KSxjb2xvcjpvKHt9LGEuY29sb3Ise2FycmF5T2s6ITF9KSxsaW5lOntjb2xvcjpvKHt9LHMuY29sb3Ise2FycmF5T2s6ITEsZGZsdDppLmRlZmF1bHRMaW5lfSksd2lkdGg6byh7fSxzLndpZHRoLHthcnJheU9rOiExLGRmbHQ6MH0pLG91dGxpZXJjb2xvcjp7dmFsVHlwZToiY29sb3IifSxvdXRsaWVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfX19LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6Mn19LGZpbGxjb2xvcjpuLmZpbGxjb2xvcn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozMDAsIi4uLy4uL2xpYi9leHRlbmQiOjM2OSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjo1Mjh9XSw0NjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQsZSxyLG8sYSl7dmFyIHM7cmV0dXJuIHIgaW4gZT9wPW8ubWFrZUNhbGNkYXRhKGUscik6KHM9cisiMCJpbiBlP2VbcisiMCJdOiJuYW1lImluIGUmJigiY2F0ZWdvcnkiPT09by50eXBlfHxuKGUubmFtZSkmJi0xIT09WyJsaW5lYXIiLCJsb2ciXS5pbmRleE9mKG8udHlwZSl8fGkuaXNEYXRlVGltZShlLm5hbWUpJiYiZGF0ZSI9PT1vLnR5cGUpP2UubmFtZTp0Lm51bWJveGVzLHM9by5kMmMocykscD1hLm1hcChmdW5jdGlvbigpe3JldHVybiBzfSkpLHB9ZnVuY3Rpb24gYSh0LGUscixvLGEpe3ZhciBzLGwsYyx1LGg9by5sZW5ndGgsZj1lLmxlbmd0aCxkPVtdLHA9W107Zm9yKHM9MDtoPnM7KytzKWw9b1tzXSx0W3NdPXtwb3M6bH0scFtzXT1sLWEsZFtzXT1bXTtmb3IocC5wdXNoKG9baC0xXSthKSxzPTA7Zj5zOysrcyl1PWVbc10sbih1KSYmKGM9aS5maW5kQmluKHJbc10scCksYz49MCYmZj5jJiZkW2NdLnB1c2godSkpO3JldHVybiBkfWZ1bmN0aW9uIHModCxlKXt2YXIgcixuLG8sYTtmb3IoYT0wO2E8ZS5sZW5ndGg7KythKXI9ZVthXS5zb3J0KGkuc29ydGVyQXNjKSxuPXIubGVuZ3RoLG89dFthXSxvLnZhbD1yLG8ubWluPXJbMF0sby5tYXg9cltuLTFdLG8ubWVhbj1pLm1lYW4ocixuKSxvLnNkPWkuc3RkZXYocixuLG8ubWVhbiksby5xMT1pLmludGVycChyLC4yNSksby5tZWQ9aS5pbnRlcnAociwuNSksby5xMz1pLmludGVycChyLC43NSksby5sZj1NYXRoLm1pbihvLnExLHJbTWF0aC5taW4oaS5maW5kQmluKDIuNSpvLnExLTEuNSpvLnEzLHIsITApKzEsbi0xKV0pLG8udWY9TWF0aC5tYXgoby5xMyxyW01hdGgubWF4KGkuZmluZEJpbigyLjUqby5xMy0xLjUqby5xMSxyKSwwKV0pLG8ubG89NCpvLnExLTMqby5xMyxvLnVvPTQqby5xMy0zKm8ucTF9dmFyIGwsYyx1LGgsZixkLHAsZyx2LG09by5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLHk9by5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpLGI9ZS5vcmllbnRhdGlvbix4PVtdOyJoIj09PWI/KGw9bSxjPSJ4IixmPXksZD0ieSIpOihsPXksYz0ieSIsZj1tLGQ9IngiKSx1PWwubWFrZUNhbGNkYXRhKGUsYyksby5leHBhbmQobCx1LHtwYWRkZWQ6ITB9KSxwPXIodCxlLGQsZix1KTt2YXIgXz1pLmRpc3RpbmN0VmFscyhwKTtyZXR1cm4gZz1fLnZhbHMsdj1fLm1pbkRpZmYvMixoPWEoeCx1LHAsZyx2KSxzKHgsaCkseD14LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC52YWwmJnQudmFsLmxlbmd0aH0pLHgubGVuZ3RoPyh4WzBdLnQ9e2JveG51bTp0Lm51bWJveGVzLGRQb3M6dn0sdC5udW1ib3hlcysrLHgpOlt7dDp7ZW1wdHlib3g6ITB9fV19fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0NjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGEocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixpKX12YXIgcyxsPWEoInkiKSxjPWEoIngiKTtpZihsJiZsLmxlbmd0aClzPSJ2IixjfHxhKCJ4MCIpO2Vsc2V7aWYoIWN8fCFjLmxlbmd0aClyZXR1cm4gdm9pZChlLnZpc2libGU9ITEpO3M9ImgiLGEoInkwIil9YSgib3JpZW50YXRpb24iLHMpLGEoImxpbmUuY29sb3IiLCh0Lm1hcmtlcnx8e30pLmNvbG9yfHxyKSxhKCJsaW5lLndpZHRoIiwyKSxhKCJmaWxsY29sb3IiLGkuYWRkT3BhY2l0eShlLmxpbmUuY29sb3IsLjUpKSxhKCJ3aGlza2Vyd2lkdGgiKSxhKCJib3htZWFuIik7dmFyIHU9bi5jb2VyY2UyKHQsZSxvLCJtYXJrZXIub3V0bGllcmNvbG9yIiksaD1hKCJtYXJrZXIubGluZS5vdXRsaWVyY29sb3IiKSxmPXV8fGg/YSgiYm94cG9pbnRzIiwic3VzcGVjdGVkb3V0bGllcnMiKTphKCJib3hwb2ludHMiKTtmJiYoYSgiaml0dGVyIiwiYWxsIj09PWY/LjM6MCksYSgicG9pbnRwb3MiLCJhbGwiPT09Zj8tMS41OjApLGEoIm1hcmtlci5zeW1ib2wiKSxhKCJtYXJrZXIub3BhY2l0eSIpLGEoIm1hcmtlci5zaXplIiksYSgibWFya2VyLmNvbG9yIixlLmxpbmUuY29sb3IpLGEoIm1hcmtlci5saW5lLmNvbG9yIiksYSgibWFya2VyLmxpbmUud2lkdGgiKSwic3VzcGVjdGVkb3V0bGllcnMiPT09ZiYmKGEoIm1hcmtlci5saW5lLm91dGxpZXJjb2xvciIsZS5tYXJrZXIuY29sb3IpLGEoIm1hcmtlci5saW5lLm91dGxpZXJ3aWR0aCIpKSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vbGliIjozNzMsIi4vYXR0cmlidXRlcyI6NDYwfV0sNDYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiKSxvPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXt2YXIgbCxjLHUsaCxmLGQscCxnLHYsbT10LmNkLHk9bVswXS50cmFjZSxiPW1bMF0udCx4PXQueGEsXz10LnlhLHc9W107aWYoaD0iY2xvc2VzdCI9PT1zPzIuNSpiLmJkUG9zOmIuYmRQb3MsImgiPT09eS5vcmllbnRhdGlvbj8obD1mdW5jdGlvbih0KXtyZXR1cm4gaS5pbmJveCh0Lm1pbi1lLHQubWF4LWUpfSxjPWZ1bmN0aW9uKHQpe3ZhciBlPXQucG9zK2IuYlBvcy1yO3JldHVybiBpLmluYm94KGUtaCxlK2gpfSxmPSJ5IixkPV8sZz0ieCIsdj14KToobD1mdW5jdGlvbih0KXt2YXIgcj10LnBvcytiLmJQb3MtZTtyZXR1cm4gaS5pbmJveChyLWgscitoKX0sYz1mdW5jdGlvbih0KXtyZXR1cm4gaS5pbmJveCh0Lm1pbi1yLHQubWF4LXIpfSxmPSJ4IixkPXgsZz0ieSIsdj1fKSx1PWkuZ2V0RGlzdGFuY2VGdW5jdGlvbihzLGwsYyksaS5nZXRDbG9zZXN0KG0sdSx0KSx0LmluZGV4IT09ITEpe3ZhciBBPW1bdC5pbmRleF0saz15LmxpbmUuY29sb3IsTT0oeS5tYXJrZXJ8fHt9KS5jb2xvcjthLm9wYWNpdHkoaykmJnkubGluZS53aWR0aD90LmNvbG9yPWs6YS5vcGFjaXR5KE0pJiZ5LmJveHBvaW50cz90LmNvbG9yPU06dC5jb2xvcj15LmZpbGxjb2xvcix0W2YrIjAiXT1kLmMycChBLnBvcytiLmJQb3MtYi5iZFBvcywhMCksdFtmKyIxIl09ZC5jMnAoQS5wb3MrYi5iUG9zK2IuYmRQb3MsITApLG4udGlja1RleHQoZCxkLmMybChBLnBvcyksImhvdmVyIikudGV4dCx0W2YrIkxhYmVsVmFsIl09QS5wb3M7dmFyIFQsRSxMPXt9LFM9WyJtZWQiLCJtaW4iLCJxMSIsInEzIiwibWF4Il07eS5ib3htZWFuJiZTLnB1c2goIm1lYW4iKSx5LmJveHBvaW50cyYmW10ucHVzaC5hcHBseShTLFsibGYiLCJ1ZiJdKTtmb3IodmFyIEM9MDtDPFMubGVuZ3RoO0MrKylUPVNbQ10sVCBpbiBBJiYhKEFbVF1pbiBMKSYmKExbQVtUXV09ITAscD12LmMycChBW1RdLCEwKSxFPW8uZXh0ZW5kRmxhdCh7fSx0KSxFW2crIjAiXT1FW2crIjEiXT1wLEVbZysiTGFiZWxWYWwiXT1BW1RdLEUuYXR0cj1ULCJtZWFuIj09PVQmJiJzZCJpbiBBJiYic2QiPT09eS5ib3htZWFuJiYoRVtnKyJlcnIiXT1BLnNkKSx0Lm5hbWU9IiIsdy5wdXNoKEUpKTtyZXR1cm4gd319fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCI6Mzk4fV0sNDY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9O24uYXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxuLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxuLmNhbGM9dCgiLi9jYWxjIiksbi5zZXRQb3NpdGlvbnM9dCgiLi9zZXRfcG9zaXRpb25zIiksbi5wbG90PXQoIi4vcGxvdCIpLG4uc3R5bGU9dCgiLi9zdHlsZSIpLG4uaG92ZXJQb2ludHM9dCgiLi9ob3ZlciIpLG4ubW9kdWxlVHlwZT0idHJhY2UiLG4ubmFtZT0iYm94IixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLG4uY2F0ZWdvcmllcz1bImNhcnRlc2lhbiIsInN5bWJvbHMiLCJvcmllbnRlZCIsImJveCIsInNob3dMZWdlbmQiXSxuLm1ldGE9e30sZS5leHBvcnRzPW59LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjozOTksIi4vYXR0cmlidXRlcyI6NDYwLCIuL2NhbGMiOjQ2MSwiLi9kZWZhdWx0cyI6NDYyLCIuL2hvdmVyIjo0NjMsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQ2NSwiLi9sYXlvdXRfZGVmYXVsdHMiOjQ2NiwiLi9wbG90Ijo0NjcsIi4vc2V0X3Bvc2l0aW9ucyI6NDY4LCIuL3N0eWxlIjo0Njl9XSw0NjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtib3htb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJncm91cCIsIm92ZXJsYXkiXSxkZmx0OiJvdmVybGF5In0sYm94Z2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6LjN9LGJveGdyb3VwZ2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6LjN9fX0se31dLDQ2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9wbG90cyIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBhKHIsbil7cmV0dXJuIGkuY29lcmNlKHQsZSxvLHIsbil9Zm9yKHZhciBzLGw9MDtsPHIubGVuZ3RoO2wrKylpZihuLnRyYWNlSXMocltsXSwiYm94Iikpe3M9ITA7YnJlYWt9cyYmKGEoImJveG1vZGUiKSxhKCJib3hnYXAiKSxhKCJib3hncm91cGdhcCIpKX19LHsiLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQ2NX1dLDQ2NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7bD0yZTl9ZnVuY3Rpb24gaSgpe3ZhciB0PWw7cmV0dXJuIGw9KDY5MDY5KmwrMSklNDI5NDk2NzI5NixNYXRoLmFicyhsLXQpPDQyOTQ5NjcyOT9pKCk6bC80Mjk0OTY3Mjk2fXZhciBvPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGw9MmU5LGM9NSx1PS4wMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBsLGgsZj10Ll9mdWxsTGF5b3V0LGQ9ZS54KCkscD1lLnkoKSxnPWUucGxvdC5zZWxlY3QoIi5ib3hsYXllciIpLnNlbGVjdEFsbCgiZy50cmFjZS5ib3hlcyIpLmRhdGEocikuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRyYWNlIGJveGVzIik7Zy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPWVbMF0udCxnPWVbMF0udHJhY2Usdj0iZ3JvdXAiPT09Zi5ib3htb2RlJiZ0Lm51bWJveGVzPjEsbT1yLmRQb3MqKDEtZi5ib3hnYXApKigxLWYuYm94Z3JvdXBnYXApLyh2P3QubnVtYm94ZXM6MSkseT12PzIqci5kUG9zKigtLjUrKHIuYm94bnVtKy41KS90Lm51bWJveGVzKSooMS1mLmJveGdhcCk6MCxiPW0qZy53aGlza2Vyd2lkdGg7cmV0dXJuIGcudmlzaWJsZSE9PSEwfHxyLmVtcHR5Ym94P3ZvaWQgby5zZWxlY3QodGhpcykucmVtb3ZlKCk6KCJoIj09PWcub3JpZW50YXRpb24/KGw9cCxoPWQpOihsPWQsaD1wKSxyLmJQb3M9eSxyLmJkUG9zPW0sbigpLG8uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aC5ib3giKS5kYXRhKGEuaWRlbnRpdHkpLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJib3giKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWwuYzJwKHQucG9zK3ksITApLHI9bC5jMnAodC5wb3MreS1tLCEwKSxuPWwuYzJwKHQucG9zK3krbSwhMCksaT1sLmMycCh0LnBvcyt5LWIsITApLHM9bC5jMnAodC5wb3MreStiLCEwKSxjPWguYzJwKHQucTEsITApLHU9aC5jMnAodC5xMywhMCksZj1hLmNvbnN0cmFpbihoLmMycCh0Lm1lZCwhMCksTWF0aC5taW4oYyx1KSsxLE1hdGgubWF4KGMsdSktMSksZD1oLmMycChnLmJveHBvaW50cz09PSExP3QubWluOnQubGYsITApLHA9aC5jMnAoZy5ib3hwb2ludHM9PT0hMT90Lm1heDp0LnVmLCEwKTsiaCI9PT1nLm9yaWVudGF0aW9uP28uc2VsZWN0KHRoaXMpLmF0dHIoImQiLCJNIitmKyIsIityKyJWIituKyJNIitjKyIsIityKyJWIituKyJIIit1KyJWIityKyJaTSIrYysiLCIrZSsiSCIrZCsiTSIrdSsiLCIrZSsiSCIrcCsoMD09PWcud2hpc2tlcndpZHRoPyIiOiJNIitkKyIsIitpKyJWIitzKyJNIitwKyIsIitpKyJWIitzKSk6by5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK3IrIiwiK2YrIkgiK24rIk0iK3IrIiwiK2MrIkgiK24rIlYiK3UrIkgiK3IrIlpNIitlKyIsIitjKyJWIitkKyJNIitlKyIsIit1KyJWIitwKygwPT09Zy53aGlza2Vyd2lkdGg/IiI6Ik0iK2krIiwiK2QrIkgiK3MrIk0iK2krIiwiK3ArIkgiK3MpKX0pLGcuYm94cG9pbnRzJiZvLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcucG9pbnRzIikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QudD1yLHQudHJhY2U9Z30pLHR9KS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwicG9pbnRzIikuc2VsZWN0QWxsKCJwYXRoIikuZGF0YShmdW5jdGlvbih0KXt2YXIgZSxyLG4sbyxzLGwsaCxmPSJhbGwiPT09Zy5ib3hwb2ludHM/dC52YWw6dC52YWwuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlPHQubGZ8fGU+dC51Zn0pLGQ9KHQucTMtdC5xMSkqdSxwPVtdLHY9MDtpZihnLmppdHRlcil7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrKylyPU1hdGgubWF4KDAsZS1jKSxvPWZbcl0sbj1NYXRoLm1pbihmLmxlbmd0aC0xLGUrYykscz1mW25dLCJhbGwiIT09Zy5ib3hwb2ludHMmJihmW2VdPHQubGY/cz1NYXRoLm1pbihzLHQubGYpOm89TWF0aC5tYXgobyx0LnVmKSksbD1NYXRoLnNxcnQoZCoobi1yKS8ocy1vKSl8fDAsbD1hLmNvbnN0cmFpbihNYXRoLmFicyhsKSwwLDEpLHAucHVzaChsKSx2PU1hdGgubWF4KGwsdik7aD0yKmcuaml0dGVyL3Z9cmV0dXJuIGYubWFwKGZ1bmN0aW9uKGUscil7dmFyIG4sbz1nLnBvaW50cG9zO3JldHVybiBnLmppdHRlciYmKG8rPWgqcFtyXSooaSgpLS41KSksbj0iaCI9PT1nLm9yaWVudGF0aW9uP3t5OnQucG9zK28qbSt5LHg6ZX06e3g6dC5wb3MrbyptK3kseTplfSwic3VzcGVjdGVkb3V0bGllcnMiPT09Zy5ib3hwb2ludHMmJmU8dC51byYmZT50LmxvJiYobi5zbz0hMCksbn0pfSkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jYWxsKHMudHJhbnNsYXRlUG9pbnRzLGQscCksdm9pZChnLmJveG1lYW4mJm8uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aC5tZWFuIikuZGF0YShhLmlkZW50aXR5KS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibWVhbiIpLnN0eWxlKCJmaWxsIiwibm9uZSIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bC5jMnAodC5wb3MreSwhMCkscj1sLmMycCh0LnBvcyt5LW0sITApLG49bC5jMnAodC5wb3MreSttLCEwKSxpPWguYzJwKHQubWVhbiwhMCksYT1oLmMycCh0Lm1lYW4tdC5zZCwhMCkscz1oLmMycCh0Lm1lYW4rdC5zZCwhMCk7ImgiPT09Zy5vcmllbnRhdGlvbj9vLnNlbGVjdCh0aGlzKS5hdHRyKCJkIiwiTSIraSsiLCIrcisiViIrbisoInNkIiE9PWcuYm94bWVhbj8iIjoibTAsMEwiK2ErIiwiK2UrIkwiK2krIiwiK3IrIkwiK3MrIiwiK2UrIloiKSk6by5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK3IrIiwiK2krIkgiK24rKCJzZCIhPT1nLmJveG1lYW4/IiI6Im0wLDBMIitlKyIsIithKyJMIityKyIsIitpKyJMIitlKyIsIitzKyJaIikpfSkpKX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjMxOSwiLi4vLi4vbGliIjozNzMsZDM6NzB9XSw0Njg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixhLHMsbCxjPXQuX2Z1bGxMYXlvdXQsdT1lLngoKSxoPWUueSgpLGY9WyJ2IiwiaCJdO2ZvcihhPTA7YTxmLmxlbmd0aDsrK2Epe3ZhciBkLHAsZyx2PWZbYV0sbT1bXSx5PVtdLGI9MCx4PTA7Zm9yKHI9ImgiPT09dj9oOnUscz0wO3M8dC5jYWxjZGF0YS5sZW5ndGg7KytzKWQ9dC5jYWxjZGF0YVtzXSxwPWRbMF0udCxnPWRbMF0udHJhY2UsZy52aXNpYmxlPT09ITAmJm4udHJhY2VJcyhnLCJib3giKSYmIXAuZW1wdHlib3gmJmcub3JpZW50YXRpb249PT12JiZnLnhheGlzPT09dS5faWQmJmcueWF4aXM9PT1oLl9pZCYmKG0ucHVzaChzKSxnLmJveHBvaW50cyE9PSExJiYoYj1NYXRoLm1heChiLGcuaml0dGVyLWcucG9pbnRwb3MtMSkseD1NYXRoLm1heCh4LGcuaml0dGVyK2cucG9pbnRwb3MtMSkpKTtmb3Iocz0wO3M8bS5sZW5ndGg7cysrKWZvcihkPXQuY2FsY2RhdGFbbVtzXV0sbD0wO2w8ZC5sZW5ndGg7bCsrKXkucHVzaChkW2xdLnBvcyk7aWYoeS5sZW5ndGgpe3ZhciBfPW8uZGlzdGluY3RWYWxzKHkpLHc9Xy5taW5EaWZmLzI7Zm9yKHkubGVuZ3RoPT09Xy52YWxzLmxlbmd0aCYmKHQubnVtYm94ZXM9MSksaS5taW5EdGljayhyLF8ubWluRGlmZixfLnZhbHNbMF0sITApLGE9MDthPG0ubGVuZ3RoOysrYSl0LmNhbGNkYXRhW2FdWzBdLnQuZFBvcz13O3ZhciBBPSgxLWMuYm94Z2FwKSooMS1jLmJveGdyb3VwZ2FwKSp3L3QubnVtYm94ZXM7aS5leHBhbmQocixfLnZhbHMse3ZwYWRtaW51czp3K2IqQSx2cGFkcGx1czp3K3gqQX0pfX19fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuLi8uLi9wbG90cy9wbG90cyI6NDM3fV0sNDY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLnRyYWNlLmJveGVzIik7ZS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPWUubGluZS53aWR0aDtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGguYm94Iikuc3R5bGUoInN0cm9rZS13aWR0aCIscisicHgiKS5jYWxsKGkuc3Ryb2tlLGUubGluZS5jb2xvcikuY2FsbChpLmZpbGwsZS5maWxsY29sb3IpLApuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgubWVhbiIpLnN0eWxlKHsic3Ryb2tlLXdpZHRoIjpyLCJzdHJva2UtZGFzaGFycmF5IjoyKnIrInB4LCIrcisicHgifSkuY2FsbChpLnN0cm9rZSxlLmxpbmUuY29sb3IpLG4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5wb2ludHMgcGF0aCIpLmNhbGwoby5wb2ludFN0eWxlLGUpfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozMTksZDM6NzB9XSw0NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlcmdlby9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQscz1uLm1hcmtlci5saW5lO2UuZXhwb3J0cz17bG9jYXRpb25zOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sbG9jYXRpb25tb2RlOm4ubG9jYXRpb25tb2RlLHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx0ZXh0Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sbWFya2VyOntsaW5lOntjb2xvcjpzLmNvbG9yLHdpZHRoOnMud2lkdGh9fSx6YXV0bzppLnphdXRvLHptaW46aS56bWluLHptYXg6aS56bWF4LGNvbG9yc2NhbGU6aS5jb2xvcnNjYWxlLGF1dG9jb2xvcnNjYWxlOmkuYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOmkucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTppLnNob3dzY2FsZSxob3ZlcmluZm86YSh7fSxvLmhvdmVyaW5mbyx7ZmxhZ3M6WyJsb2NhdGlvbiIsInoiLCJ0ZXh0IiwibmFtZSJdfSksX25lc3RlZE1vZHVsZXM6e2NvbG9yYmFyOiJDb2xvcmJhciJ9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzA3LCIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjM5MSwiLi4vc2NhdHRlcmdlby9hdHRyaWJ1dGVzIjo1NTV9XSw0NzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtuKGUsZS56LCIiLCJ6Iil9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjozMDh9XSw0NzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXtmdW5jdGlvbiBzKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsaSl9dmFyIGwsYz1zKCJsb2NhdGlvbnMiKTtpZihjJiYobD1jLmxlbmd0aCksIWN8fCFsKXJldHVybiB2b2lkKGUudmlzaWJsZT0hMSk7dmFyIHU9cygieiIpO3JldHVybiBBcnJheS5pc0FycmF5KHUpPyh1Lmxlbmd0aD5sJiYoZS56PXUuc2xpY2UoMCxsKSkscygibG9jYXRpb25tb2RlIikscygidGV4dCIpLHMoIm1hcmtlci5saW5lLmNvbG9yIikscygibWFya2VyLmxpbmUud2lkdGgiKSxpKHQsZSxhLHMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pLHZvaWQgcygiaG92ZXJpbmZvIiwxPT09YS5fZGF0YUxlbmd0aD8ibG9jYXRpb24reit0ZXh0Ijp2b2lkIDApKTp2b2lkKGUudmlzaWJsZT0hMSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6MzEwLCIuLi8uLi9saWIiOjM3MywiLi9hdHRyaWJ1dGVzIjo0NzB9XSw0NzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uY29sb3JiYXI9dCgiLi4vaGVhdG1hcC9jb2xvcmJhciIpLG4uY2FsYz10KCIuL2NhbGMiKSxuLnBsb3Q9dCgiLi9wbG90IikucGxvdCxuLm1vZHVsZVR5cGU9InRyYWNlIixuLm5hbWU9ImNob3JvcGxldGgiLG4uYmFzZVBsb3RNb2R1bGU9dCgiLi4vLi4vcGxvdHMvZ2VvIiksbi5jYXRlZ29yaWVzPVsiZ2VvIiwibm9PcGFjaXR5Il0sbi5tZXRhPXt9LGUuZXhwb3J0cz1ufSx7Ii4uLy4uL3Bsb3RzL2dlbyI6NDA5LCIuLi9oZWF0bWFwL2NvbG9yYmFyIjo0ODcsIi4vYXR0cmlidXRlcyI6NDcwLCIuL2NhbGMiOjQ3MSwiLi9kZWZhdWx0cyI6NDcyLCIuL3Bsb3QiOjQ3NH1dLDQ3NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gcihlKXt2YXIgcj10Lm1vY2tBeGlzO3JldHVybiBhLnRpY2tUZXh0KHIsci5jMmwoZSksImhvdmVyIikudGV4dH12YXIgbj1lLmhvdmVyaW5mbztpZigibm9uZSI9PT1uKXJldHVybiBmdW5jdGlvbih0KXtkZWxldGUgdC5uYW1lTGFiZWwsZGVsZXRlIHQudGV4dExhYmVsfTt2YXIgaT0iYWxsIj09PW4/di5ob3ZlcmluZm8uZmxhZ3M6bi5zcGxpdCgiKyIpLG89LTEhPT1pLmluZGV4T2YoIm5hbWUiKSxzPS0xIT09aS5pbmRleE9mKCJsb2NhdGlvbiIpLGw9LTEhPT1pLmluZGV4T2YoInoiKSxjPS0xIT09aS5pbmRleE9mKCJ0ZXh0IiksdT0hbyYmcztyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49W107dT90Lm5hbWVMYWJlbD10LmlkOihvJiYodC5uYW1lTGFiZWw9ZS5uYW1lKSxzJiZuLnB1c2godC5pZCkpLGwmJm4ucHVzaChyKHQueikpLGMmJm4ucHVzaCh0LnR4KSx0LnRleHRMYWJlbD1uLmpvaW4oIjxicj4iKX19ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm57cG9pbnRzOlt7ZGF0YTp0Ll9pbnB1dCxmdWxsRGF0YTp0LGN1cnZlTnVtYmVyOnQuaW5kZXgscG9pbnROdW1iZXI6cixsb2NhdGlvbjplLmlkLHo6ZS56fV19fX12YXIgbz10KCJkMyIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksdT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZ2V0X3NjYWxlIiksaD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvbWFrZV9zY2FsZV9mdW5jdGlvbiIpLGY9dCgiLi4vLi4vbGliL3RvcG9qc29uX3V0aWxzIikuZ2V0VG9wb2pzb25GZWF0dXJlcyxkPXQoIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiKS5sb2NhdGlvblRvRmVhdHVyZSxwPXQoIi4uLy4uL2xpYi9hcnJheV90b19jYWxjX2l0ZW0iKSxnPXQoIi4uLy4uL2NvbnN0YW50cy9nZW9fY29uc3RhbnRzIiksdj10KCIuL2F0dHJpYnV0ZXMiKSxtPWUuZXhwb3J0cz17fTttLmNhbGNHZW9KU09OPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49W10saT10LmxvY2F0aW9ucyxvPWkubGVuZ3RoLGE9Zih0LGUpLHM9KHQubWFya2VyfHx7fSkubGluZXx8e30sbD0wO28+bDtsKyspcj1kKHQubG9jYXRpb25tb2RlLGlbbF0sYSksdm9pZCAwIT09ciYmKHIuej10LnpbbF0sdm9pZCAwIT09dC50ZXh0JiYoci50eD10LnRleHRbbF0pLHAocy5jb2xvcixyLCJtbGMiLGwpLHAocy53aWR0aCxyLCJtbHciLGwpLG4ucHVzaChyKSk7cmV0dXJuIG4ubGVuZ3RoPjAmJihuWzBdLnRyYWNlPXQpLG59LG0ucGxvdD1mdW5jdGlvbih0LGUscil7dmFyIGEsbD10LmZyYW1ld29yayxjPWwuc2VsZWN0KCJnLmNob3JvcGxldGhsYXllciIpLHU9bC5zZWxlY3QoImcuYmFzZWxheWVyIiksaD1sLnNlbGVjdCgiZy5iYXNlbGF5ZXJvdmVyY2hvcm9wbGV0aCIpLGY9Zy5iYXNlTGF5ZXJzT3ZlckNob3JvcGxldGgsZD1jLnNlbGVjdEFsbCgiZy50cmFjZS5jaG9yb3BsZXRoIikuZGF0YShlLGZ1bmN0aW9uKHQpe3JldHVybiB0LnVpZH0pO2QuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRyYWNlIGNob3JvcGxldGgiKSxkLmV4aXQoKS5yZW1vdmUoKSxkLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihlLHIpe2lmKHQuc2hvd0hvdmVyKXt2YXIgbj10LnByb2plY3Rpb24oZS5wcm9wZXJ0aWVzLmN0KTtjKGUpLHMubG9uZUhvdmVyKHt4Om5bMF0seTpuWzFdLG5hbWU6ZS5uYW1lTGFiZWwsdGV4dDplLnRleHRMYWJlbH0se2NvbnRhaW5lcjp0LmhvdmVyQ29udGFpbmVyLm5vZGUoKX0pLHQuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X2hvdmVyIix1KGUscikpfX1mdW5jdGlvbiBhKGUscil7dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfY2xpY2siLHUoZSxyKSl9dmFyIGw9bS5jYWxjR2VvSlNPTihlLHQudG9wb2pzb24pLGM9bih0LGUpLHU9aShlKSxoPW8uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aC5jaG9yb3BsZXRobG9jYXRpb24iKS5kYXRhKGwpO2guZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJjaG9yb3BsZXRobG9jYXRpb24iLCEwKS5vbigibW91c2VvdmVyIixyKS5vbigiY2xpY2siLGEpLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtzLmxvbmVVbmhvdmVyKHQuaG92ZXJDb250YWluZXIpfSkub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXtzLmxvbmVVbmhvdmVyKHQuaG92ZXJDb250YWluZXIpfSkub24oIm1vdXNldXAiLHIpLGguZXhpdCgpLnJlbW92ZSgpfSksaC5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtmb3IodmFyIHA9MDtwPGYubGVuZ3RoO3ArKylhPWZbcF0sdS5zZWxlY3QoImcuIithKS5yZW1vdmUoKSx0LmRyYXdUb3BvKGgsYSxyKSx0LnN0eWxlTGF5ZXIoaCxhLHIpO20uc3R5bGUodCl9LG0uc3R5bGU9ZnVuY3Rpb24odCl7dC5mcmFtZXdvcmsuc2VsZWN0QWxsKCJnLnRyYWNlLmNob3JvcGxldGgiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW8uc2VsZWN0KHRoaXMpLHI9dC5tYXJrZXJ8fHt9LG49ci5saW5lfHx7fSxpPXQuem1pbixhPXQuem1heCxzPXUodC5jb2xvcnNjYWxlKSxmPWgocyxpLGEpO2Uuc2VsZWN0QWxsKCJwYXRoLmNob3JvcGxldGhsb2NhdGlvbiIpLmVhY2goZnVuY3Rpb24odCl7by5zZWxlY3QodGhpcykuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIGYodC56KX0pLmNhbGwobC5zdHJva2UsdC5tbGN8fG4uY29sb3IpLmNhbGwoYy5kYXNoTGluZSwiIix0Lm1sd3x8bi53aWR0aCl9KX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozMDEsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9nZXRfc2NhbGUiOjMxMiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL21ha2Vfc2NhbGVfZnVuY3Rpb24iOjMxNywiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozMTksIi4uLy4uL2NvbnN0YW50cy9nZW9fY29uc3RhbnRzIjozNTgsIi4uLy4uL2xpYi9hcnJheV90b19jYWxjX2l0ZW0iOjM2NSwiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyI6MzcwLCIuLi8uLi9saWIvdG9wb2pzb25fdXRpbHMiOjM4NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjM5MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IjozOTgsIi4vYXR0cmlidXRlcyI6NDcwLGQzOjcwfV0sNDc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hlYXRtYXAvYXR0cmlidXRlcyIpLGk9dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxhPWkubGluZTtlLmV4cG9ydHM9e3o6bi56LHg6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHksdGV4dDpuLnRleHQsdHJhbnNwb3NlOm4udHJhbnNwb3NlLHh0eXBlOm4ueHR5cGUseXR5cGU6bi55dHlwZSx6YXV0bzpuLnphdXRvLHptaW46bi56bWluLHptYXg6bi56bWF4LGNvbG9yc2NhbGU6bi5jb2xvcnNjYWxlLGF1dG9jb2xvcnNjYWxlOm4uYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOm4ucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTpuLnNob3dzY2FsZSxjb25uZWN0Z2FwczpuLmNvbm5lY3RnYXBzLGF1dG9jb250b3VyOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxuY29udG91cnM6e3ZhbFR5cGU6ImludGVnZXIiLGRmbHQ6MH0sY29udG91cnM6e3N0YXJ0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbH0sZW5kOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbH0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGx9LGNvbG9yaW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmaWxsIiwiaGVhdG1hcCIsImxpbmVzIiwibm9uZSJdLGRmbHQ6ImZpbGwifSxzaG93bGluZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9fSxsaW5lOntjb2xvcjpvKHt9LGEuY29sb3Ise30pLHdpZHRoOmEud2lkdGgsZGFzaDphLmRhc2gsc21vb3RoaW5nOm8oe30sYS5zbW9vdGhpbmcse30pfSxfbmVzdGVkTW9kdWxlczp7Y29sb3JiYXI6IkNvbG9yYmFyIn19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjM2OSwiLi4vaGVhdG1hcC9hdHRyaWJ1dGVzIjo0ODUsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6NTI4fV0sNDc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi9oZWF0bWFwL2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1pKHQsZSksbz1lLmNvbnRvdXJzO2lmKGUuYXV0b2NvbnRvdXIhPT0hMSl7dmFyIGE9e3R5cGU6ImxpbmVhciIscmFuZ2U6W2Uuem1pbixlLnptYXhdfTtuLmF1dG9UaWNrcyhhLChlLnptYXgtZS56bWluKS8oZS5uY29udG91cnN8fDE1KSksby5zdGFydD1uLnRpY2tGaXJzdChhKSxvLnNpemU9YS5kdGljayxhLnJhbmdlLnJldmVyc2UoKSxvLmVuZD1uLnRpY2tGaXJzdChhKSxvLnN0YXJ0PT09ZS56bWluJiYoby5zdGFydCs9by5zaXplKSxvLmVuZD09PWUuem1heCYmKG8uZW5kLT1vLnNpemUpLG8uZW5kKz1vLnNpemUvMTAwLGUuX2lucHV0LmNvbnRvdXJzPW99cmV0dXJuIHJ9fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTMsIi4uL2hlYXRtYXAvY2FsYyI6NDg2fV0sNDc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yYmFyL2RyYXciKSxvPXQoIi4vbWFrZV9jb2xvcl9tYXAiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLnRyYWNlLGE9ImNiIityLnVpZDtpZih0Ll9mdWxsTGF5b3V0Ll9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuIithKS5yZW1vdmUoKSxyLnNob3dzY2FsZT09PSExKXJldHVybiB2b2lkIG4uYXV0b01hcmdpbih0LGEpO3ZhciBzPWkodCxhKTtlWzBdLnQuY2I9czt2YXIgbD1yLmNvbnRvdXJzLGM9ci5saW5lLHU9bC5zaXplfHwxLGg9bC5jb2xvcmluZyxmPW8ocix7aXNDb2xvcmJhcjohMH0pOyJoZWF0bWFwIj09PWgmJnMuZmlsbGxldmVscyh7c3RhcnQ6ci56bWluLGVuZDpyLnptYXgsc2l6ZTooci56bWF4LXIuem1pbikvMjU0fSkscy5maWxsY29sb3IoImZpbGwiPT09aHx8ImhlYXRtYXAiPT09aD9mOiIiKS5saW5lKHtjb2xvcjoibGluZXMiPT09aD9mOmMuY29sb3Isd2lkdGg6bC5zaG93bGluZXMhPT0hMT9jLndpZHRoOjAsZGFzaDpjLmRhc2h9KS5sZXZlbHMoe3N0YXJ0Omwuc3RhcnQsZW5kOmwuZW5kLHNpemU6dX0pLm9wdGlvbnMoci5jb2xvcmJhcikoKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcmJhci9kcmF3IjozMDQsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vbWFrZV9jb2xvcl9tYXAiOjQ4MX1dLDQ3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uL2hlYXRtYXAvaGFzX2NvbHVtbnMiKSxvPXQoIi4uL2hlYXRtYXAveHl6X2RlZmF1bHRzIiksYT10KCIuLi9jb250b3VyL3N0eWxlX2RlZmF1bHRzIikscz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUscyxyLGkpfXZhciB1PW8odCxlLGMpO2lmKCF1KXJldHVybiB2b2lkKGUudmlzaWJsZT0hMSk7YygidGV4dCIpLGMoImNvbm5lY3RnYXBzIixpKGUpKTt2YXIgaD1uLmNvZXJjZTIodCxlLHMsImNvbnRvdXJzLnN0YXJ0IiksZj1uLmNvZXJjZTIodCxlLHMsImNvbnRvdXJzLmVuZCIpLGQ9YygiYXV0b2NvbnRvdXIiLCEoaCYmZikpO2MoZD8ibmNvbnRvdXJzIjoiY29udG91cnMuc2l6ZSIpLGEodCxlLGMsbCl9fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi9jb250b3VyL3N0eWxlX2RlZmF1bHRzIjo0ODQsIi4uL2hlYXRtYXAvaGFzX2NvbHVtbnMiOjQ5MCwiLi4vaGVhdG1hcC94eXpfZGVmYXVsdHMiOjQ5NiwiLi9hdHRyaWJ1dGVzIjo0NzV9XSw0Nzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vaGVhdG1hcC9ob3ZlciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXtyZXR1cm4gbih0LGUscixpLCEwKX19LHsiLi4vaGVhdG1hcC9ob3ZlciI6NDkxfV0sNDgwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9O24uYXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxuLnN1cHBseURlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLmNhbGM9dCgiLi9jYWxjIiksbi5wbG90PXQoIi4vcGxvdCIpLG4uc3R5bGU9dCgiLi9zdHlsZSIpLG4uY29sb3JiYXI9dCgiLi9jb2xvcmJhciIpLG4uaG92ZXJQb2ludHM9dCgiLi9ob3ZlciIpLG4ubW9kdWxlVHlwZT0idHJhY2UiLG4ubmFtZT0iY29udG91ciIsbi5iYXNlUGxvdE1vZHVsZT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxuLmNhdGVnb3JpZXM9WyJjYXJ0ZXNpYW4iLCIyZE1hcCIsImNvbnRvdXIiXSxuLm1ldGE9e30sZS5leHBvcnRzPW59LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjozOTksIi4vYXR0cmlidXRlcyI6NDc1LCIuL2NhbGMiOjQ3NiwiLi9jb2xvcmJhciI6NDc3LCIuL2RlZmF1bHRzIjo0NzgsIi4vaG92ZXIiOjQ3OSwiLi9wbG90Ijo0ODIsIi4vc3R5bGUiOjQ4M31dLDQ4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2dldF9zY2FsZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLG89dC5jb250b3VycyxhPW8uc3RhcnQscz1vLmVuZCxsPW8uc2l6ZXx8MSxjPU1hdGguZmxvb3IoKHMrbC8xMC1hKS9sKSsxLHU9ImxpbmVzIj09PW8uY29sb3Jpbmc/MDoxLGg9aSh0LmNvbG9yc2NhbGUpLGY9aC5sZW5ndGgsZD1uZXcgQXJyYXkoZikscD1uZXcgQXJyYXkoZik7aWYoImhlYXRtYXAiPT09by5jb2xvcmluZyl7Zm9yKHQuemF1dG8mJnQuYXV0b2NvbnRvdXI9PT0hMSYmKHQuem1pbj1hLWwvMix0LnptYXg9dC56bWluK2MqbCkscj0wO2Y+cjtyKyspZT1oW3JdLGRbcl09ZVswXSoodC56bWF4LXQuem1pbikrdC56bWluLHBbcl09ZVsxXTt2YXIgZz1uLmV4dGVudChbdC56bWluLHQuem1heCxvLnN0YXJ0LG8uc3RhcnQrbCooYy0xKV0pLHY9Z1t0LnptaW48dC56bWF4PzA6MV0sbT1nW3Quem1pbjx0LnptYXg/MTowXTt2IT09dC56bWluJiYoZC5zcGxpY2UoMCwwLHYpLHAuc3BsaWNlKDAsMCxSYW5nZVswXSkpLG0hPT10LnptYXgmJihkLnB1c2gobSkscC5wdXNoKHBbcC5sZW5ndGgtMV0pKX1lbHNlIGZvcihyPTA7Zj5yO3IrKyllPWhbcl0sZFtyXT0oZVswXSooYyt1LTEpLXUvMikqbCthLHBbcl09ZVsxXTt2YXIgeT1uLnNjYWxlLmxpbmVhcigpLmludGVycG9sYXRlKG4uaW50ZXJwb2xhdGVSZ2IpLmRvbWFpbihkKS5yYW5nZShwKTtyZXR1cm4geX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2dldF9zY2FsZSI6MzEyLGQzOjcwfV0sNDgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe18ubWFya1RpbWUoImluIENvbnRvdXIucGxvdCIpO3ZhciBuPXJbMF0udHJhY2Usbz1yWzBdLngscz1yWzBdLnksYz1uLmNvbnRvdXJzLHU9bi51aWQsaD1lLngoKSxmPWUueSgpLHY9dC5fZnVsbExheW91dCxiPSJjb250b3VyIit1LHg9aShjLGUsclswXSk7aWYobi52aXNpYmxlIT09ITApcmV0dXJuIHYuX3BhcGVyLnNlbGVjdEFsbCgiLiIrYisiLC5obSIrdSkucmVtb3ZlKCksdm9pZCB2Ll9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuY2IiK3UpLnJlbW92ZSgpOyJoZWF0bWFwIj09PWMuY29sb3Jpbmc/KG4uemF1dG8mJm4uYXV0b2NvbnRvdXI9PT0hMSYmKG4uX2lucHV0LnptaW49bi56bWluPWMuc3RhcnQtYy5zaXplLzIsbi5faW5wdXQuem1heD1uLnptYXg9bi56bWluK3gubGVuZ3RoKmMuc2l6ZSksQSh0LGUsW3JdKSk6di5fcGFwZXIuc2VsZWN0QWxsKCIuaG0iK3UpLnJlbW92ZSgpLGEoeCksbCh4KTt2YXIgdz1oLmMycChvWzBdLCEwKSxrPWguYzJwKG9bby5sZW5ndGgtMV0sITApLE09Zi5jMnAoc1swXSwhMCksVD1mLmMycChzW3MubGVuZ3RoLTFdLCEwKSxFPVtbdyxUXSxbayxUXSxbayxNXSxbdyxNXV0sTD1kKGUscixiKTtwKEwsRSxjKSxnKEwseCxFLGMpLG0oTCx4LGMpLHkoTCxlLHJbMF0sRSksXy5tYXJrVGltZSgiZG9uZSBDb250b3VyLnBsb3QiKX1mdW5jdGlvbiBpKHQsZSxyKXtmb3IodmFyIG49dC5zaXplfHwxLGk9W10sbz10LnN0YXJ0O288dC5lbmQrbi8xMDtvKz1uKWkucHVzaCh7bGV2ZWw6byxjcm9zc2luZ3M6e30sc3RhcnRzOltdLGVkZ2VwYXRoczpbXSxwYXRoczpbXSx4YXhpczplLngoKSx5YXhpczplLnkoKSx4OnIueCx5OnIueSx6OnIueixzbW9vdGhpbmc6ci50cmFjZS5saW5lLnNtb290aGluZ30pO3JldHVybiBpfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj0oZVswXVswXT50PzA6MSkrKGVbMF1bMV0+dD8wOjIpKyhlWzFdWzFdPnQ/MDo0KSsoZVsxXVswXT50PzA6OCk7aWYoNT09PXJ8fDEwPT09cil7dmFyIG49KGVbMF1bMF0rZVswXVsxXStlWzFdWzBdK2VbMV1bMV0pLzQ7cmV0dXJuIHQ+bj81PT09cj83MTM6MTExNDo1PT09cj8xMDQ6MjA4fXJldHVybiAxNT09PXI/MDpyfWZ1bmN0aW9uIGEodCl7dmFyIGUscixuLGksYSxzLGwsYyx1LGg9dFswXS56LGY9aC5sZW5ndGgsZD1oWzBdLmxlbmd0aCxwPTI9PT1mfHwyPT09ZDtmb3Iocj0wO2YtMT5yO3IrKylmb3IoaT1bXSwwPT09ciYmKGk9aS5jb25jYXQoaykpLHI9PT1mLTImJihpPWkuY29uY2F0KE0pKSxlPTA7ZC0xPmU7ZSsrKWZvcihuPWkuc2xpY2UoKSwwPT09ZSYmKG49bi5jb25jYXQoVCkpLGU9PT1kLTImJihuPW4uY29uY2F0KEUpKSxhPWUrIiwiK3Iscz1bW2hbcl1bZV0saFtyXVtlKzFdXSxbaFtyKzFdW2VdLGhbcisxXVtlKzFdXV0sdT0wO3U8dC5sZW5ndGg7dSsrKWM9dFt1XSxsPW8oYy5sZXZlbCxzKSxsJiYoYy5jcm9zc2luZ3NbYV09bCwtMSE9PW4uaW5kZXhPZihsKSYmKGMuc3RhcnRzLnB1c2goW2Uscl0pLHAmJi0xIT09bi5pbmRleE9mKGwsbi5pbmRleE9mKGwpKzEpJiZjLnN0YXJ0cy5wdXNoKFtlLHJdKSkpfWZ1bmN0aW9uIHModCxlLHIpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGRbdCVkLmxlbmd0aF19dmFyIGksbz1lLmpvaW4oIiwiKSxhPW8scz10LmNyb3NzaW5nc1thXSxsPWMocyxyLGUpLGQ9W2YodCxlLFstbFswXSwtbFsxXV0pXSxwPWwuam9pbigiLCIpLGc9dC56Lmxlbmd0aCx2PXQuelswXS5sZW5ndGg7Zm9yKGk9MDsxZTQ+aTtpKyspe2lmKHM+MjA/KHM9U1tzXVsobFswXXx8bFsxXSk8MD8wOjFdLHQuY3Jvc3NpbmdzW2FdPUNbc10pOmRlbGV0ZSB0LmNyb3NzaW5nc1thXSxsPUxbc10sIWwpe2NvbnNvbGUubG9nKCJmb3VuZCBiYWQgbWFyY2hpbmcgaW5kZXgiLHMsZSx0LmxldmVsKTticmVha31pZihkLnB1c2goZih0LGUsbCkpLGVbMF0rPWxbMF0sZVsxXSs9bFsxXSx1KGRbZC5sZW5ndGgtMV0sZFtkLmxlbmd0aC0yXSkmJmQucG9wKCksYT1lLmpvaW4oIiwiKSxhPT09byYmbC5qb2luKCIsIik9PT1wfHxyJiYobFswXSYmKGVbMF08MHx8ZVswXT52LTIpfHxsWzFdJiYoZVsxXTwwfHxlWzFdPmctMikpKWJyZWFrO3M9dC5jcm9zc2luZ3NbYV19MWU0PT09aSYmY29uc29sZS5sb2coIkluZmluaXRlIGxvb3AgaW4gY29udG91cj8iKTt2YXIgbSx5LGIseCxfLHcsQSxrPXUoZFswXSxkW2QubGVuZ3RoLTFdKSxNPTAsVD0uMip0LnNtb290aGluZyxFPVtdLFA9MDtmb3IoaT0xO2k8ZC5sZW5ndGg7aSsrKUE9aChkW2ldLGRbaS0xXSksTSs9QSxFLnB1c2goQSk7dmFyIHo9TS9FLmxlbmd0aCpUO2ZvcihpPWQubGVuZ3RoLTI7aT49UDtpLS0paWYobT1FW2ldLHo+bSl7Zm9yKGI9MCx5PWktMTt5Pj1QJiZtK0VbeV08ejt5LS0pbSs9RVt5XTtpZihrJiZpPT09ZC5sZW5ndGgtMilmb3IoYj0wO3k+YiYmbStFW2JdPHo7YisrKW0rPUVbYl07Xz1pLXkrYisxLHc9TWF0aC5mbG9vcigoaSt5K2IrMikvMikseD1rfHxpIT09ZC5sZW5ndGgtMj9rfHwtMSE9PXk/XyUyP24odyk6WyhuKHcpWzBdK24odysxKVswXSkvMiwobih3KVsxXStuKHcrMSlbMV0pLzJdOmRbMF06ZFtkLmxlbmd0aC0xXSxkLnNwbGljZSh5KzEsaS15KzEseCksaT15KzEsYiYmKFA9YiksayYmKGk9PT1kLmxlbmd0aC0yP2RbYl09ZFtkLmxlbmd0aC0xXTowPT09aSYmKGRbZC5sZW5ndGgtMV09ZFswXSkpfWlmKGQuc3BsaWNlKDAsUCksIShkLmxlbmd0aDwyKSlpZihrKWQucG9wKCksdC5wYXRocy5wdXNoKGQpO2Vsc2V7cnx8Y29uc29sZS5sb2coInVuY2xvc2VkIGludGVyaW9yIGNvbnRvdXI/Iix0LmxldmVsLG8sZC5qb2luKCJMIikpO3ZhciBSPSExO3QuZWRnZXBhdGhzLmZvckVhY2goZnVuY3Rpb24oZSxyKXtpZighUiYmdShlWzBdLGRbZC5sZW5ndGgtMV0pKXtkLnBvcCgpLFI9ITA7dmFyIG49ITE7dC5lZGdlcGF0aHMuZm9yRWFjaChmdW5jdGlvbihlLGkpeyFuJiZ1KGVbZS5sZW5ndGgtMV0sZFswXSkmJihuPSEwLGQuc3BsaWNlKDAsMSksdC5lZGdlcGF0aHMuc3BsaWNlKHIsMSksaT09PXI/dC5wYXRocy5wdXNoKGQuY29uY2F0KGUpKTp0LmVkZ2VwYXRoc1tpXT10LmVkZ2VwYXRoc1tpXS5jb25jYXQoZCxlKSl9KSxufHwodC5lZGdlcGF0aHNbcl09ZC5jb25jYXQoZSkpfX0pLHQuZWRnZXBhdGhzLmZvckVhY2goZnVuY3Rpb24oZSxyKXshUiYmdShlW2UubGVuZ3RoLTFdLGRbMF0pJiYoZC5zcGxpY2UoMCwxKSx0LmVkZ2VwYXRoc1tyXT1lLmNvbmNhdChkKSxSPSEwKX0pLFJ8fHQuZWRnZXBhdGhzLnB1c2goZCl9fWZ1bmN0aW9uIGwodCl7dmFyIGUscixuLGksbztmb3Iobj0wO248dC5sZW5ndGg7bisrKXtmb3IoaT10W25dLG89MDtvPGkuc3RhcnRzLmxlbmd0aDtvKyspcj1pLnN0YXJ0c1tvXSxzKGksciwiZWRnZSIpO2ZvcihlPTA7T2JqZWN0LmtleXMoaS5jcm9zc2luZ3MpLmxlbmd0aCYmMWU0PmU7KWUrKyxyPU9iamVjdC5rZXlzKGkuY3Jvc3NpbmdzKVswXS5zcGxpdCgiLCIpLm1hcChOdW1iZXIpLHMoaSxyKTsxZTQ9PT1lJiZjb25zb2xlLmxvZygiSW5maW5pdGUgbG9vcCBpbiBjb250b3VyPyIpfX1mdW5jdGlvbiBjKHQsZSxyKXt2YXIgbj0wLGk9MDtyZXR1cm4gdD4yMCYmZT8yMDg9PT10fHwxMTE0PT09dD9uPTA9PT1yWzBdPzE6LTE6aT0wPT09clsxXT8xOi0xOi0xIT09ay5pbmRleE9mKHQpP2k9MTotMSE9PVQuaW5kZXhPZih0KT9uPTE6LTEhPT1NLmluZGV4T2YodCk/aT0tMTpuPS0xLFtuLGldfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gTWF0aC5hYnModFswXS1lWzBdKTwuMDEmJk1hdGguYWJzKHRbMV0tZVsxXSk8LjAxfWZ1bmN0aW9uIGgodCxlKXt2YXIgcj10WzBdLWVbMF0sbj10WzFdLWVbMV07cmV0dXJuIE1hdGguc3FydChyKnIrbipuKX1mdW5jdGlvbiBmKHQsZSxyKXt2YXIgbj1lWzBdK01hdGgubWF4KHJbMF0sMCksaT1lWzFdK01hdGgubWF4KHJbMV0sMCksbz10LnpbaV1bbl0sYT10LnhheGlzLHM9dC55YXhpcztpZihyWzFdKXt2YXIgbD0odC5sZXZlbC1vKS8odC56W2ldW24rMV0tbyk7cmV0dXJuW2EuYzJwKCgxLWwpKnQueFtuXStsKnQueFtuKzFdLCEwKSxzLmMycCh0LnlbaV0sITApXX12YXIgYz0odC5sZXZlbC1vKS8odC56W2krMV1bbl0tbyk7cmV0dXJuW2EuYzJwKHQueFtuXSwhMCkscy5jMnAoKDEtYykqdC55W2ldK2MqdC55W2krMV0sITApXX1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj10LnBsb3Quc2VsZWN0KCIubWFwbGF5ZXIiKS5zZWxlY3RBbGwoImcuY29udG91ci4iK3IpLmRhdGEoZSk7cmV0dXJuIG4uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJjb250b3VyIiwhMCkuY2xhc3NlZChyLCEwKSxuLmV4aXQoKS5yZW1vdmUoKSxufWZ1bmN0aW9uIHAodCxlLHIpe3ZhciBuPXQuc2VsZWN0QWxsKCJnLmNvbnRvdXJiZyIpLmRhdGEoWzBdKTtuLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiY29udG91cmJnIiwhMCk7dmFyIGk9bi5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKCJmaWxsIj09PXIuY29sb3Jpbmc/WzBdOltdKTtpLmVudGVyKCkuYXBwZW5kKCJwYXRoIiksaS5leGl0KCkucmVtb3ZlKCksaS5hdHRyKCJkIiwiTSIrZS5qb2luKCJMIikrIloiKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfWZ1bmN0aW9uIGcodCxlLHIsbil7dmFyIGk9dC5zZWxlY3RBbGwoImcuY29udG91cmZpbGwiKS5kYXRhKFswXSk7aS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJmaWxsIiwhMCk7dmFyIG89aS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKCJmaWxsIj09PW4uY29sb3Jpbmc/ZTpbXSk7by5lbnRlcigpLmFwcGVuZCgicGF0aCIpLG8uZXhpdCgpLnJlbW92ZSgpLG8uZWFjaChmdW5jdGlvbih0KXt2YXIgZT12KHQscik7ZT94LnNlbGVjdCh0aGlzKS5hdHRyKCJkIixlKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpOnguc2VsZWN0KHRoaXMpLnJlbW92ZSgpfSl9ZnVuY3Rpb24gdih0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIE1hdGguYWJzKHRbMV0tZVswXVsxXSk8LjAxfWZ1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGguYWJzKHRbMV0tZVsyXVsxXSk8LjAxfWZ1bmN0aW9uIGkodCl7cmV0dXJuIE1hdGguYWJzKHRbMF0tZVswXVswXSk8LjAxfWZ1bmN0aW9uIG8odCl7cmV0dXJuIE1hdGguYWJzKHRbMF0tZVsyXVswXSk8LjAxfWZvcih2YXIgYSxzLGwsYyx1LGgsZj10LmVkZ2VwYXRocy5sZW5ndGh8fHQuelswXVswXTx0LmxldmVsPyIiOiJNIitlLmpvaW4oIkwiKSsiWiIsZD0wLHA9dC5lZGdlcGF0aHMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSxnPSEwO3AubGVuZ3RoOyl7Zm9yKGg9dy5zbW9vdGhvcGVuKHQuZWRnZXBhdGhzW2RdLHQuc21vb3RoaW5nKSxmKz1nP2g6aC5yZXBsYWNlKC9eTS8sIkwiKSxwLnNwbGljZShwLmluZGV4T2YoZCksMSksYT10LmVkZ2VwYXRoc1tkXVt0LmVkZ2VwYXRoc1tkXS5sZW5ndGgtMV0sYz0tMSxsPTA7ND5sO2wrKyl7aWYoIWEpe2NvbnNvbGUubG9nKCJtaXNzaW5nIGVuZD8iLGQsdCk7YnJlYWt9Zm9yKHIoYSkmJiFvKGEpP3M9ZVsxXTppKGEpP3M9ZVswXTpuKGEpP3M9ZVszXTpvKGEpJiYocz1lWzJdKSx1PTA7dTx0LmVkZ2VwYXRocy5sZW5ndGg7dSsrKXt2YXIgdj10LmVkZ2VwYXRoc1t1XVswXTtNYXRoLmFicyhhWzBdLXNbMF0pPC4wMT9NYXRoLmFicyhhWzBdLXZbMF0pPC4wMSYmKHZbMV0tYVsxXSkqKHNbMV0tdlsxXSk+PTAmJihzPXYsYz11KTpNYXRoLmFicyhhWzFdLXNbMV0pPC4wMT9NYXRoLmFicyhhWzFdLXZbMV0pPC4wMSYmKHZbMF0tYVswXSkqKHNbMF0tdlswXSk+PTAmJihzPXYsYz11KTpjb25zb2xlLmxvZygiZW5kcHQgdG8gbmV3ZW5kcHQgaXMgbm90IHZlcnQuIG9yIGhvcnouIixhLHMsdil9aWYoYT1zLGM+PTApYnJlYWs7Zis9IkwiK3N9aWYoYz09PXQuZWRnZXBhdGhzLmxlbmd0aCl7Y29uc29sZS5sb2coInVuY2xvc2VkIHBlcmltZXRlciBwYXRoIik7YnJlYWt9ZD1jLGc9LTE9PT1wLmluZGV4T2YoZCksZyYmKGQ9cFswXSxmKz0iWiIpfWZvcihkPTA7ZDx0LnBhdGhzLmxlbmd0aDtkKyspZis9dy5zbW9vdGhjbG9zZWQodC5wYXRoc1tkXSx0LnNtb290aGluZyk7cmV0dXJuIGZ9ZnVuY3Rpb24gbSh0LGUscil7dmFyIG49ZVswXS5zbW9vdGhpbmcsaT10LnNlbGVjdEFsbCgiZy5jb250b3VybGV2ZWwiKS5kYXRhKHIuc2hvd2xpbmVzPT09ITE/W106ZSk7aS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsZXZlbCIsITApLGkuZXhpdCgpLnJlbW92ZSgpO3ZhciBvPWkuc2VsZWN0QWxsKCJwYXRoLm9wZW5saW5lIikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5lZGdlcGF0aHN9KTtvLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgib3BlbmxpbmUiLCEwKSxvLmV4aXQoKS5yZW1vdmUoKSxvLmF0dHIoImQiLGZ1bmN0aW9uKHQpe3JldHVybiB3LnNtb290aG9wZW4odCxuKX0pLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMSk7dmFyIGE9aS5zZWxlY3RBbGwoInBhdGguY2xvc2VkbGluZSIpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuIHQucGF0aHN9KTthLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgiY2xvc2VkbGluZSIsITApLGEuZXhpdCgpLnJlbW92ZSgpLGEuYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIHcuc21vb3RoY2xvc2VkKHQsbil9KS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDEpfWZ1bmN0aW9uIHkodCxlLHIsbil7dmFyIGk9ImNsaXAiK3IudHJhY2UudWlkLG89ZS5wbG90LnNlbGVjdEFsbCgiZGVmcyIpLmRhdGEoWzBdKTtvLmVudGVyKCkuYXBwZW5kKCJkZWZzIik7dmFyIHM9by5zZWxlY3RBbGwoIiMiK2kpLmRhdGEoci50cmFjZS5jb25uZWN0Z2Fwcz9bXTpbMF0pO2lmKHMuZW50ZXIoKS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGkpLHMuZXhpdCgpLnJlbW92ZSgpLHIudHJhY2UuY29ubmVjdGdhcHM9PT0hMSl7dmFyIGM9e2xldmVsOi45LGNyb3NzaW5nczp7fSxzdGFydHM6W10sZWRnZXBhdGhzOltdLHBhdGhzOltdLHhheGlzOmUueCgpLHlheGlzOmUueSgpLHg6ci54LHk6ci55LHo6YihyKSxzbW9vdGhpbmc6MH07YShbY10pLGwoW2NdKTt2YXIgdT12KGMsbiksaD1zLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoWzBdKTtoLmVudGVyKCkuYXBwZW5kKCJwYXRoIiksaC5hdHRyKCJkIix1KX1lbHNlIGk9bnVsbDt0LmNhbGwody5zZXRDbGlwVXJsLGkpLGUucGxvdC5zZWxlY3RBbGwoIi5obSIrci50cmFjZS51aWQpLmNhbGwody5zZXRDbGlwVXJsLGkpfWZ1bmN0aW9uIGIodCl7dmFyIGUscixuPXQudHJhY2UuX2VtcHR5cG9pbnRzLGk9W10sbz10LnoubGVuZ3RoLGE9dC56WzBdLmxlbmd0aCxzPVtdO2ZvcihlPTA7YT5lO2UrKylzLnB1c2goMSk7Zm9yKGU9MDtvPmU7ZSsrKWkucHVzaChzLnNsaWNlKCkpO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspcj1uW2VdLGlbclswXV1bclsxXV09MDtyZXR1cm4gdC56bWFzaz1pLGl9dmFyIHg9dCgiZDMiKSxfPXQoIi4uLy4uL2xpYiIpLHc9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksQT10KCIuLi9oZWF0bWFwL3Bsb3QiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKW4odCxlLHJbaV0pfTt2YXIgaz1bMSw5LDEzLDEwNCw3MTNdLE09WzQsNiw3LDEwNCw3MTNdLFQ9WzgsMTIsMTQsMjA4LDExMTRdLEU9WzIsMywxMSwyMDgsMTExNF0sTD1bbnVsbCxbLTEsMF0sWzAsLTFdLFstMSwwXSxbMSwwXSxudWxsLFswLC0xXSxbLTEsMF0sWzAsMV0sWzAsMV0sbnVsbCxbMCwxXSxbMSwwXSxbMSwwXSxbMCwtMV1dLFM9ezEwNDpbNCwxXSwyMDg6WzIsOF0sNzEzOls3LDEzXSwxMTE0OlsxMSwxNF19LEM9ezE6NCwyOjgsNDoxLDc6MTMsODoyLDExOjE0LDEzOjcsMTQ6MTF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6MzE5LCIuLi8uLi9saWIiOjM3MywiLi4vaGVhdG1hcC9wbG90Ijo0OTQsZDM6NzB9XSw0ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vaGVhdG1hcC9zdHlsZSIpLGE9dCgiLi9tYWtlX2NvbG9yX21hcCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcuY29udG91ciIpO2Uuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyYWNlLm9wYWNpdHl9KSxlLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodGhpcykscj10LnRyYWNlLG89ci5jb250b3VycyxzPXIubGluZSxsPW8uc2l6ZXx8MSxjPW8uc3RhcnQsdT1hKHIpO2Uuc2VsZWN0QWxsKCJnLmNvbnRvdXJsZXZlbCIpLmVhY2goZnVuY3Rpb24odCxlKXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKS5jYWxsKGkubGluZUdyb3VwU3R5bGUscy53aWR0aCwibGluZXMiPT09by5jb2xvcmluZz91KGMrZSpsKTpzLmNvbG9yLHMuZGFzaCl9KSxlLnNlbGVjdEFsbCgiZy5jb250b3VyYmcgcGF0aCIpLnN0eWxlKCJmaWxsIix1KGMtbC8yKSksZS5zZWxlY3RBbGwoImcuY29udG91cmZpbGwgcGF0aCIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbih0LGUpe3JldHVybiB1KGMrKGUrLjUpKmwpfSl9KSxvKHQpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjMxOSwiLi4vaGVhdG1hcC9zdHlsZSI6NDk1LCIuL21ha2VfY29sb3JfbWFwIjo0ODEsZDM6NzB9XSw0ODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvLGE9cigiY29udG91cnMuY29sb3JpbmciKTsiZmlsbCI9PT1hJiYobz1yKCJjb250b3Vycy5zaG93bGluZXMiKSksbyE9PSExJiYoImxpbmVzIiE9PWEmJnIoImxpbmUuY29sb3IiLCIjMDAwIikscigibGluZS53aWR0aCIsLjUpLHIoImxpbmUuZGFzaCIpKSxyKCJsaW5lLnNtb290aGluZyIpLCJub25lIiE9PShlLmNvbnRvdXJzfHx7fSkuY29sb3JpbmcmJm4odCxlLGkscix7cHJlZml4OiIiLGNMZXR0ZXI6InoifSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6MzEwfV0sNDg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17ejp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHg6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHksdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHRyYW5zcG9zZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0seHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFycmF5Iiwic2NhbGVkIl19LHl0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhcnJheSIsInNjYWxlZCJdfSx6YXV0bzppLnphdXRvLHptaW46aS56bWluLHptYXg6aS56bWF4LGNvbG9yc2NhbGU6aS5jb2xvcnNjYWxlLGF1dG9jb2xvcnNjYWxlOm8oe30saS5hdXRvY29sb3JzY2FsZSx7ZGZsdDohMX0pLHJldmVyc2VzY2FsZTppLnJldmVyc2VzY2FsZSxzaG93c2NhbGU6aS5zaG93c2NhbGUsenNtb290aDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZmFzdCIsImJlc3QiLCExXSxkZmx0OiExfSxjb25uZWN0Z2Fwczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sX25lc3RlZE1vZHVsZXM6e2NvbG9yYmFyOiJDb2xvcmJhciJ9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzA3LCIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6NTI4fV0sNDg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gYyh0KT8rdDp2b2lkIDB9dmFyIHIsbixpLG8sYSxzLGw9dC56O2lmKHQudHJhbnNwb3NlKXtmb3Iocj0wLGE9MDthPGwubGVuZ3RoO2ErKylyPU1hdGgubWF4KHIsbFthXS5sZW5ndGgpO2lmKDA9PT1yKXJldHVybiExO2k9ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSxvPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtyXVtlXX19ZWxzZSByPWwubGVuZ3RoLGk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXS5sZW5ndGh9LG89ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0W2VdW3JdfTt2YXIgdT1uZXcgQXJyYXkocik7Zm9yKGE9MDtyPmE7YSsrKWZvcihuPWkobCxhKSx1W2FdPW5ldyBBcnJheShuKSxzPTA7bj5zO3MrKyl1W2FdW3NdPWUobyhsLGEscykpO3JldHVybiB1fWZ1bmN0aW9uIGkodCxlLHIsbixpLG8pe3ZhciBhLHMsbCxjPVtdLHU9Zi50cmFjZUlzKHQsImNvbnRvdXIiKSxoPWYudHJhY2VJcyh0LCJoaXN0b2dyYW0iKTtpZihBcnJheS5pc0FycmF5KGUpJiYhaCYmImNhdGVnb3J5IiE9PW8udHlwZSl7ZT1lLm1hcChvLmQyYyk7dmFyIGQ9ZS5sZW5ndGg7aWYoIShpPj1kKSlyZXR1cm4gdT9lLnNsaWNlKDAsaSk6ZS5zbGljZSgwLGkrMSk7aWYodSljPWUuc2xpY2UoMCxpKTtlbHNlIGlmKDE9PT1pKWM9W2VbMF0tLjUsZVswXSsuNV07ZWxzZXtmb3IoYz1bMS41KmVbMF0tLjUqZVsxXV0sbD0xO2Q+bDtsKyspYy5wdXNoKC41KihlW2wtMV0rZVtsXSkpO2MucHVzaCgxLjUqZVtkLTFdLS41KmVbZC0yXSl9aWYoaT5kKXt2YXIgcD1jW2MubGVuZ3RoLTFdLGc9cC1jW2MubGVuZ3RoLTJdO2ZvcihsPWQ7aT5sO2wrKylwKz1nLGMucHVzaChwKX19ZWxzZSBmb3Iocz1ufHwxLGE9dm9pZCAwPT09cj8wOmh8fCJjYXRlZ29yeSI9PT1vLnR5cGU/cjpvLmQyYyhyKSxsPXU/MDotLjU7aT5sO2wrKyljLnB1c2goYStzKmwpO3JldHVybiBjfWZ1bmN0aW9uIG8odCl7cmV0dXJuLjUtLjI1Kk1hdGgubWluKDEsLjUqdCl9ZnVuY3Rpb24gYSh0LGUscil7dmFyIG4saSxhPTE7aWYoQXJyYXkuaXNBcnJheShyKSlmb3Iobj0wO248ZS5sZW5ndGg7bisrKWk9ZVtuXSx0W2lbMF1dW2lbMV1dPXJbaVswXV1baVsxXV07ZWxzZSBsKHQsZSk7Zm9yKG49MDtuPGUubGVuZ3RoJiYhKGVbbl1bMl08NCk7bisrKTtmb3IoZT1lLnNsaWNlKG4pLG49MDsxMDA+biYmYT55O24rKylhPWwodCxlLG8oYSkpO3JldHVybiBhPnkmJmNvbnNvbGUubG9nKCJpbnRlcnAyZCBkaWRuJ3QgY29udmVyZ2UgcXVpY2tseSIsYSksdH1mdW5jdGlvbiBzKHQpe3ZhciBlLHIsbixpLG8sYSxzLGwsYz1bXSx1PXt9LGg9W10sZj10WzBdLGQ9W10scD1bMCwwLDBdLGc9bSh0KTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWZvcihlPWQsZD1mLGY9dFtyKzFdfHxbXSxuPTA7Zz5uO24rKyl2b2lkIDA9PT1kW25dJiYoYT0odm9pZCAwIT09ZFtuLTFdPzE6MCkrKHZvaWQgMCE9PWRbbisxXT8xOjApKyh2b2lkIDAhPT1lW25dPzE6MCkrKHZvaWQgMCE9PWZbbl0/MTowKSxhPygwPT09ciYmYSsrLDA9PT1uJiZhKysscj09PXQubGVuZ3RoLTEmJmErKyxuPT09ZC5sZW5ndGgtMSYmYSsrLDQ+YSYmKHVbW3Isbl1dPVtyLG4sYV0pLGMucHVzaChbcixuLGFdKSk6aC5wdXNoKFtyLG5dKSk7Zm9yKDtoLmxlbmd0aDspe2ZvcihzPXt9LGw9ITEsbz1oLmxlbmd0aC0xO28+PTA7by0tKWk9aFtvXSxyPWlbMF0sbj1pWzFdLGE9KCh1W1tyLTEsbl1dfHxwKVsyXSsodVtbcisxLG5dXXx8cClbMl0rKHVbW3Isbi0xXV18fHApWzJdKyh1W1tyLG4rMV1dfHxwKVsyXSkvMjAsYSYmKHNbaV09W3IsbixhXSxoLnNwbGljZShvLDEpLGw9ITApO2lmKCFsKXRocm93ImZpbmRFbXB0aWVzIGl0ZXJhdGVkIHdpdGggbm8gbmV3IG5laWdoYm9ycyI7Zm9yKGkgaW4gcyl1W2ldPXNbaV0sYy5wdXNoKHNbaV0pfXJldHVybiBjLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gZVsyXS10WzJdfSl9ZnVuY3Rpb24gbCh0LGUscil7dmFyIG4saSxvLGEscyxsLGMsdSxoLGYsZCxwLGcsdj0wO2ZvcihhPTA7YTxlLmxlbmd0aDthKyspe2ZvcihuPWVbYV0saT1uWzBdLG89blsxXSxkPXRbaV1bb10sZj0wLGg9MCxzPTA7ND5zO3MrKylsPWJbc10sYz10W2krbFswXV0sYyYmKHU9Y1tvK2xbMV1dLHZvaWQgMCE9PXUmJigwPT09Zj9wPWc9dToocD1NYXRoLm1pbihwLHUpLGc9TWF0aC5tYXgoZyx1KSksaCsrLGYrPXUpKTtpZigwPT09aCl0aHJvdyJpdGVyYXRlSW50ZXJwMmQgb3JkZXIgaXMgd3Jvbmc6IG5vIGRlZmluZWQgbmVpZ2hib3JzIjt0W2ldW29dPWYvaCx2b2lkIDA9PT1kPzQ+aCYmKHY9MSk6KHRbaV1bb109KDErcikqdFtpXVtvXS1yKmQsZz5wJiYodj1NYXRoLm1heCh2LE1hdGguYWJzKHRbaV1bb10tZCkvKGctcCkpKSl9cmV0dXJuIHZ9dmFyIGM9dCgiZmFzdC1pc251bWVyaWMiKSx1PXQoIi4uLy4uL2xpYiIpLGg9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxmPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksZD10KCIuLi9oaXN0b2dyYW0yZC9jYWxjIikscD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLGc9dCgiLi9oYXNfY29sdW1ucyIpLHY9dCgiLi9jb252ZXJ0X2NvbHVtbl94eXoiKSxtPXQoIi4vbWF4X3Jvd19sZW5ndGgiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQpe0U9ZS5faW5wdXQuenNtb290aD1lLnpzbW9vdGg9ITEsdS5ub3RpZmllcigiY2Fubm90IGZhc3QtenNtb290aDogIit0KX11Lm1hcmtUaW1lKCJzdGFydCBjb252ZXJ0IHgmeSIpO3ZhciBvLGwsYyx5LGIseCxfLHcsQT1oLmdldEZyb21JZCh0LGUueGF4aXN8fCJ4Iiksaz1oLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5IiksTT1mLnRyYWNlSXMoZSwiY29udG91ciIpLFQ9Zi50cmFjZUlzKGUsImhpc3RvZ3JhbSIpLEU9TT8iYmVzdCI6ZS56c21vb3RoO2lmKEEuX21pbkR0aWNrPTAsay5fbWluRHRpY2s9MCx1Lm1hcmtUaW1lKCJkb25lIGNvbnZlcnQgeCZ5IiksVCl7dmFyIEw9ZCh0LGUpO289TC54LGw9TC54MCxjPUwuZHgseT1MLnksYj1MLnkwLHg9TC5keSxfPUwuen1lbHNlIGcoZSkmJnYoZSxBLGspLG89ZS54P0EubWFrZUNhbGNkYXRhKGUsIngiKTpbXSx5PWUueT9rLm1ha2VDYWxjZGF0YShlLCJ5Iik6W10sbD1lLngwfHwwLGM9ZS5keHx8MSxiPWUueTB8fDAseD1lLmR5fHwxLF89bihlKSwoTXx8ZS5jb25uZWN0Z2FwcykmJihlLl9lbXB0eXBvaW50cz1zKF8pLGUuX2ludGVycHo9YShfLGUuX2VtcHR5cG9pbnRzLGUuX2ludGVycHopKTtpZigiZmFzdCI9PT1FKWlmKCJsb2ciPT09QS50eXBlfHwibG9nIj09PWsudHlwZSlyKCJsb2cgYXhpcyBmb3VuZCIpO2Vsc2UgaWYoIVQpe2lmKG8ubGVuZ3RoKXt2YXIgUz0ob1tvLmxlbmd0aC0xXS1vWzBdKS8oby5sZW5ndGgtMSksQz1NYXRoLmFicyhTLzEwMCk7Zm9yKHc9MDt3PG8ubGVuZ3RoLTE7dysrKWlmKE1hdGguYWJzKG9bdysxXS1vW3ddLVMpPkMpe3IoInggc2NhbGUgaXMgbm90IGxpbmVhciIpO2JyZWFrfX1pZih5Lmxlbmd0aCYmImZhc3QiPT09RSl7dmFyIFA9KHlbeS5sZW5ndGgtMV0teVswXSkvKHkubGVuZ3RoLTEpLHo9TWF0aC5hYnMoUC8xMDApO2Zvcih3PTA7dzx5Lmxlbmd0aC0xO3crKylpZihNYXRoLmFicyh5W3crMV0teVt3XS1QKT56KXtyKCJ5IHNjYWxlIGlzIG5vdCBsaW5lYXIiKTticmVha319fXZhciBSPW0oXyksTz0ic2NhbGVkIj09PWUueHR5cGU/IiI6ZS54LEk9aShlLE8sbCxjLFIsQSksTj0ic2NhbGVkIj09PWUueXR5cGU/IiI6ZS55LGo9aShlLE4sYix4LF8ubGVuZ3RoLGspO2guZXhwYW5kKEEsSSksaC5leHBhbmQoayxqKTt2YXIgRj17eDpJLHk6aix6Ol99O2lmKHAoZSxfLCIiLCJ6IiksTSYmZS5jb250b3VycyYmImhlYXRtYXAiPT09ZS5jb250b3Vycy5jb2xvcmluZyl7dmFyIEQ9ImNvbnRvdXIiPT09ZS50eXBlPyJoZWF0bWFwIjoiaGlzdG9ncmFtMmQiO0YueGZpbGw9aShELE8sbCxjLFIsQSksRi55ZmlsbD1pKEQsTixiLHgsXy5sZW5ndGgsayl9cmV0dXJuW0ZdfTt2YXIgeT0uMDEsYj1bWy0xLDBdLFsxLDBdLFswLC0xXSxbMCwxXV19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjMwOCwiLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTMsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4uL2hpc3RvZ3JhbTJkL2NhbGMiOjUwNiwiLi9jb252ZXJ0X2NvbHVtbl94eXoiOjQ4OCwiLi9oYXNfY29sdW1ucyI6NDkwLCIuL21heF9yb3dfbGVuZ3RoIjo0OTMsImZhc3QtaXNudW1lcmljIjo3NH1dLDQ4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGk9dCgiZmFzdC1pc251bWVyaWMiKSxvPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9nZXRfc2NhbGUiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JiYXIvZHJhdyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0udHJhY2UsYz0iY2IiK3IudWlkLHU9cyhyLmNvbG9yc2NhbGUpLGg9ci56bWluLGY9ci56bWF4O2lmKGkoaCl8fChoPW8uYWdnTnVtcyhNYXRoLm1pbixudWxsLHIueikpLGkoZil8fChmPW8uYWdnTnVtcyhNYXRoLm1heCxudWxsLHIueikpLHQuX2Z1bGxMYXlvdXQuX2luZm9sYXllci5zZWxlY3RBbGwoIi4iK2MpLnJlbW92ZSgpLCFyLnNob3dzY2FsZSlyZXR1cm4gdm9pZCBhLmF1dG9NYXJnaW4odCxjKTt2YXIgZD1lWzBdLnQuY2I9bCh0LGMpO2QuZmlsbGNvbG9yKG4uc2NhbGUubGluZWFyKCkuZG9tYWluKHUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBoK3RbMF0qKGYtaCl9KSkucmFuZ2UodS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkpLmZpbGxsZXZlbHMoe3N0YXJ0OmgsZW5kOmYsc2l6ZTooZi1oKS8yNTR9KS5vcHRpb25zKHIuY29sb3JiYXIpKCksby5tYXJrVGltZSgiZG9uZSBjb2xvcmJhciIpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yYmFyL2RyYXciOjMwNCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2dldF9zY2FsZSI6MzEyLCIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNyxkMzo3MCwiZmFzdC1pc251bWVyaWMiOjc0fV0sNDg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGksbz10Lnguc2xpY2UoKSxhPXQueS5zbGljZSgpLHM9dC56LGw9dC50ZXh0LGM9TWF0aC5taW4oby5sZW5ndGgsYS5sZW5ndGgscy5sZW5ndGgpLHU9dm9pZCAwIT09bCYmIUFycmF5LmlzQXJyYXkobFswXSk7Zm9yKGM8by5sZW5ndGgmJihvPW8uc2xpY2UoMCxjKSksYzxhLmxlbmd0aCYmKGE9YS5zbGljZSgwLGMpKSxpPTA7Yz5pO2krKylvW2ldPWUuZDJjKG9baV0pLGFbaV09ci5kMmMoYVtpXSk7dmFyIGgsZixkLHA9bi5kaXN0aW5jdFZhbHMobyksZz1wLnZhbHMsdj1uLmRpc3RpbmN0VmFscyhhKSxtPXYudmFscyx5PW4uaW5pdDJkQXJyYXkobS5sZW5ndGgsZy5sZW5ndGgpO2Zvcih1JiYoZD1uLmluaXQyZEFycmF5KG0ubGVuZ3RoLGcubGVuZ3RoKSksaT0wO2M+aTtpKyspaD1uLmZpbmRCaW4ob1tpXStwLm1pbkRpZmYvMixnKSxmPW4uZmluZEJpbihhW2ldK3YubWluRGlmZi8yLG0pLHlbZl1baF09c1tpXSx1JiYoZFtmXVtoXT1sW2ldKTt0Lng9Zyx0Lnk9bSx0Lno9eSx1JiYodC50ZXh0PWQpfX0seyIuLi8uLi9saWIiOjM3M31dLDQ4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vaGFzX2NvbHVtbnMiKSxvPXQoIi4veHl6X2RlZmF1bHRzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiBjKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsaSl9dmFyIHU9byh0LGUsYyk7cmV0dXJuIHU/KGMoInRleHQiKSxjKCJ6c21vb3RoIiksYygiY29ubmVjdGdhcHMiLGkoZSkmJmUuenNtb290aCE9PSExKSx2b2lkIGEodCxlLGwsYyx7cHJlZml4OiIiLGNMZXR0ZXI6InoifSkpOnZvaWQoZS52aXNpYmxlPSExKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjozMTAsIi4uLy4uL2xpYiI6MzczLCIuL2F0dHJpYnV0ZXMiOjQ4NSwiLi9oYXNfY29sdW1ucyI6NDkwLCIuL3h5el9kZWZhdWx0cyI6NDk2fV0sNDkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hQXJyYXkuaXNBcnJheSh0LnpbMF0pfX0se31dLDQ5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiKSxpPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvLGEpe2lmKCEodC5kaXN0YW5jZTxuLk1BWERJU1QpKXt2YXIgcyxsLGMsdSxoPXQuY2RbMF0sZj1oLnRyYWNlLGQ9dC54YSxwPXQueWEsZz1oLngsdj1oLnksbT1oLnoseT1oLnptYXNrLGI9Zyx4PXY7aWYodC5pbmRleCE9PSExKXt0cnl7Yz1NYXRoLnJvdW5kKHQuaW5kZXhbMV0pLHU9TWF0aC5yb3VuZCh0LmluZGV4WzBdKX1jYXRjaChfKXtyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygiRXJyb3IgaG92ZXJpbmcgb24gaGVhdG1hcCwgcG9pbnROdW1iZXIgbXVzdCBiZSBbcm93LGNvbF0sIGZvdW5kOiIsdC5pbmRleCl9aWYoMD5jfHxjPj1tWzBdLmxlbmd0aHx8MD51fHx1Pm0ubGVuZ3RoKXJldHVybn1lbHNle2lmKG4uaW5ib3goZS1nWzBdLGUtZ1tnLmxlbmd0aC0xXSk+bi5NQVhESVNUfHxuLmluYm94KHItdlswXSxyLXZbdi5sZW5ndGgtMV0pPm4uTUFYRElTVClyZXR1cm47aWYoYSl7dmFyIHc7Zm9yKGI9WzIqZ1swXS1nWzFdXSx3PTE7dzxnLmxlbmd0aDt3KyspYi5wdXNoKChnW3ddK2dbdy0xXSkvMik7Zm9yKGIucHVzaChbMipnW2cubGVuZ3RoLTFdLWdbZy5sZW5ndGgtMl1dKSx4PVsyKnZbMF0tdlsxXV0sdz0xO3c8di5sZW5ndGg7dysrKXgucHVzaCgodlt3XSt2W3ctMV0pLzIpO3gucHVzaChbMip2W3YubGVuZ3RoLTFdLXZbdi5sZW5ndGgtMl1dKX1jPU1hdGgubWF4KDAsTWF0aC5taW4oYi5sZW5ndGgtMixpLmZpbmRCaW4oZSxiKSkpLHU9TWF0aC5tYXgoMCxNYXRoLm1pbih4Lmxlbmd0aC0yLGkuZmluZEJpbihyLHgpKSl9dmFyIEE9ZC5jMnAoZ1tjXSksaz1kLmMycChnW2MrMV0pLE09cC5jMnAodlt1XSksVD1wLmMycCh2W3UrMV0pO2E/KGs9QSxzPWdbY10sVD1NLGw9dlt1XSk6KHM9KGdbY10rZ1tjKzFdKS8yLGw9KHZbdV0rdlt1KzFdKS8yLGYuenNtb290aCYmKEE9az0oQStrKS8yLE09VD0oTStUKS8yKSk7dmFyIEU9bVt1XVtjXTt5JiYheVt1XVtjXSYmKEU9dm9pZCAwKTt2YXIgTDtyZXR1cm4gQXJyYXkuaXNBcnJheShmLnRleHQpJiZBcnJheS5pc0FycmF5KGYudGV4dFt1XSkmJihMPWYudGV4dFt1XVtjXSksW2kuZXh0ZW5kRmxhdCh0LHtpbmRleDpbdSxjXSxkaXN0YW5jZTpuLk1BWERJU1QrMTAseDA6QSx4MTprLHkwOk0seTE6VCx4TGFiZWxWYWw6cyx5TGFiZWxWYWw6bCx6TGFiZWxWYWw6RSx0ZXh0Okx9KV19fX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IjozOTh9XSw0OTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uY2FsYz10KCIuL2NhbGMiKSxuLnBsb3Q9dCgiLi9wbG90Iiksbi5jb2xvcmJhcj10KCIuL2NvbG9yYmFyIiksbi5zdHlsZT10KCIuL3N0eWxlIiksbi5ob3ZlclBvaW50cz10KCIuL2hvdmVyIiksbi5tb2R1bGVUeXBlPSJ0cmFjZSIsbi5uYW1lPSJoZWF0bWFwIixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLG4uY2F0ZWdvcmllcz1bImNhcnRlc2lhbiIsIjJkTWFwIl0sbi5tZXRhPXt9LGUuZXhwb3J0cz1ufSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Mzk5LCIuL2F0dHJpYnV0ZXMiOjQ4NSwiLi9jYWxjIjo0ODYsIi4vY29sb3JiYXIiOjQ4NywiLi9kZWZhdWx0cyI6NDg5LCIuL2hvdmVyIjo0OTEsIi4vcGxvdCI6NDk0LCIuL3N0eWxlIjo0OTV9XSw0OTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3RoO3IrKyllPU1hdGgubWF4KGUsdFtyXS5sZW5ndGgpO3JldHVybiBlfX0se31dLDQ5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9ZS5sZW5ndGgtMixuPWEuY29uc3RyYWluKGEuZmluZEJpbih0LGUpLDAsciksaT1lW25dLG89ZVtuKzFdLHM9YS5jb25zdHJhaW4obisodC1pKS8oby1pKS0uNSwwLHIpLGw9TWF0aC5yb3VuZChzKSxjPU1hdGguYWJzKHMtbCk7cmV0dXJuIHMmJnMhPT1yJiZjP3tiaW4wOmwsZnJhYzpjLGJpbjE6TWF0aC5yb3VuZChsK2MvKHMtbCkpfTp7YmluMDpsLGJpbjE6bCxmcmFjOjB9fWZ1bmN0aW9uIGgodCxlKXtpZih2b2lkIDAhPT10KXt2YXIgcj1YKCh0LUUpLyhMLUUpKTtyZXR1cm4gclswXT1NYXRoLnJvdW5kKHJbMF0pLHJbMV09TWF0aC5yb3VuZChyWzFdKSxyWzJdPU1hdGgucm91bmQoclsyXSksaXQrPWUsb3QrPXJbMF0qZSxhdCs9clsxXSplLHN0Kz1yWzJdKmUscn1yZXR1cm5bMCwwLDAsMF19ZnVuY3Rpb24gZih0LGUscil7dFtlXT1yWzBdLHRbZSsxXT1yWzFdLHRbZSsyXT1yWzJdLHRbZSszXT1NYXRoLnJvdW5kKDI1NSpyWzNdKX1mdW5jdGlvbiBkKHQsZSxyLG4pe3ZhciBpPXRbci5iaW4wXTtpZih2b2lkIDA9PT1pKXJldHVybiBoKHZvaWQgMCwxKTt2YXIgbyxhPXRbci5iaW4xXSxzPWVbci5iaW4wXSxsPWVbci5iaW4xXSxjPWEtaXx8MCx1PXMtaXx8MDtyZXR1cm4gbz12b2lkIDA9PT1hP3ZvaWQgMD09PWw/MDp2b2lkIDA9PT1zPzIqKGwtaSk6MiooMipsLXMtaSkvMzp2b2lkIDA9PT1sP3ZvaWQgMD09PXM/MDoyKigyKmktYS1zKS8zOnZvaWQgMD09PXM/MiooMipsLWEtaSkvMzpsK2ktYS1zLGgoaStyLmZyYWMqYytuLmZyYWMqKHUrci5mcmFjKm8pKX1hLm1hcmtUaW1lKCJpbiBIZWF0bWFwLnBsb3QiKTt2YXIgcD1yWzBdLnRyYWNlLGc9cC51aWQsdj1lLngoKSxtPWUueSgpLHk9dC5fZnVsbExheW91dCxiPSJobSIrZztpZih5Ll9wYXBlci5zZWxlY3RBbGwoIi5jb250b3VyIitnKS5yZW1vdmUoKSxwLnZpc2libGUhPT0hMClyZXR1cm4geS5fcGFwZXIuc2VsZWN0QWxsKCIuIitiKS5yZW1vdmUoKSx2b2lkIHkuX2luZm9sYXllci5zZWxlY3RBbGwoIi5jYiIrZykucmVtb3ZlKCk7dmFyIHgsXyx3LEEsayxNLFQ9clswXS56LEU9cC56bWluLEw9cC56bWF4LFM9bChwLmNvbG9yc2NhbGUpLEM9clswXS54LFA9clswXS55LHo9cy50cmFjZUlzKHAsImNvbnRvdXIiKSxSPXo/ImJlc3QiOnAuenNtb290aCxPPVQubGVuZ3RoLEk9dShUKSxOPSExLGo9ITE7Zm9yKE09MDt2b2lkIDA9PT14JiZNPEMubGVuZ3RoLTE7KXg9di5jMnAoQ1tNXSksTSsrO2ZvcihNPUMubGVuZ3RoLTE7dm9pZCAwPT09XyYmTT4wOylfPXYuYzJwKENbTV0pLE0tLTtmb3IoeD5fJiYodz1fLF89eCx4PXcsTj0hMCksTT0wO3ZvaWQgMD09PUEmJk08UC5sZW5ndGgtMTspQT1tLmMycChQW01dKSxNKys7Zm9yKE09UC5sZW5ndGgtMTt2b2lkIDA9PT1rJiZNPjA7KWs9bS5jMnAoUFtNXSksTS0tO2lmKEE+ayYmKHc9QSxBPWssaz13LGo9ITApLHomJihDPXJbMF0ueGZpbGwsUD1yWzBdLnlmaWxsKSwiZmFzdCIhPT1SKXt2YXIgRj0iYmVzdCI9PT1SPzA6LjU7eD1NYXRoLm1heCgtRip2Ll9sZW5ndGgseCksXz1NYXRoLm1pbigoMStGKSp2Ll9sZW5ndGgsXyksQT1NYXRoLm1heCgtRiptLl9sZW5ndGgsQSksaz1NYXRoLm1pbigoMStGKSptLl9sZW5ndGgsayl9dmFyIEQ9TWF0aC5yb3VuZChfLXgpLEI9TWF0aC5yb3VuZChrLUEpO2lmKCEoMD49RHx8MD49Qikpe3ZhciBVLFY7ImZhc3QiPT09Uj8oVT1JLFY9Tyk6KFU9RCxWPUIpO3ZhciBxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Eud2lkdGg9VSxxLmhlaWdodD1WO3ZhciBILEcsWT1xLmdldENvbnRleHQoIjJkIiksWD1pLnNjYWxlLmxpbmVhcigpLmRvbWFpbihTLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFswXX0pKS5yYW5nZShTLm1hcChmdW5jdGlvbih0KXt2YXIgZT1vKHRbMV0pLnRvUmdiKCk7cmV0dXJuW2UucixlLmcsZS5iLGUuYV19KSkuY2xhbXAoITApOyJmYXN0Ij09PVI/KEg9Tj9mdW5jdGlvbih0KXtyZXR1cm4gSS0xLXR9OmEuaWRlbnRpdHksRz1qP2Z1bmN0aW9uKHQpe3JldHVybiBPLTEtdH06YS5pZGVudGl0eSk6KEg9ZnVuY3Rpb24odCl7cmV0dXJuIGEuY29uc3RyYWluKE1hdGgucm91bmQodi5jMnAoQ1t0XSkteCksMCxEKX0sRz1mdW5jdGlvbih0KXtyZXR1cm4gYS5jb25zdHJhaW4oTWF0aC5yb3VuZChtLmMycChQW3RdKS1BKSwwLEIpfSk7dmFyIFcsWiwkLEssUSxKLHR0PUcoMCksZXQ9W3R0LHR0XSxydD1OPzA6MSxudD1qPzA6MSxpdD0wLG90PTAsYXQ9MCxzdD0wO2lmKGEubWFya1RpbWUoImRvbmUgaW5pdCBwbmciKSxSKXt2YXIgbHQ9MCxjdD1uZXcgVWludDhBcnJheShEKkIqNCk7aWYoImJlc3QiPT09Uil7dmFyIHV0LGh0LGZ0LGR0PW5ldyBBcnJheShDLmxlbmd0aCkscHQ9bmV3IEFycmF5KFAubGVuZ3RoKSxndD1uZXcgQXJyYXkoRCk7Zm9yKE09MDtNPEMubGVuZ3RoO00rKylkdFtNXT1NYXRoLnJvdW5kKHYuYzJwKENbTV0pLXgpO2ZvcihNPTA7TTxQLmxlbmd0aDtNKyspcHRbTV09TWF0aC5yb3VuZChtLmMycChQW01dKS1BKTtmb3IoTT0wO0Q+TTtNKyspZ3RbTV09bihNLGR0KTtmb3IoWj0wO0I+WjtaKyspZm9yKHV0PW4oWixwdCksaHQ9VFt1dC5iaW4wXSxmdD1UW3V0LmJpbjFdLE09MDtEPk07TSsrLGx0Kz00KUo9ZChodCxmdCxndFtNXSx1dCksZihjdCxsdCxKKX1lbHNlIGZvcihaPTA7Tz5aO1orKylmb3IoUT1UW1pdLGV0PUcoWiksTT0wO0k+TTtNKyspSj1oKFFbTV0sMSksbHQ9NCooZXQqRCtIKE0pKSxmKGN0LGx0LEopO3ZhciB2dD1ZLmNyZWF0ZUltYWdlRGF0YShELEIpO3Z0LmRhdGEuc2V0KGN0KSxZLnB1dEltYWdlRGF0YSh2dCwwLDApfWVsc2UgZm9yKFo9MDtPPlo7WisrKWlmKFE9VFtaXSxldC5yZXZlcnNlKCksZXRbbnRdPUcoWisxKSxldFswXSE9PWV0WzFdJiZ2b2lkIDAhPT1ldFswXSYmdm9pZCAwIT09ZXRbMV0pZm9yKCQ9SCgwKSxXPVskLCRdLE09MDtJPk07TSsrKVcucmV2ZXJzZSgpLFdbcnRdPUgoTSsxKSxXWzBdIT09V1sxXSYmdm9pZCAwIT09V1swXSYmdm9pZCAwIT09V1sxXSYmKEs9UVtNXSxKPWgoSywoV1sxXS1XWzBdKSooZXRbMV0tZXRbMF0pKSxZLmZpbGxTdHlsZT0icmdiYSgiK0ouam9pbigiLCIpKyIpIixZLmZpbGxSZWN0KFdbMF0sZXRbMF0sV1sxXS1XWzBdLGV0WzFdLWV0WzBdKSk7YS5tYXJrVGltZSgiZG9uZSBmaWxsaW5nIHBuZyIpLG90PU1hdGgucm91bmQob3QvaXQpLGF0PU1hdGgucm91bmQoYXQvaXQpLHN0PU1hdGgucm91bmQoc3QvaXQpO3ZhciBtdD1vKCJyZ2IoIitvdCsiLCIrYXQrIiwiK3N0KyIpIik7dC5faG1waXhjb3VudD0odC5faG1waXhjb3VudHx8MCkraXQsdC5faG1sdW1jb3VudD0odC5faG1sdW1jb3VudHx8MCkraXQqbXQuZ2V0THVtaW5hbmNlKCk7dmFyIHl0PWUucGxvdC5zZWxlY3QoIi5pbWFnZWxheWVyIikuc2VsZWN0QWxsKCJnLmhtLiIrYikuZGF0YShbMF0pO3l0LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiaG0iLCEwKS5jbGFzc2VkKGIsITApLHl0LmV4aXQoKS5yZW1vdmUoKTt2YXIgYnQ9eXQuc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEocik7YnQuZW50ZXIoKS5hcHBlbmQoInN2ZzppbWFnZSIpLGJ0LmV4aXQoKS5yZW1vdmUoKSxidC5hdHRyKHt4bWxuczpjLnN2ZywieGxpbms6aHJlZiI6cS50b0RhdGFVUkwoImltYWdlL3BuZyIpLGhlaWdodDpCLHdpZHRoOkQseDp4LHk6QSxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pLGEubWFya1RpbWUoImRvbmUgc2hvd2luZyBwbmciKX19dmFyIGk9dCgiZDMiKSxvPXQoInRpbnljb2xvcjIiKSxhPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9nZXRfc2NhbGUiKSxjPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIiksdT10KCIuL21heF9yb3dfbGVuZ3RoIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXsKZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspbih0LGUscltpXSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9nZXRfc2NhbGUiOjMxMiwiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjM2MiwiLi4vLi4vbGliIjozNzMsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo0MzcsIi4vbWF4X3Jvd19sZW5ndGgiOjQ5MyxkMzo3MCx0aW55Y29sb3IyOjIzMX1dLDQ5NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtuLnNlbGVjdCh0KS5zZWxlY3RBbGwoImltYWdlIikuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyYWNlLm9wYWNpdHl9KX19LHtkMzo3MH1dLDQ5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9ZSh0KSxuPXI/ZSh0KyJ0eXBlIiwiYXJyYXkiKToic2NhbGVkIjtyZXR1cm4ic2NhbGVkIj09PW4mJihlKHQrIjAiKSxlKCJkIit0KSkscn1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZSxyPSEwLG49ITEsaT0hMSxhPTA7YTx0Lmxlbmd0aDthKyspe2lmKGU9dFthXSwhQXJyYXkuaXNBcnJheShlKSl7cj0hMTticmVha31lLmxlbmd0aD4wJiYobj0hMCk7Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspaWYobyhlW3NdKSl7aT0hMDticmVha319cmV0dXJuIHImJm4mJml9dmFyIG89dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4vaGFzX2NvbHVtbnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvLHMsbD1yKCJ6Iik7aWYodm9pZCAwPT09bHx8IWwubGVuZ3RoKXJldHVybiAwO2lmKGEodCkpe2lmKG89cigieCIpLHM9cigieSIpLCFvfHwhcylyZXR1cm4gMH1lbHNle2lmKG89bigieCIscikscz1uKCJ5IixyKSwhaShsKSlyZXR1cm4gMDtyKCJ0cmFuc3Bvc2UiKX1yZXR1cm4gZS56Lmxlbmd0aH19LHsiLi9oYXNfY29sdW1ucyI6NDkwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw0OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm57c3RhcnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsfSxlbmQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsfSxzaXplOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MX19fXZhciBpPXQoIi4uL2Jhci9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9saWIiKS5leHRlbmRGbGF0LGE9aS5tYXJrZXIscz1hLmxpbmU7ZS5leHBvcnRzPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHRleHQ6aS50ZXh0LG9yaWVudGF0aW9uOmkub3JpZW50YXRpb24saGlzdGZ1bmM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNvdW50Iiwic3VtIiwiYXZnIiwibWluIiwibWF4Il0sZGZsdDoiY291bnQifSxoaXN0bm9ybTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiIiwicGVyY2VudCIsInByb2JhYmlsaXR5IiwiZGVuc2l0eSIsInByb2JhYmlsaXR5IGRlbnNpdHkiXSxkZmx0OiIifSxhdXRvYmlueDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sbmJpbnN4Ont2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjB9LHhiaW5zOm4oIngiKSxhdXRvYmlueTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sbmJpbnN5Ont2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjB9LHliaW5zOm4oInkiKSxtYXJrZXI6e2NvbG9yOmEuY29sb3IsY29sb3JzY2FsZTphLmNvbG9yc2NhbGUsY2F1dG86YS5jYXV0byxjbWF4OmEuY21heCxjbWluOmEuY21pbixhdXRvY29sb3JzY2FsZTphLmF1dG9jb2xvcnNjYWxlLHJldmVyc2VzY2FsZTphLnJldmVyc2VzY2FsZSxzaG93c2NhbGU6YS5zaG93c2NhbGUsbGluZTp7Y29sb3I6cy5jb2xvcixjb2xvcnNjYWxlOnMuY29sb3JzY2FsZSxjYXV0bzpzLmNhdXRvLGNtYXg6cy5jbWF4LGNtaW46cy5jbWluLGF1dG9jb2xvcnNjYWxlOnMuYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOnMucmV2ZXJzZXNjYWxlLHdpZHRoOm8oe30scy53aWR0aCx7ZGZsdDowfSl9fSxfbmVzdGVkTW9kdWxlczp7ZXJyb3JfeToiRXJyb3JCYXJzIixlcnJvcl94OiJFcnJvckJhcnMiLCJtYXJrZXIuY29sb3JiYXIiOiJDb2xvcmJhciJ9LF9kZXByZWNhdGVkOntiYXJkaXI6aS5fZGVwcmVjYXRlZC5iYXJkaXJ9fX0seyIuLi8uLi9saWIiOjM3MywiLi4vYmFyL2F0dHJpYnV0ZXMiOjQ0OX1dLDQ5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj0wLGk9MDtyPmk7aSsrKWVbaV0/KHRbaV0vPWVbaV0sbis9dFtpXSk6dFtpXT1udWxsO3JldHVybiBufX0se31dLDQ5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHIoImhpc3Rub3JtIiksbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXIodCsiYmlucy5zdGFydCIpLG49cih0KyJiaW5zLmVuZCIpLGk9cigiYXV0b2JpbiIrdCwhKGUmJm4pKTtyKGk/Im5iaW5zIit0OnQrImJpbnMuc2l6ZSIpfSksZX19LHt9XSw1MDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKTtlLmV4cG9ydHM9e2NvdW50OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gclt0XSsrLDF9LHN1bTpmdW5jdGlvbih0LGUscixpKXt2YXIgbz1pW2VdO3JldHVybiBuKG8pPyhvPU51bWJlcihvKSxyW3RdKz1vLG8pOjB9LGF2ZzpmdW5jdGlvbih0LGUscixpLG8pe3ZhciBhPWlbZV07cmV0dXJuIG4oYSkmJihhPU51bWJlcihhKSxyW3RdKz1hLG9bdF0rKyksMH0sbWluOmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPWlbZV07aWYobihvKSl7aWYobz1OdW1iZXIobyksIW4oclt0XSkpcmV0dXJuIHJbdF09byxvO2lmKHJbdF0+bylyZXR1cm4gclt0XT1vLG8tclt0XX1yZXR1cm4gMH0sbWF4OmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPWlbZV07aWYobihvKSl7aWYobz1OdW1iZXIobyksIW4oclt0XSkpcmV0dXJuIHJbdF09byxvO2lmKHJbdF08bylyZXR1cm4gclt0XT1vLG8tclt0XX1yZXR1cm4gMH19fSx7ImZhc3QtaXNudW1lcmljIjo3NH1dLDUwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi9iaW5fZnVuY3Rpb25zIikscz10KCIuL25vcm1fZnVuY3Rpb25zIiksbD10KCIuL2F2ZXJhZ2UiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihlLnZpc2libGU9PT0hMCl7dmFyIHIsYz1bXSx1PVtdLGg9by5nZXRGcm9tSWQodCwiaCI9PT1lLm9yaWVudGF0aW9uP2UueWF4aXN8fCJ5IjplLnhheGlzfHwieCIpLGY9ImgiPT09ZS5vcmllbnRhdGlvbj8ieSI6IngiLGQ9e3g6InkiLHk6IngifVtmXSxwPWgubWFrZUNhbGNkYXRhKGUsZik7ZVsiYXV0b2JpbiIrZl09PT0hMSYmZisiYmlucyJpbiBlfHwoZVtmKyJiaW5zIl09by5hdXRvQmluKHAsaCxlWyJuYmlucyIrZl0pLGUuX2lucHV0W2YrImJpbnMiXT1lW2YrImJpbnMiXSk7dmFyIGcsdixtLHksYj1lW2YrImJpbnMiXSx4PSJzdHJpbmciPT10eXBlb2YgYi5zaXplLF89eD9bXTpiLHc9W10sQT1bXSxrPTAsTT1lLmhpc3Rub3JtLFQ9ZS5oaXN0ZnVuYyxFPS0xIT09TS5pbmRleE9mKCJkZW5zaXR5IiksTD0ibWF4Ij09PVR8fCJtaW4iPT09VCxTPUw/bnVsbDowLEM9YS5jb3VudCxQPXNbTV0sej0hMTtmb3IoQXJyYXkuaXNBcnJheShlW2RdKSYmImNvdW50IiE9PVQmJih5PWVbZF0sej0iYXZnIj09PVQsQz1hW1RdKSxyPWIuc3RhcnQsdj1iLmVuZCsoYi5zdGFydC1vLnRpY2tJbmNyZW1lbnQoYi5zdGFydCxiLnNpemUpKS8xZTY7dj5yJiZjLmxlbmd0aDw1ZTM7KWc9by50aWNrSW5jcmVtZW50KHIsYi5zaXplKSxjLnB1c2goKHIrZykvMiksdS5wdXNoKFMpLHgmJl8ucHVzaChyKSxFJiZ3LnB1c2goMS8oZy1yKSkseiYmQS5wdXNoKDApLHI9Zzt2YXIgUj11Lmxlbmd0aDtmb3Iocj0wO3I8cC5sZW5ndGg7cisrKW09aS5maW5kQmluKHBbcl0sXyksbT49MCYmUj5tJiYoays9QyhtLHIsdSx5LEEpKTt6JiYoaz1sKHUsQSkpLFAmJlAodSxrLHcpO3ZhciBPPU1hdGgubWluKGMubGVuZ3RoLHUubGVuZ3RoKSxJPVtdLE49MCxqPU8tMTtmb3Iocj0wO08+cjtyKyspaWYodVtyXSl7Tj1yO2JyZWFrfWZvcihyPU8tMTtyPk47ci0tKWlmKHVbcl0pe2o9cjticmVha31mb3Iocj1OO2o+PXI7cisrKW4oY1tyXSkmJm4odVtyXSkmJkkucHVzaCh7cDpjW3JdLHM6dVtyXSxiOjB9KTtyZXR1cm4gSX19fSx7Ii4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6MzkzLCIuL2F2ZXJhZ2UiOjQ5OCwiLi9iaW5fZnVuY3Rpb25zIjo1MDAsIi4vbm9ybV9mdW5jdGlvbnMiOjUwNCwiZmFzdC1pc251bWVyaWMiOjc0fV0sNTAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgiLi9iaW5fZGVmYXVsdHMiKSxhPXQoIi4uL2Jhci9zdHlsZV9kZWZhdWx0cyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMvZGVmYXVsdHMiKSxsPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixjKXtmdW5jdGlvbiB1KHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLHIsaSl9dmFyIGg9dSgieCIpLGY9dSgieSIpO3UoInRleHQiKTt2YXIgZD11KCJvcmllbnRhdGlvbiIsZiYmIWg/ImgiOiJ2IikscD1lWyJ2Ij09PWQ/IngiOiJ5Il07aWYoIXB8fCFwLmxlbmd0aClyZXR1cm4gdm9pZChlLnZpc2libGU9ITEpO3ZhciBnPWVbImgiPT09ZD8ieCI6InkiXTtnJiZ1KCJoaXN0ZnVuYyIpO3ZhciB2PSJoIj09PWQ/WyJ5Il06WyJ4Il07byh0LGUsdSx2KSxhKHQsZSx1LHIsYykscyh0LGUsaS5kZWZhdWx0TGluZSx7YXhpczoieSJ9KSxzKHQsZSxpLmRlZmF1bHRMaW5lLHtheGlzOiJ4Iixpbmhlcml0OiJ5In0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozMDEsIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzL2RlZmF1bHRzIjozMjQsIi4uLy4uL2xpYiI6MzczLCIuLi9iYXIvc3R5bGVfZGVmYXVsdHMiOjQ1OSwiLi9hdHRyaWJ1dGVzIjo0OTcsIi4vYmluX2RlZmF1bHRzIjo0OTl9XSw1MDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4ubGF5b3V0QXR0cmlidXRlcz10KCIuLi9iYXIvbGF5b3V0X2F0dHJpYnV0ZXMiKSxuLnN1cHBseURlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLnN1cHBseUxheW91dERlZmF1bHRzPXQoIi4uL2Jhci9sYXlvdXRfZGVmYXVsdHMiKSxuLmNhbGM9dCgiLi9jYWxjIiksbi5zZXRQb3NpdGlvbnM9dCgiLi4vYmFyL3NldF9wb3NpdGlvbnMiKSxuLnBsb3Q9dCgiLi4vYmFyL3Bsb3QiKSxuLnN0eWxlPXQoIi4uL2Jhci9zdHlsZSIpLG4uY29sb3JiYXI9dCgiLi4vc2NhdHRlci9jb2xvcmJhciIpLG4uaG92ZXJQb2ludHM9dCgiLi4vYmFyL2hvdmVyIiksbi5tb2R1bGVUeXBlPSJ0cmFjZSIsbi5uYW1lPSJoaXN0b2dyYW0iLG4uYmFzZVBsb3RNb2R1bGU9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksbi5jYXRlZ29yaWVzPVsiY2FydGVzaWFuIiwiYmFyIiwiaGlzdG9ncmFtIiwib3JpZW50ZWQiLCJlcnJvckJhcnNPSyIsInNob3dMZWdlbmQiXSxuLm1ldGE9e30sZS5leHBvcnRzPW59LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjozOTksIi4uL2Jhci9ob3ZlciI6NDUyLCIuLi9iYXIvbGF5b3V0X2F0dHJpYnV0ZXMiOjQ1NCwiLi4vYmFyL2xheW91dF9kZWZhdWx0cyI6NDU1LCIuLi9iYXIvcGxvdCI6NDU2LCIuLi9iYXIvc2V0X3Bvc2l0aW9ucyI6NDU3LCIuLi9iYXIvc3R5bGUiOjQ1OCwiLi4vc2NhdHRlci9jb2xvcmJhciI6NTMxLCIuL2F0dHJpYnV0ZXMiOjQ5NywiLi9jYWxjIjo1MDEsIi4vZGVmYXVsdHMiOjUwMn1dLDUwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3BlcmNlbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj0xMDAvZSxpPTA7cj5pO2krKyl0W2ldKj1ufSxwcm9iYWJpbGl0eTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPTA7cj5uO24rKyl0W25dLz1lfSxkZW5zaXR5OmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXQubGVuZ3RoO249bnx8MTtmb3IodmFyIG89MDtpPm87bysrKXRbb10qPXJbb10qbn0sInByb2JhYmlsaXR5IGRlbnNpdHkiOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXQubGVuZ3RoO24mJihlLz1uKTtmb3IodmFyIG89MDtpPm87bysrKXRbb10qPXJbb10vZX19fSx7fV0sNTA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hpc3RvZ3JhbS9hdHRyaWJ1dGVzIiksaT10KCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e3g6bi54LHk6bi55LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSxtYXJrZXI6e2NvbG9yOnt2YWxUeXBlOiJkYXRhX2FycmF5In19LGhpc3Rub3JtOm4uaGlzdG5vcm0saGlzdGZ1bmM6bi5oaXN0ZnVuYyxhdXRvYmlueDpuLmF1dG9iaW54LG5iaW5zeDpuLm5iaW5zeCx4YmluczpuLnhiaW5zLGF1dG9iaW55Om4uYXV0b2JpbnksbmJpbnN5Om4ubmJpbnN5LHliaW5zOm4ueWJpbnMsemF1dG86aS56YXV0byx6bWluOmkuem1pbix6bWF4Omkuem1heCxjb2xvcnNjYWxlOmkuY29sb3JzY2FsZSxhdXRvY29sb3JzY2FsZTppLmF1dG9jb2xvcnNjYWxlLHJldmVyc2VzY2FsZTppLnJldmVyc2VzY2FsZSxzaG93c2NhbGU6aS5zaG93c2NhbGUsenNtb290aDppLnpzbW9vdGgsX25lc3RlZE1vZHVsZXM6e2NvbG9yYmFyOiJDb2xvcmJhciJ9fX0seyIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiOjQ4NSwiLi4vaGlzdG9ncmFtL2F0dHJpYnV0ZXMiOjQ5N31dLDUwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi9oaXN0b2dyYW0vYmluX2Z1bmN0aW9ucyIpLGE9dCgiLi4vaGlzdG9ncmFtL25vcm1fZnVuY3Rpb25zIikscz10KCIuLi9oaXN0b2dyYW0vYXZlcmFnZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGwsYyx1LGgsZixkPWkuZ2V0RnJvbUlkKHQsZS54YXhpc3x8IngiKSxwPWUueD9kLm1ha2VDYWxjZGF0YShlLCJ4Iik6W10sZz1pLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5Iiksdj1lLnk/Zy5tYWtlQ2FsY2RhdGEoZSwieSIpOltdLG09TWF0aC5taW4ocC5sZW5ndGgsdi5sZW5ndGgpO3AubGVuZ3RoPm0mJnAuc3BsaWNlKG0scC5sZW5ndGgtbSksdi5sZW5ndGg+bSYmdi5zcGxpY2UobSx2Lmxlbmd0aC1tKSxuLm1hcmtUaW1lKCJkb25lIGNvbnZlcnQgZGF0YSIpLCFlLmF1dG9iaW54JiYieGJpbnMiaW4gZXx8KGUueGJpbnM9aS5hdXRvQmluKHAsZCxlLm5iaW5zeCwiMmQiKSwiaGlzdG9ncmFtMmRjb250b3VyIj09PWUudHlwZSYmKGUueGJpbnMuc3RhcnQtPWUueGJpbnMuc2l6ZSxlLnhiaW5zLmVuZCs9ZS54Ymlucy5zaXplKSxlLl9pbnB1dC54Ymlucz1lLnhiaW5zKSwhZS5hdXRvYmlueSYmInliaW5zImluIGV8fChlLnliaW5zPWkuYXV0b0Jpbih2LGcsZS5uYmluc3ksIjJkIiksImhpc3RvZ3JhbTJkY29udG91ciI9PT1lLnR5cGUmJihlLnliaW5zLnN0YXJ0LT1lLnliaW5zLnNpemUsZS55Ymlucy5lbmQrPWUueWJpbnMuc2l6ZSksZS5faW5wdXQueWJpbnM9ZS55Ymlucyksbi5tYXJrVGltZSgiZG9uZSBhdXRvQmluIiksaD1bXTt2YXIgeSxiLHg9W10sXz1bXSx3PSJzdHJpbmciPT10eXBlb2YgZS54Ymlucy5zaXplP1tdOmUueGJpbnMsQT0ic3RyaW5nIj09dHlwZW9mIGUueGJpbnMuc2l6ZT9bXTplLnliaW5zLGs9MCxNPVtdLFQ9ZS5oaXN0bm9ybSxFPWUuaGlzdGZ1bmMsTD0tMSE9PVQuaW5kZXhPZigiZGVuc2l0eSIpLFM9Im1heCI9PT1FfHwibWluIj09PUUsQz1TP251bGw6MCxQPW8uY291bnQsej1hW1RdLFI9ITEsTz1bXSxJPVtdLE49InoiaW4gZT9lLno6Im1hcmtlciJpbiBlJiZBcnJheS5pc0FycmF5KGUubWFya2VyLmNvbG9yKT9lLm1hcmtlci5jb2xvcjoiIjtOJiYiY291bnQiIT09RSYmKFI9ImF2ZyI9PT1FLFA9b1tFXSk7dmFyIGo9ZS54YmlucyxGPWouZW5kKyhqLnN0YXJ0LWkudGlja0luY3JlbWVudChqLnN0YXJ0LGouc2l6ZSkpLzFlNjtmb3IoZj1qLnN0YXJ0O0Y+ZjtmPWkudGlja0luY3JlbWVudChmLGouc2l6ZSkpeC5wdXNoKEMpLEFycmF5LmlzQXJyYXkodykmJncucHVzaChmKSxSJiZfLnB1c2goMCk7QXJyYXkuaXNBcnJheSh3KSYmdy5wdXNoKGYpO3ZhciBEPXgubGVuZ3RoO2ZvcihyPWUueGJpbnMuc3RhcnQsbD0oZi1yKS9ELHIrPWwvMixqPWUueWJpbnMsRj1qLmVuZCsoai5zdGFydC1pLnRpY2tJbmNyZW1lbnQoai5zdGFydCxqLnNpemUpKS8xZTYsZj1qLnN0YXJ0O0Y+ZjtmPWkudGlja0luY3JlbWVudChmLGouc2l6ZSkpaC5wdXNoKHguY29uY2F0KCkpLEFycmF5LmlzQXJyYXkoQSkmJkEucHVzaChmKSxSJiZNLnB1c2goXy5jb25jYXQoKSk7QXJyYXkuaXNBcnJheShBKSYmQS5wdXNoKGYpO3ZhciBCPWgubGVuZ3RoO2ZvcihjPWUueWJpbnMuc3RhcnQsdT0oZi1jKS9CLGMrPXUvMixMJiYoTz14Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHcpPzEvKHdbZSsxXS13W2VdKToxL2x9KSxJPWgubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoQSk/MS8oQVtlKzFdLUFbZV0pOjEvdX0pKSxuLm1hcmtUaW1lKCJkb25lIG1ha2luZyBiaW5zIiksZj0wO20+ZjtmKyspeT1uLmZpbmRCaW4ocFtmXSx3KSxiPW4uZmluZEJpbih2W2ZdLEEpLHk+PTAmJkQ+eSYmYj49MCYmQj5iJiYoays9UCh5LGYsaFtiXSxOLE1bYl0pKTtpZihSKWZvcihiPTA7Qj5iO2IrKylrKz1zKGhbYl0sTVtiXSk7aWYoeilmb3IoYj0wO0I+YjtiKyspeihoW2JdLGssTyxJW2JdKTtyZXR1cm4gbi5tYXJrVGltZSgiZG9uZSBiaW5uaW5nIikse3g6cCx4MDpyLGR4OmwseTp2LHkwOmMsZHk6dSx6Omh9fX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjM5MywiLi4vaGlzdG9ncmFtL2F2ZXJhZ2UiOjQ5OCwiLi4vaGlzdG9ncmFtL2Jpbl9mdW5jdGlvbnMiOjUwMCwiLi4vaGlzdG9ncmFtL25vcm1fZnVuY3Rpb25zIjo1MDR9XSw1MDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL3NhbXBsZV9kZWZhdWx0cyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksYT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIHMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX1pKHQsZSxzKSxzKCJ6c21vb3RoIiksbyh0LGUscixzLHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjozMTAsIi4uLy4uL2xpYiI6MzczLCIuL2F0dHJpYnV0ZXMiOjUwNSwiLi9zYW1wbGVfZGVmYXVsdHMiOjUwOX1dLDUwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17fTtuLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksbi5zdXBwbHlEZWZhdWx0cz10KCIuL2RlZmF1bHRzIiksbi5jYWxjPXQoIi4uL2hlYXRtYXAvY2FsYyIpLG4ucGxvdD10KCIuLi9oZWF0bWFwL3Bsb3QiKSxuLmNvbG9yYmFyPXQoIi4uL2hlYXRtYXAvY29sb3JiYXIiKSxuLnN0eWxlPXQoIi4uL2hlYXRtYXAvc3R5bGUiKSxuLmhvdmVyUG9pbnRzPXQoIi4uL2hlYXRtYXAvaG92ZXIiKSxuLm1vZHVsZVR5cGU9InRyYWNlIixuLm5hbWU9Imhpc3RvZ3JhbTJkIixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLG4uY2F0ZWdvcmllcz1bImNhcnRlc2lhbiIsIjJkTWFwIiwiaGlzdG9ncmFtIl0sbi5tZXRhPXt9LGUuZXhwb3J0cz1ufSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Mzk5LCIuLi9oZWF0bWFwL2NhbGMiOjQ4NiwiLi4vaGVhdG1hcC9jb2xvcmJhciI6NDg3LCIuLi9oZWF0bWFwL2hvdmVyIjo0OTEsIi4uL2hlYXRtYXAvcGxvdCI6NDk0LCIuLi9oZWF0bWFwL3N0eWxlIjo0OTUsIi4vYXR0cmlidXRlcyI6NTA1LCIuL2RlZmF1bHRzIjo1MDd9XSw1MDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vaGlzdG9ncmFtL2Jpbl9kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9cigieCIpLG89cigieSIpO2lmKCEoaSYmaS5sZW5ndGgmJm8mJm8ubGVuZ3RoKSlyZXR1cm4gdm9pZChlLnZpc2libGU9ITEpO3ZhciBhPXIoInoiKXx8cigibWFya2VyLmNvbG9yIik7YSYmcigiaGlzdGZ1bmMiKTt2YXIgcz1bIngiLCJ5Il07bih0LGUscixzKX19LHsiLi4vaGlzdG9ncmFtL2Jpbl9kZWZhdWx0cyI6NDk5fV0sNTEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hpc3RvZ3JhbTJkL2F0dHJpYnV0ZXMiKSxpPXQoIi4uL2NvbnRvdXIvYXR0cmlidXRlcyIpO2UuZXhwb3J0cz17eDpuLngseTpuLnksejpuLnosbWFya2VyOm4ubWFya2VyLGhpc3Rub3JtOm4uaGlzdG5vcm0saGlzdGZ1bmM6bi5oaXN0ZnVuYyxhdXRvYmlueDpuLmF1dG9iaW54LG5iaW5zeDpuLm5iaW5zeCx4YmluczpuLnhiaW5zLGF1dG9iaW55Om4uYXV0b2JpbnksbmJpbnN5Om4ubmJpbnN5LHliaW5zOm4ueWJpbnMsemF1dG86aS56YXV0byx6bWluOmkuem1pbix6bWF4Omkuem1heCxjb2xvcnNjYWxlOmkuY29sb3JzY2FsZSxhdXRvY29sb3JzY2FsZTppLmF1dG9jb2xvcnNjYWxlLHJldmVyc2VzY2FsZTppLnJldmVyc2VzY2FsZSxzaG93c2NhbGU6aS5zaG93c2NhbGUsYXV0b2NvbnRvdXI6aS5hdXRvY29udG91cixuY29udG91cnM6aS5uY29udG91cnMsY29udG91cnM6aS5jb250b3VycyxsaW5lOmkubGluZSxfbmVzdGVkTW9kdWxlczp7Y29sb3JiYXI6IkNvbG9yYmFyIn19fSx7Ii4uL2NvbnRvdXIvYXR0cmlidXRlcyI6NDc1LCIuLi9oaXN0b2dyYW0yZC9hdHRyaWJ1dGVzIjo1MDV9XSw1MTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9oaXN0b2dyYW0yZC9zYW1wbGVfZGVmYXVsdHMiKSxvPXQoIi4uL2NvbnRvdXIvc3R5bGVfZGVmYXVsdHMiKSxhPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBsKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9aSh0LGUsbCk7dmFyIGM9bi5jb2VyY2UyKHQsZSxhLCJjb250b3Vycy5zdGFydCIpLHU9bi5jb2VyY2UyKHQsZSxhLCJjb250b3Vycy5lbmQiKSxoPWwoImF1dG9jb250b3VyIiwhKGMmJnUpKTtsKGg/Im5jb250b3VycyI6ImNvbnRvdXJzLnNpemUiKSxvKHQsZSxsLHMpfX0seyIuLi8uLi9saWIiOjM3MywiLi4vY29udG91ci9zdHlsZV9kZWZhdWx0cyI6NDg0LCIuLi9oaXN0b2dyYW0yZC9zYW1wbGVfZGVmYXVsdHMiOjUwOSwiLi9hdHRyaWJ1dGVzIjo1MTB9XSw1MTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uY2FsYz10KCIuLi9jb250b3VyL2NhbGMiKSxuLnBsb3Q9dCgiLi4vY29udG91ci9wbG90Iiksbi5zdHlsZT10KCIuLi9jb250b3VyL3N0eWxlIiksbi5jb2xvcmJhcj10KCIuLi9jb250b3VyL2NvbG9yYmFyIiksbi5ob3ZlclBvaW50cz10KCIuLi9jb250b3VyL2hvdmVyIiksbi5tb2R1bGVUeXBlPSJ0cmFjZSIsbi5uYW1lPSJoaXN0b2dyYW0yZGNvbnRvdXIiLG4uYmFzZVBsb3RNb2R1bGU9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksbi5jYXRlZ29yaWVzPVsiY2FydGVzaWFuIiwiMmRNYXAiLCJjb250b3VyIiwiaGlzdG9ncmFtIl0sbi5tZXRhPXt9LGUuZXhwb3J0cz1ufSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Mzk5LCIuLi9jb250b3VyL2NhbGMiOjQ3NiwiLi4vY29udG91ci9jb2xvcmJhciI6NDc3LCIuLi9jb250b3VyL2hvdmVyIjo0NzksIi4uL2NvbnRvdXIvcGxvdCI6NDgyLCIuLi9jb250b3VyL3N0eWxlIjo0ODMsIi4vYXR0cmlidXRlcyI6NTEwLCIuL2RlZmF1bHRzIjo1MTF9XSw1MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxpPXQoIi4uL3N1cmZhY2UvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSxpOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sajp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGs6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSxkZWxhdW5heWF4aXM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIngiLCJ5IiwieiJdLGRmbHQ6InoifSxhbHBoYWh1bGw6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDotMX0saW50ZW5zaXR5Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIn0sdmVydGV4Y29sb3I6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSxmYWNlY29sb3I6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSxvcGFjaXR5Om8oe30saS5vcGFjaXR5KSxmbGF0c2hhZGluZzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sY29udG91cjp7c2hvdzpvKHt9LGkuY29udG91cnMueC5zaG93LHt9KSxjb2xvcjpvKHt9LGkuY29udG91cnMueC5jb2xvciksd2lkdGg6byh7fSxpLmNvbnRvdXJzLngud2lkdGgpfSxjb2xvcnNjYWxlOm4uY29sb3JzY2FsZSxyZXZlcnNlc2NhbGU6bi5yZXZlcnNlc2NhbGUsc2hvd3NjYWxlOm4uc2hvd3NjYWxlLGxpZ2h0aW5nOm8oe30saS5saWdodGluZyksX25lc3RlZE1vZHVsZXM6e2NvbG9yYmFyOiJDb2xvcmJhciJ9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzA3LCIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uL3N1cmZhY2UvYXR0cmlidXRlcyI6NTY0fV0sNTE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMuc2NlbmU9dCx0aGlzLnVpZD1yLHRoaXMubWVzaD1lLHRoaXMubmFtZT0iIix0aGlzLmNvbG9yPSIjZmZmIix0aGlzLmRhdGE9bnVsbCx0aGlzLnNob3dDb250b3VyPSExfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj1jKHRbMV0pLG49ci50b1JnYigpO3JldHVybntpbmRleDplLHJnYjpbbi5yLG4uZyxuLmIsMV19fSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5tYXAoZCl9ZnVuY3Rpb24gYSh0LGUscil7Zm9yKHZhciBuPW5ldyBBcnJheSh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7KytpKW5baV09W3RbaV0sZVtpXSxyW2ldXTtyZXR1cm4gbn1mdW5jdGlvbiBzKHQsZSl7dmFyIHI9dC5nbHBsb3QuZ2wsaT1sKHtnbDpyfSksbz1uZXcgbih0LGksZS51aWQpO3JldHVybiBvLnVwZGF0ZShlKSx0LmdscGxvdC5hZGQoaSksb312YXIgbD10KCJnbC1tZXNoM2QiKSxjPXQoInRpbnljb2xvcjIiKSx1PXQoImRlbGF1bmF5LXRyaWFuZ3VsYXRlIiksaD10KCJhbHBoYS1zaGFwZSIpLGY9dCgiY29udmV4LWh1bGwiKSxkPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSxwPW4ucHJvdG90eXBlO3AuaGFuZGxlUGljaz1mdW5jdGlvbih0KXtpZih0Lm9iamVjdD09PXRoaXMubWVzaCl7dmFyIGU9dC5kYXRhLmluZGV4O3JldHVybiB0LnRyYWNlQ29vcmRpbmF0ZT1bdGhpcy5kYXRhLnhbZV0sdGhpcy5kYXRhLnlbZV0sdGhpcy5kYXRhLnpbZV1dLCEwfX0scC51cGRhdGU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUscil7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0LmQybChlKSpyfSl9dmFyIHI9dGhpcy5zY2VuZSxuPXIuZnVsbFNjZW5lTGF5b3V0O3RoaXMuZGF0YT10O3ZhciBzLGw9YShlKG4ueGF4aXMsdC54LHIuZGF0YVNjYWxlWzBdKSxlKG4ueWF4aXMsdC55LHIuZGF0YVNjYWxlWzFdKSxlKG4uemF4aXMsdC56LHIuZGF0YVNjYWxlWzJdKSk7aWYodC5pJiZ0LmomJnQuaylzPWEodC5pLHQuaix0LmspO2Vsc2UgaWYoMD09PXQuYWxwaGFodWxsKXM9ZihsKTtlbHNlIGlmKHQuYWxwaGFodWxsPjApcz1oKHQuYWxwaGFodWxsLGwpO2Vsc2V7dmFyIGM9WyJ4IiwieSIsInoiXS5pbmRleE9mKHQuZGVsYXVuYXlheGlzKTtzPXUobC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RbKGMrMSklM10sdFsoYysyKSUzXV19KSl9dmFyIHA9e3Bvc2l0aW9uczpsLGNlbGxzOnMsYW1iaWVudDp0LmxpZ2h0aW5nLmFtYmllbnQsZGlmZnVzZTp0LmxpZ2h0aW5nLmRpZmZ1c2Usc3BlY3VsYXI6dC5saWdodGluZy5zcGVjdWxhcixyb3VnaG5lc3M6dC5saWdodGluZy5yb3VnaG5lc3MsZnJlc25lbDp0LmxpZ2h0aW5nLmZyZXNuZWwsb3BhY2l0eTp0Lm9wYWNpdHksY29udG91ckVuYWJsZTp0LmNvbnRvdXIuc2hvdyxjb250b3VyQ29sb3I6ZCh0LmNvbnRvdXIuY29sb3IpLnNsaWNlKDAsMyksY29udG91cldpZHRoOnQuY29udG91ci53aWR0aCx1c2VGYWNldE5vcm1hbHM6dC5mbGF0c2hhZGluZ307dC5pbnRlbnNpdHk/KHRoaXMuY29sb3I9IiNmZmYiLHAudmVydGV4SW50ZW5zaXR5PXQuaW50ZW5zaXR5LHAuY29sb3JtYXA9aSh0LmNvbG9yc2NhbGUpKTp0LnZlcnRleGNvbG9yPyh0aGlzLmNvbG9yPXQudmVydGV4Y29sb3JzWzBdLHAudmVydGV4Q29sb3JzPW8odC52ZXJ0ZXhjb2xvcikpOnQuZmFjZWNvbG9yPyh0aGlzLmNvbG9yPXQuZmFjZWNvbG9yWzBdLHAuY2VsbENvbG9ycz1vKHQuZmFjZWNvbG9yKSk6KHRoaXMuY29sb3I9dC5jb2xvcixwLm1lc2hDb2xvcj1kKHQuY29sb3IpKSx0aGlzLm1lc2gudXBkYXRlKHApfSxwLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5tZXNoKSx0aGlzLm1lc2guZGlzcG9zZSgpfSxlLmV4cG9ydHM9c30seyIuLi8uLi9saWIvc3RyMnJnYmFycmF5IjozODMsImFscGhhLXNoYXBlIjozOSwiY29udmV4LWh1bGwiOjYwLCJkZWxhdW5heS10cmlhbmd1bGF0ZSI6NzEsImdsLW1lc2gzZCI6MTA3LHRpbnljb2xvcjI6MjMxfV0sNTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcmJhci9kZWZhdWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe2Z1bmN0aW9uIHMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixpKX1mdW5jdGlvbiBsKHQpe3ZhciBlPXQubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXModCk7cmV0dXJuIGUmJkFycmF5LmlzQXJyYXkoZSk/ZTpudWxsfSk7cmV0dXJuIGUuZXZlcnkoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQubGVuZ3RoPT09ZVswXS5sZW5ndGh9KSYmZX12YXIgYz1sKFsieCIsInkiLCJ6Il0pLHU9bChbImkiLCJqIiwiayJdKTtyZXR1cm4gYz8odSYmdS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7KytlKXRbZV18PTB9KSxbImxpZ2h0aW5nLmFtYmllbnQiLCJsaWdodGluZy5kaWZmdXNlIiwibGlnaHRpbmcuc3BlY3VsYXIiLCJsaWdodGluZy5yb3VnaG5lc3MiLCJsaWdodGluZy5mcmVzbmVsIiwiY29udG91ci5zaG93IiwiY29udG91ci5jb2xvciIsImNvbnRvdXIud2lkdGgiLCJjb2xvcnNjYWxlIiwicmV2ZXJzZXNjYWxlIiwiZmxhdHNoYWRpbmciLCJhbHBoYWh1bGwiLCJkZWxhdW5heWF4aXMiLCJvcGFjaXR5Il0uZm9yRWFjaChmdW5jdGlvbih0KXtzKHQpfSksImludGVuc2l0eSJpbiB0PyhzKCJpbnRlbnNpdHkiKSxzKCJzaG93c2NhbGUiLCEwKSk6KGUuc2hvd3NjYWxlPSExLCJ2ZXJ0ZXhjb2xvciJpbiB0P3MoInZlcnRleGNvbG9yIik6ImZhY2Vjb2xvciJpbiB0P3MoImZhY2Vjb2xvciIpOnMoImNvbG9yIixyKSksZS5yZXZlcnNlc2NhbGUmJihlLmNvbG9yc2NhbGU9ZS5jb2xvcnNjYWxlLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bMS10WzBdLHRbMV1dfSkucmV2ZXJzZSgpKSx2b2lkKGUuc2hvd3NjYWxlJiZpKHQsZSxhKSkpOnZvaWQoZS52aXNpYmxlPSExKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcmJhci9kZWZhdWx0cyI6MzAzLCIuLi8uLi9saWIiOjM3MywiLi9hdHRyaWJ1dGVzIjo1MTN9XSw1MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uY29sb3JiYXI9dCgiLi4vaGVhdG1hcC9jb2xvcmJhciIpLG4ucGxvdD10KCIuL2NvbnZlcnQiKSxuLm1vZHVsZVR5cGU9InRyYWNlIixuLm5hbWU9Im1lc2gzZCIsbi5iYXNlUGxvdE1vZHVsZT10KCIuLi8uLi9wbG90cy9nbDNkIiksbi5jYXRlZ29yaWVzPVsiZ2wzZCJdLG4ubWV0YT17fSxlLmV4cG9ydHM9bn0seyIuLi8uLi9wbG90cy9nbDNkIjo0MjQsIi4uL2hlYXRtYXAvY29sb3JiYXIiOjQ4NywiLi9hdHRyaWJ1dGVzIjo1MTMsIi4vY29udmVydCI6NTE0LCIuL2RlZmF1bHRzIjo1MTV9XSw1MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17bGFiZWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sbGFiZWwwOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH0sZGxhYmVsOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MX0sdmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sbWFya2VyOntjb2xvcnM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZSxhcnJheU9rOiEwfSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsYXJyYXlPazohMH19fSx0ZXh0Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sc2NhbGVncm91cDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIifSx0ZXh0aW5mbzp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsibGFiZWwiLCJ0ZXh0IiwidmFsdWUiLCJwZXJjZW50Il0sZXh0cmFzOlsibm9uZSJdfSxob3ZlcmluZm86YSh7fSxvLmhvdmVyaW5mbyx7ZmxhZ3M6WyJsYWJlbCIsInRleHQiLCJ2YWx1ZSIsInBlcmNlbnQiLCJuYW1lIl19KSx0ZXh0cG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImluc2lkZSIsIm91dHNpZGUiLCJhdXRvIiwibm9uZSJdLGRmbHQ6ImF1dG8iLGFycmF5T2s6ITB9LHRleHRmb250OmEoe30saSx7fSksaW5zaWRldGV4dGZvbnQ6YSh7fSxpLHt9KSxvdXRzaWRldGV4dGZvbnQ6YSh7fSxpLHt9KSxkb21haW46e3g6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MX0se3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjF9XSxkZmx0OlswLDFdfSx5Ont2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjF9LHt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxfV0sZGZsdDpbMCwxXX19LGhvbGU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowfSxzb3J0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxkaXJlY3Rpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNsb2Nrd2lzZSIsImNvdW50ZXJjbG9ja3dpc2UiXSxkZmx0OiJjb3VudGVyY2xvY2t3aXNlIn0scm90YXRpb246e3ZhbFR5cGU6Im51bWJlciIsbWluOi0zNjAsbWF4OjM2MCxkZmx0OjB9LHB1bGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowLGFycmF5T2s6ITB9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjMwMCwiLi4vLi4vbGliL2V4dGVuZCI6MzY5LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjozOTEsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NDA3fV0sNTE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7aWYoIWwpe3ZhciBlPWEuZGVmYXVsdHM7bD1lLnNsaWNlKCk7dmFyIHI7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylsLnB1c2gobyhlW3JdKS5saWdodGVuKDIwKS50b0hleFN0cmluZygpKTtmb3Iocj0wO3I8YS5kZWZhdWx0cy5sZW5ndGg7cisrKWwucHVzaChvKGVbcl0pLmRhcmtlbigyMCkudG9IZXhTdHJpbmcoKSl9cmV0dXJuIGxbdCVsLmxlbmd0aF19dmFyIGk9dCgiZmFzdC1pc251bWVyaWMiKSxvPXQoInRpbnljb2xvcjIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4vaGVscGVycyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGwsYyx1LGgsZixkPWUudmFsdWVzLHA9ZS5sYWJlbHMsZz1bXSx2PXQuX2Z1bGxMYXlvdXQsbT12Ll9waWVjb2xvcm1hcCx5PXt9LGI9ITEseD0wLF89di5oaWRkZW5sYWJlbHN8fFtdO2lmKGUuZGxhYmVsKWZvcihwPW5ldyBBcnJheShkLmxlbmd0aCkscj0wO3I8ZC5sZW5ndGg7cisrKXBbcl09U3RyaW5nKGUubGFiZWwwK3IqZS5kbGFiZWwpO2ZvcihyPTA7cjxkLmxlbmd0aDtyKyspbD1kW3JdLGkobCkmJihsPStsLDA+bHx8KGM9cFtyXSx2b2lkIDAhPT1jJiYiIiE9PWN8fChjPXIpLGM9U3RyaW5nKGMpLHZvaWQgMD09PXlbY10mJih5W2NdPSEwLHU9byhlLm1hcmtlci5jb2xvcnNbcl0pLHUuaXNWYWxpZCgpPyh1PWEuYWRkT3BhY2l0eSh1LHUuZ2V0QWxwaGEoKSksbVtjXXx8KG1bY109dSkpOm1bY10/dT1tW2NdOih1PSExLGI9ITApLGg9LTEhPT1fLmluZGV4T2YoYyksaHx8KHgrPWwpLGcucHVzaCh7djpsLGxhYmVsOmMsY29sb3I6dSxpOnIsaGlkZGVuOmh9KSkpKTtpZihlLnNvcnQmJmcuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLnYtdC52fSksYilmb3Iocj0wO3I8Zy5sZW5ndGg7cisrKWY9Z1tyXSxmLmNvbG9yPT09ITEmJihtW2YubGFiZWxdPWYuY29sb3I9bih2Ll9waWVkZWZhdWx0Y29sb3Jjb3VudCksdi5fcGllZGVmYXVsdGNvbG9yY291bnQrKyk7aWYoZ1swXSYmKGdbMF0udlRvdGFsPXgpLGUudGV4dGluZm8mJiJub25lIiE9PWUudGV4dGluZm8pe3ZhciB3LEE9LTEhPT1lLnRleHRpbmZvLmluZGV4T2YoImxhYmVsIiksaz0tMSE9PWUudGV4dGluZm8uaW5kZXhPZigidGV4dCIpLE09LTEhPT1lLnRleHRpbmZvLmluZGV4T2YoInZhbHVlIiksVD0tMSE9PWUudGV4dGluZm8uaW5kZXhPZigicGVyY2VudCIpO2ZvcihyPTA7cjxnLmxlbmd0aDtyKyspZj1nW3JdLHc9QT9bZi5sYWJlbF06W10sayYmZS50ZXh0W2YuaV0mJncucHVzaChlLnRleHRbZi5pXSksTSYmdy5wdXNoKHMuZm9ybWF0UGllVmFsdWUoZi52KSksVCYmdy5wdXNoKHMuZm9ybWF0UGllUGVyY2VudChmLnYveCkpLGYudGV4dD13LmpvaW4oIjxicj4iKX1yZXR1cm4gZ307dmFyIGx9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzAxLCIuL2hlbHBlcnMiOjUyMCwiZmFzdC1pc251bWVyaWMiOjc0LHRpbnljb2xvcjI6MjMxfV0sNTE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIGEocixvKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixvKX12YXIgcz1uLmNvZXJjZUZvbnQsbD1hKCJ2YWx1ZXMiKTtpZighQXJyYXkuaXNBcnJheShsKXx8IWwubGVuZ3RoKXJldHVybiB2b2lkKGUudmlzaWJsZT0hMSk7dmFyIGM9YSgibGFiZWxzIik7QXJyYXkuaXNBcnJheShjKXx8KGEoImxhYmVsMCIpLGEoImRsYWJlbCIpKTt2YXIgdT1hKCJtYXJrZXIubGluZS53aWR0aCIpO3UmJmEoIm1hcmtlci5saW5lLmNvbG9yIik7dmFyIGg9YSgibWFya2VyLmNvbG9ycyIpO0FycmF5LmlzQXJyYXkoaCl8fChlLm1hcmtlci5jb2xvcnM9W10pLGEoInNjYWxlZ3JvdXAiKTt2YXIgZj1hKCJ0ZXh0IiksZD1hKCJ0ZXh0aW5mbyIsQXJyYXkuaXNBcnJheShmKT8idGV4dCtwZXJjZW50IjoicGVyY2VudCIpO2lmKGEoImhvdmVyaW5mbyIsMT09PW8uX2RhdGFMZW5ndGg/ImxhYmVsK3RleHQrdmFsdWUrcGVyY2VudCI6dm9pZCAwKSxkJiYibm9uZSIhPT1kKXt2YXIgcD1hKCJ0ZXh0cG9zaXRpb24iKSxnPUFycmF5LmlzQXJyYXkocCl8fCJhdXRvIj09PXAsdj1nfHwiaW5zaWRlIj09PXAsbT1nfHwib3V0c2lkZSI9PT1wO2lmKHZ8fG0pe3ZhciB5PXMoYSwidGV4dGZvbnQiLG8uZm9udCk7diYmcyhhLCJpbnNpZGV0ZXh0Zm9udCIseSksbSYmcyhhLCJvdXRzaWRldGV4dGZvbnQiLHkpfX1hKCJkb21haW4ueCIpLGEoImRvbWFpbi55IiksYSgiaG9sZSIpLGEoInNvcnQiKSxhKCJkaXJlY3Rpb24iKSxhKCJyb3RhdGlvbiIpLGEoInB1bGwiKX19LHsiLi4vLi4vbGliIjozNzMsIi4vYXR0cmlidXRlcyI6NTE3fV0sNTIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuZm9ybWF0UGllUGVyY2VudD1mdW5jdGlvbih0KXt2YXIgZT0oMTAwKnQpLnRvUHJlY2lzaW9uKDMpO3JldHVybi0xIT09ZS5pbmRleE9mKCIuIik/ZS5yZXBsYWNlKC9bLl0/MCskLywiIikrIiUiOmUrIiUifSxyLmZvcm1hdFBpZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPXQudG9QcmVjaXNpb24oMTApO3JldHVybi0xIT09ZS5pbmRleE9mKCIuIik/ZS5yZXBsYWNlKC9bLl0/MCskLywiIik6ZX19LHt9XSw1MjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxuLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLG4uY2FsYz10KCIuL2NhbGMiKSxuLnBsb3Q9dCgiLi9wbG90Iiksbi5zdHlsZT10KCIuL3N0eWxlIiksbi5zdHlsZU9uZT10KCIuL3N0eWxlX29uZSIpLG4ubW9kdWxlVHlwZT0idHJhY2UiLG4ubmFtZT0icGllIixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLG4uY2F0ZWdvcmllcz1bInBpZSIsInNob3dMZWdlbmQiXSxuLm1ldGE9e30sZS5leHBvcnRzPW59LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjozOTksIi4vYXR0cmlidXRlcyI6NTE3LCIuL2NhbGMiOjUxOCwiLi9kZWZhdWx0cyI6NTE5LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo1MjIsIi4vbGF5b3V0X2RlZmF1bHRzIjo1MjMsIi4vcGxvdCI6NTI0LCIuL3N0eWxlIjo1MjUsIi4vc3R5bGVfb25lIjo1MjZ9XSw1MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtoaWRkZW5sYWJlbHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifX19LHt9XSw1MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLG8pe3JldHVybiBuLmNvZXJjZSh0LGUsaSxyLG8pfXIoImhpZGRlbmxhYmVscyIpfX0seyIuLi8uLi9saWIiOjM3MywiLi9sYXlvdXRfYXR0cmlidXRlcyI6NTIyfV0sNTI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuPU1hdGguc3FydCh0LndpZHRoKnQud2lkdGgrdC5oZWlnaHQqdC5oZWlnaHQpLG89dC53aWR0aC90LmhlaWdodCxhPU1hdGguUEkqTWF0aC5taW4oZS52L3IudlRvdGFsLC41KSxzPTEtci50cmFjZS5ob2xlLGw9aShlLHIpLGM9e3NjYWxlOmwqci5yKjIvbixyQ2VudGVyOjEtbCxyb3RhdGU6MH07aWYoYy5zY2FsZT49MSlyZXR1cm4gYzt2YXIgdT1vKzEvKDIqTWF0aC50YW4oYSkpLGg9ci5yKk1hdGgubWluKDEvKE1hdGguc3FydCh1KnUrLjUpK3UpLHMvKE1hdGguc3FydChvKm8rcy8yKStvKSksZj17c2NhbGU6MipoL3QuaGVpZ2h0LHJDZW50ZXI6TWF0aC5jb3MoaC9yLnIpLWgqby9yLnIscm90YXRlOigxODAvTWF0aC5QSSplLm1pZGFuZ2xlKzcyMCklMTgwLTkwfSxkPTEvbyxwPWQrMS8oMipNYXRoLnRhbihhKSksZz1yLnIqTWF0aC5taW4oMS8oTWF0aC5zcXJ0KHAqcCsuNSkrcCkscy8oTWF0aC5zcXJ0KGQqZCtzLzIpK2QpKSx2PXtzY2FsZToyKmcvdC53aWR0aCxyQ2VudGVyOk1hdGguY29zKGcvci5yKS1nL28vci5yLHJvdGF0ZTooMTgwL01hdGguUEkqZS5taWRhbmdsZSs4MTApJTE4MC05MH0sbT12LnNjYWxlPmYuc2NhbGU/djpmO3JldHVybiBjLnNjYWxlPDEmJm0uc2NhbGU+Yy5zY2FsZT9tOmN9ZnVuY3Rpb24gaSh0LGUpe2lmKHQudj09PWUudlRvdGFsJiYhZS50cmFjZS5ob2xlKXJldHVybiAxO3ZhciByPU1hdGguUEkqTWF0aC5taW4odC52L2UudlRvdGFsLC41KTtyZXR1cm4gTWF0aC5taW4oMS8oMSsxL01hdGguc2luKHIpKSwoMS1lLnRyYWNlLmhvbGUpLzIpfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1lLnB4bWlkWzBdLG49ZS5weG1pZFsxXSxpPXQud2lkdGgvMixvPXQuaGVpZ2h0LzI7cmV0dXJuIDA+ciYmKGkqPS0xKSwwPm4mJihvKj0tMSkse3NjYWxlOjEsckNlbnRlcjoxLHJvdGF0ZTowLHg6aStNYXRoLmFicyhvKSooaT4wPzE6LTEpLzIseTpvLygxK3Iqci8obipuKSksb3V0c2lkZTohMH19ZnVuY3Rpb24gYSh0LGUpe2Z1bmN0aW9uIHIodCxlKXtyZXR1cm4gdC5weG1pZFsxXS1lLnB4bWlkWzFdfWZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZS5weG1pZFsxXS10LnB4bWlkWzFdfWZ1bmN0aW9uIGkodCxyKXtyfHwocj17fSk7dmFyIG4saSxvLHMsZixkLGc9ci5sYWJlbEV4dHJhWSsoYT9yLnlMYWJlbE1heDpyLnlMYWJlbE1pbiksdj1hP3QueUxhYmVsTWluOnQueUxhYmVsTWF4LG09YT90LnlMYWJlbE1heDp0LnlMYWJlbE1pbix5PXQuY3lGaW5hbCtjKHQucHgwWzFdLHQucHgxWzFdKSxiPWctdjtpZihiKmg+MCYmKHQubGFiZWxFeHRyYVk9YiksQXJyYXkuaXNBcnJheShlLnB1bGwpKWZvcihpPTA7aTxwLmxlbmd0aDtpKyspbz1wW2ldLG89PT10fHwoZS5wdWxsW3QuaV18fDApPj1lLnB1bGxbby5pXXx8KCh0LnB4bWlkWzFdLW8ucHhtaWRbMV0pKmg+MD8ocz1vLmN5RmluYWwrYyhvLnB4MFsxXSxvLnB4MVsxXSksYj1zLXYtdC5sYWJlbEV4dHJhWSxiKmg+MCYmKHQubGFiZWxFeHRyYVkrPWIpKToobSt0LmxhYmVsRXh0cmFZLXkpKmg+MCYmKG49Myp1Kk1hdGguYWJzKGktcC5pbmRleE9mKHQpKSxmPW8uY3hGaW5hbCtsKG8ucHgwWzBdLG8ucHgxWzBdKSxkPWYrbi0odC5jeEZpbmFsK3QucHhtaWRbMF0pLXQubGFiZWxFeHRyYVgsZCp1PjAmJih0LmxhYmVsRXh0cmFYKz1kKSkpfXZhciBvLGEscyxsLGMsdSxoLGYsZCxwLGcsdixtO2ZvcihhPTA7Mj5hO2ErKylmb3Iocz1hP3I6bixjPWE/TWF0aC5tYXg6TWF0aC5taW4saD1hPzE6LTEsbz0wOzI+bztvKyspe2ZvcihsPW8/TWF0aC5tYXg6TWF0aC5taW4sdT1vPzE6LTEsZj10W2FdW29dLGYuc29ydChzKSxkPXRbMS1hXVtvXSxwPWQuY29uY2F0KGYpLHY9W10sZz0wO2c8Zi5sZW5ndGg7ZysrKXZvaWQgMCE9PWZbZ10ueUxhYmVsTWlkJiZ2LnB1c2goZltnXSk7Zm9yKG09ITEsZz0wO2EmJmc8ZC5sZW5ndGg7ZysrKWlmKHZvaWQgMCE9PWRbZ10ueUxhYmVsTWlkKXttPWRbZ107YnJlYWt9Zm9yKGc9MDtnPHYubGVuZ3RoO2crKyl7dmFyIHk9ZyYmdltnLTFdO20mJiFnJiYoeT1tKSxpKHZbZ10seSl9fX1mdW5jdGlvbiBzKHQsZSl7dmFyIHIsbixpLG8sYSxzLGwsdSxoLGYsZD1bXTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXtpZihhPXRbaV1bMF0scz1hLnRyYWNlLHI9ZS53KihzLmRvbWFpbi54WzFdLXMuZG9tYWluLnhbMF0pLG49ZS5oKihzLmRvbWFpbi55WzFdLXMuZG9tYWluLnlbMF0pLGw9cy50aWx0YXhpcypNYXRoLlBJLzE4MCx1PXMucHVsbCxBcnJheS5pc0FycmF5KHUpKWZvcih1PTAsbz0wO288cy5wdWxsLmxlbmd0aDtvKyspcy5wdWxsW29dPnUmJih1PXMucHVsbFtvXSk7YS5yPU1hdGgubWluKHIvYyhzLnRpbHQsTWF0aC5zaW4obCkscy5kZXB0aCksbi9jKHMudGlsdCxNYXRoLmNvcyhsKSxzLmRlcHRoKSkvKDIrMip1KSxhLmN4PWUubCtlLncqKHMuZG9tYWluLnhbMV0rcy5kb21haW4ueFswXSkvMixhLmN5PWUudCtlLmgqKDItcy5kb21haW4ueVsxXS1zLmRvbWFpbi55WzBdKS8yLHMuc2NhbGVncm91cCYmLTE9PT1kLmluZGV4T2Yocy5zY2FsZWdyb3VwKSYmZC5wdXNoKHMuc2NhbGVncm91cCl9Zm9yKG89MDtvPGQubGVuZ3RoO28rKyl7Zm9yKGY9MS8wLGg9ZFtvXSxpPTA7aTx0Lmxlbmd0aDtpKyspYT10W2ldWzBdLGEudHJhY2Uuc2NhbGVncm91cD09PWgmJihmPU1hdGgubWluKGYsYS5yKmEuci9hLnZUb3RhbCkpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspYT10W2ldWzBdLGEudHJhY2Uuc2NhbGVncm91cD09PWgmJihhLnI9TWF0aC5zcXJ0KGYqYS52VG90YWwpKX19ZnVuY3Rpb24gbCh0KXtmdW5jdGlvbiBlKHQpe3ZhciBlPWgucipNYXRoLnNpbih0KSxyPS1oLnIqTWF0aC5jb3ModCk7cmV0dXJuIGQ/W2UqKDEtcypuKm4pK3IqYSpzLGUqYSpzK3IqKDEtcyppKmkpLE1hdGguc2luKG8pKihyKmktZSpuKV06W2Uscl19dmFyIHIsbixpLG8sYSxzLGwsYyx1LGg9dFswXSxmPWgudHJhY2UsZD1mLnRpbHQscD1mLnJvdGF0aW9uKk1hdGguUEkvMTgwLGc9MipNYXRoLlBJL2gudlRvdGFsLHY9InB4MCIsbT0icHgxIjtpZigiY291bnRlcmNsb2Nrd2lzZSI9PT1mLmRpcmVjdGlvbil7Zm9yKGw9MDtsPHQubGVuZ3RoJiZ0W2xdLmhpZGRlbjtsKyspO2lmKGw9PT10Lmxlbmd0aClyZXR1cm47cCs9Zyp0W2xdLnYsZyo9LTEsdj0icHgxIixtPSJweDAifWZvcihkJiYobz1kKk1hdGguUEkvMTgwLHI9Zi50aWx0YXhpcypNYXRoLlBJLzE4MCxhPU1hdGguc2luKHIpKk1hdGguY29zKHIpLHM9MS1NYXRoLmNvcyhvKSxuPU1hdGguc2luKHIpLGk9TWF0aC5jb3MocikpLHU9ZShwKSxsPTA7bDx0Lmxlbmd0aDtsKyspYz10W2xdLGMuaGlkZGVufHwoY1t2XT11LHArPWcqYy52LzIsYy5weG1pZD1lKHApLGMubWlkYW5nbGU9cCxwKz1nKmMudi8yLHU9ZShwKSxjW21dPXUsYy5sYXJnZUFyYz1jLnY+aC52VG90YWwvMj8xOjApfWZ1bmN0aW9uIGModCxlLHIpe2lmKCF0KXJldHVybiAxO3ZhciBuPU1hdGguc2luKHQqTWF0aC5QSS8xODApO3JldHVybiBNYXRoLm1heCguMDEscipuKk1hdGguYWJzKGUpKzIqTWF0aC5zcXJ0KDEtbipuKmUqZSkpfXZhciB1PXQoImQzIiksaD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiKSxmPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxkPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHA9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksZz10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0O3MoZSxyLl9zaXplKTt2YXIgYz1yLl9waWVsYXllci5zZWxlY3RBbGwoImcudHJhY2UiKS5kYXRhKGUpO2MuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKHsic3Ryb2tlLWxpbmVqb2luIjoicm91bmQiLCJjbGFzcyI6InRyYWNlIn0pLGMuZXhpdCgpLnJlbW92ZSgpLGMub3JkZXIoKSxjLmVhY2goZnVuY3Rpb24oZSl7dmFyIHM9dS5zZWxlY3QodGhpcyksYz1lWzBdLHY9Yy50cmFjZSxtPTAseT0odi5kZXB0aHx8MCkqYy5yKk1hdGguc2luKG0pLzIsYj12LnRpbHRheGlzfHwwLHg9YipNYXRoLlBJLzE4MCxfPVt5Kk1hdGguc2luKHgpLHkqTWF0aC5jb3MoeCldLHc9Yy5yKk1hdGguY29zKG0pLEE9cy5zZWxlY3RBbGwoImcucGFydCIpLmRhdGEodi50aWx0P1sidG9wIiwic2lkZXMiXTpbInRvcCJdKTtBLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiB0KyIgcGFydCJ9KSxBLmV4aXQoKS5yZW1vdmUoKSxBLm9yZGVyKCksbChlKSxzLnNlbGVjdEFsbCgiLnRvcCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcz11LnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuc2xpY2UiKS5kYXRhKGUpO3MuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzbGljZSIsITApLHMuZXhpdCgpLnJlbW92ZSgpO3ZhciBsPVtbW10sW11dLFtbXSxbXV1dLG09ITE7cy5lYWNoKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIHMoZSl7dmFyIHI9dC5fZnVsbExheW91dCxuPXQuX2Z1bGxEYXRhW3YuaW5kZXhdLG89bi5ob3ZlcmluZm87aWYoImFsbCI9PT1vJiYobz0ibGFiZWwrdGV4dCt2YWx1ZStwZXJjZW50K25hbWUiKSwhdC5fZHJhZ2dpbmcmJnIuaG92ZXJtb2RlIT09ITEmJiJub25lIiE9PW8mJm8pe3ZhciBzPWkoYSxjKSxsPUErYS5weG1pZFswXSooMS1zKSx1PWsrYS5weG1pZFsxXSooMS1zKSxmPVtdOy0xIT09by5pbmRleE9mKCJsYWJlbCIpJiZmLnB1c2goYS5sYWJlbCksbi50ZXh0JiZuLnRleHRbYS5pXSYmLTEhPT1vLmluZGV4T2YoInRleHQiKSYmZi5wdXNoKG4udGV4dFthLmldKSwtMSE9PW8uaW5kZXhPZigidmFsdWUiKSYmZi5wdXNoKGcuZm9ybWF0UGllVmFsdWUoYS52KSksLTEhPT1vLmluZGV4T2YoInBlcmNlbnQiKSYmZi5wdXNoKGcuZm9ybWF0UGllUGVyY2VudChhLnYvYy52VG90YWwpKSxoLmxvbmVIb3Zlcih7eDA6bC1zKmMucix4MTpsK3MqYy5yLHk6dSx0ZXh0OmYuam9pbigiPGJyPiIpLG5hbWU6LTEhPT1vLmluZGV4T2YoIm5hbWUiKT9uLm5hbWU6dm9pZCAwLGNvbG9yOmEuY29sb3IsaWRlYWxBbGlnbjphLnB4bWlkWzBdPDA/ImxlZnQiOiJyaWdodCJ9LHtjb250YWluZXI6ci5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6ci5fcGFwZXIubm9kZSgpfSksaC5ob3Zlcih0LGUsInBpZSIpLEU9ITB9fWZ1bmN0aW9uIGYoKXtFJiYoaC5sb25lVW5ob3ZlcihyLl9ob3ZlcmxheWVyLm5vZGUoKSksRT0hMSl9ZnVuY3Rpb24geSgpe3QuX2hvdmVyZGF0YT1bYV0sdC5faG92ZXJkYXRhLnRyYWNlPWUudHJhY2UsaC5jbGljayh0LHt0YXJnZXQ6ITB9KX1mdW5jdGlvbiB4KHQsZSxyLG4pe3JldHVybiJhIituKmMucisiLCIrbip3KyIgIitiKyIgIithLmxhcmdlQXJjKyhyPyIgMSAiOiIgMCAiKStuKihlWzBdLXRbMF0pKyIsIituKihlWzFdLXRbMV0pfWlmKGEuaGlkZGVuKXJldHVybiB2b2lkIHUuc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aCxnIikucmVtb3ZlKCk7bFthLnB4bWlkWzFdPDA/MDoxXVthLnB4bWlkWzBdPDA/MDoxXS5wdXNoKGEpO3ZhciBBPWMuY3grX1swXSxrPWMuY3krX1sxXSxNPXUuc2VsZWN0KHRoaXMpLFQ9TS5zZWxlY3RBbGwoInBhdGguc3VyZmFjZSIpLmRhdGEoW2FdKSxFPSExO2lmKFQuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJzdXJmYWNlIiwhMCkuc3R5bGUoeyJwb2ludGVyLWV2ZW50cyI6ImFsbCJ9KSxNLnNlbGVjdCgicGF0aC50ZXh0bGluZSIpLnJlbW92ZSgpLE0ub24oIm1vdXNlb3ZlciIscykub24oIm1vdXNlb3V0IixmKS5vbigiY2xpY2siLHkpLHYucHVsbCl7dmFyIEw9KyhBcnJheS5pc0FycmF5KHYucHVsbCk/di5wdWxsW2EuaV06di5wdWxsKXx8MDtMPjAmJihBKz1MKmEucHhtaWRbMF0says9TCphLnB4bWlkWzFdKX1hLmN4RmluYWw9QSxhLmN5RmluYWw9azt2YXIgUz12LmhvbGU7aWYoYS52PT09Yy52VG90YWwpe3ZhciBDPSJNIisoQSthLnB4MFswXSkrIiwiKyhrK2EucHgwWzFdKSt4KGEucHgwLGEucHhtaWQsITAsMSkreChhLnB4bWlkLGEucHgwLCEwLDEpKyJaIjtTP1QuYXR0cigiZCIsIk0iKyhBK1MqYS5weDBbMF0pKyIsIisoaytTKmEucHgwWzFdKSt4KGEucHgwLGEucHhtaWQsITEsUykreChhLnB4bWlkLGEucHgwLCExLFMpKyJaIitDKTpULmF0dHIoImQiLEMpfWVsc2V7dmFyIFA9eChhLnB4MCxhLnB4MSwhMCwxKTtpZihTKXt2YXIgej0xLVM7VC5hdHRyKCJkIiwiTSIrKEErUyphLnB4MVswXSkrIiwiKyhrK1MqYS5weDFbMV0pK3goYS5weDEsYS5weDAsITEsUykrImwiK3oqYS5weDBbMF0rIiwiK3oqYS5weDBbMV0rUCsiWiIpfWVsc2UgVC5hdHRyKCJkIiwiTSIrQSsiLCIraysibCIrYS5weDBbMF0rIiwiK2EucHgwWzFdK1ArIloiKX12YXIgUj1BcnJheS5pc0FycmF5KHYudGV4dHBvc2l0aW9uKT92LnRleHRwb3NpdGlvblthLmldOnYudGV4dHBvc2l0aW9uLE89TS5zZWxlY3RBbGwoImcuc2xpY2V0ZXh0IikuZGF0YShhLnRleHQmJiJub25lIiE9PVI/WzBdOltdKTtPLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2V0ZXh0IiwhMCksTy5leGl0KCkucmVtb3ZlKCksTy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9dS5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJ0ZXh0IikuZGF0YShbMF0pO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJkYXRhLW5vdGV4IiwxKSx0LmV4aXQoKS5yZW1vdmUoKSx0LnRleHQoYS50ZXh0KS5hdHRyKHsiY2xhc3MiOiJzbGljZXRleHQiLHRyYW5zZm9ybToiIiwiZGF0YS1iYiI6IiIsInRleHQtYW5jaG9yIjoibWlkZGxlIix4OjAseTowfSkuY2FsbChkLmZvbnQsIm91dHNpZGUiPT09Uj92Lm91dHNpZGV0ZXh0Zm9udDp2Lmluc2lkZXRleHRmb250KS5jYWxsKHAuY29udmVydFRvVHNwYW5zKSx0LnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLmF0dHIoe3g6MCx5OjB9KTt2YXIgZSxyPWQuYkJveCh0Lm5vZGUoKSk7Im91dHNpZGUiPT09Uj9lPW8ocixhKTooZT1uKHIsYSxjKSwiYXV0byI9PT1SJiZlLnNjYWxlPDEmJih0LmNhbGwoZC5mb250LHYub3V0c2lkZXRleHRmb250KSx2Lm91dHNpZGV0ZXh0Zm9udC5mYW1pbHk9PT12Lmluc2lkZXRleHRmb250LmZhbWlseSYmdi5vdXRzaWRldGV4dGZvbnQuc2l6ZT09PXYuaW5zaWRldGV4dGZvbnQuc2l6ZXx8KHQuYXR0cih7ImRhdGEtYmIiOiIifSkscj1kLmJCb3godC5ub2RlKCkpKSxlPW8ocixhKSkpO3ZhciBpPUErYS5weG1pZFswXSplLnJDZW50ZXIrKGUueHx8MCkscz1rK2EucHhtaWRbMV0qZS5yQ2VudGVyKyhlLnl8fDApO2Uub3V0c2lkZSYmKGEueUxhYmVsTWluPXMtci5oZWlnaHQvMixhLnlMYWJlbE1pZD1zLGEueUxhYmVsTWF4PXMrci5oZWlnaHQvMixhLmxhYmVsRXh0cmFYPTAsYS5sYWJlbEV4dHJhWT0wLG09ITApLHQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCIrcysiKSIrKGUuc2NhbGU8MT8ic2NhbGUoIitlLnNjYWxlKyIpIjoiIikrKGUucm90YXRlPyJyb3RhdGUoIitlLnJvdGF0ZSsiKSI6IiIpKyJ0cmFuc2xhdGUoIistKHIubGVmdCtyLnJpZ2h0KS8yKyIsIistKHIudG9wK3IuYm90dG9tKS8yKyIpIil9KX0pLG0mJmEobCx2KSxzLmVhY2goZnVuY3Rpb24odCl7aWYodC5sYWJlbEV4dHJhWHx8dC5sYWJlbEV4dHJhWSl7dmFyIGU9dS5zZWxlY3QodGhpcykscj1lLnNlbGVjdCgiZy5zbGljZXRleHQgdGV4dCIpO3IuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sYWJlbEV4dHJhWCsiLCIrdC5sYWJlbEV4dHJhWSsiKSIrci5hdHRyKCJ0cmFuc2Zvcm0iKSk7dmFyIG49dC5jeEZpbmFsK3QucHhtaWRbMF0saT10LmN5RmluYWwrdC5weG1pZFsxXSxvPSJNIituKyIsIitpLGE9KHQueUxhYmVsTWF4LXQueUxhYmVsTWluKSoodC5weG1pZFswXTwwPy0xOjEpLzQ7aWYodC5sYWJlbEV4dHJhWCl7dmFyIHM9dC5sYWJlbEV4dHJhWCp0LnB4bWlkWzFdL3QucHhtaWRbMF0sbD10LnlMYWJlbE1pZCt0LmxhYmVsRXh0cmFZLSh0LmN5RmluYWwrdC5weG1pZFsxXSk7bys9TWF0aC5hYnMocyk+TWF0aC5hYnMobCk/ImwiK2wqdC5weG1pZFswXS90LnB4bWlkWzFdKyIsIitsKyJIIisobit0LmxhYmVsRXh0cmFYK2EpOiJsIit0LmxhYmVsRXh0cmFYKyIsIitzKyJ2IisobC1zKSsiaCIrYX1lbHNlIG8rPSJWIisodC55TGFiZWxNaWQrdC5sYWJlbEV4dHJhWSkrImgiK2E7ZS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJ0ZXh0bGluZSIsITApLmNhbGwoZi5zdHJva2Usdi5vdXRzaWRldGV4dGZvbnQuY29sb3IpLmF0dHIoeyJzdHJva2Utd2lkdGgiOk1hdGgubWluKDIsdi5vdXRzaWRldGV4dGZvbnQuc2l6ZS84KSxkOm8sZmlsbDoibm9uZSJ9KX19KX0pfSksc2V0VGltZW91dChmdW5jdGlvbigpe2Muc2VsZWN0QWxsKCJ0c3BhbiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD11LnNlbGVjdCh0aGlzKTt0LmF0dHIoImR5IikmJnQuYXR0cigiZHkiLHQuYXR0cigiZHkiKSl9KX0sMCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozMTksIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6Mzg0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiOjM5OCwiLi9oZWxwZXJzIjo1MjAsZDM6NzB9XSw1MjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoIi4vc3R5bGVfb25lIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3QuX2Z1bGxMYXlvdXQuX3BpZWxheWVyLnNlbGVjdEFsbCgiLnRyYWNlIikuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9ZS50cmFjZSxvPW4uc2VsZWN0KHRoaXMpO28uc3R5bGUoe29wYWNpdHk6ci5vcGFjaXR5fSksby5zZWxlY3RBbGwoIi50b3AgcGF0aC5zdXJmYWNlIikuZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5jYWxsKGksdCxyKX0pfSl9fSx7Ii4vc3R5bGVfb25lIjo1MjYsZDM6NzB9XSw1MjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9ci5tYXJrZXIubGluZS5jb2xvcjtBcnJheS5pc0FycmF5KGkpJiYoaT1pW2UuaV18fG4uZGVmYXVsdExpbmUpO3ZhciBvPXIubWFya2VyLmxpbmUud2lkdGh8fDA7QXJyYXkuaXNBcnJheShvKSYmKG89b1tlLmldfHwwKSx0LnN0eWxlKHsic3Ryb2tlLXdpZHRoIjpvLGZpbGw6ZS5jb2xvcn0pLmNhbGwobi5zdHJva2UsaSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMX1dLDUyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPWUubWFya2VyO2lmKG4ubWVyZ2VBcnJheShlLnRleHQsdCwidHgiKSxuLm1lcmdlQXJyYXkoZS50ZXh0cG9zaXRpb24sdCwidHAiKSxlLnRleHRmb250JiYobi5tZXJnZUFycmF5KGUudGV4dGZvbnQuc2l6ZSx0LCJ0cyIpLG4ubWVyZ2VBcnJheShlLnRleHRmb250LmNvbG9yLHQsInRjIiksbi5tZXJnZUFycmF5KGUudGV4dGZvbnQuZmFtaWx5LHQsInRmIikpLHImJnIubGluZSl7dmFyIGk9ci5saW5lO24ubWVyZ2VBcnJheShyLm9wYWNpdHksdCwibW8iKSxuLm1lcmdlQXJyYXkoci5zeW1ib2wsdCwibXgiKSxuLm1lcmdlQXJyYXkoci5jb2xvcix0LCJtYyIpLG4ubWVyZ2VBcnJheShpLmNvbG9yLHQsIm1sYyIpLG4ubWVyZ2VBcnJheShpLndpZHRoLHQsIm1sdyIpfX19LHsiLi4vLi4vbGliIjozNzN9XSw1Mjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIik7dCgiLi9jb25zdGFudHMiKTtlLmV4cG9ydHM9e3g6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx4MDp7dmFsVHlwZToiYW55IixkZmx0OjB9LGR4Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MX0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHkwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MH0sZHk6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxfSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMH0sbW9kZTp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsibGluZXMiLCJtYXJrZXJzIiwidGV4dCJdLGV4dHJhczpbIm5vbmUiXX0sbGluZTp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoyfSxzaGFwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsCnZhbHVlczpbImxpbmVhciIsInNwbGluZSIsImh2IiwidmgiLCJodmgiLCJ2aHYiXSxkZmx0OiJsaW5lYXIifSxzbW9vdGhpbmc6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEuMyxkZmx0OjF9LGRhc2g6e3ZhbFR5cGU6InN0cmluZyIsdmFsdWVzOlsic29saWQiLCJkb3QiLCJkYXNoIiwibG9uZ2Rhc2giLCJkYXNoZG90IiwibG9uZ2Rhc2hkb3QiXSxkZmx0OiJzb2xpZCJ9fSxjb25uZWN0Z2Fwczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sZmlsbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9uZSIsInRvemVyb3kiLCJ0b3plcm94IiwidG9uZXh0eSIsInRvbmV4dHgiXSxkZmx0OiJub25lIn0sZmlsbGNvbG9yOnt2YWxUeXBlOiJjb2xvciJ9LG1hcmtlcjp7c3ltYm9sOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6bi5zeW1ib2xMaXN0LGRmbHQ6ImNpcmNsZSIsYXJyYXlPazohMH0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxhcnJheU9rOiEwfSxzaXplOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6NixhcnJheU9rOiEwfSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITB9LG1heGRpc3BsYXllZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjB9LHNpemVyZWY6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxfSxzaXplbWluOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MH0sc2l6ZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImRpYW1ldGVyIiwiYXJlYSJdLGRmbHQ6ImRpYW1ldGVyIn0sY29sb3JzY2FsZTp7dmFsVHlwZToiY29sb3JzY2FsZSJ9LGNhdXRvOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxjbWF4Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbH0sY21pbjp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGx9LGF1dG9jb2xvcnNjYWxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxyZXZlcnNlc2NhbGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LHNob3dzY2FsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbGluZTp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixhcnJheU9rOiEwfSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxhcnJheU9rOiEwfSxjb2xvcnNjYWxlOnt2YWxUeXBlOiJjb2xvcnNjYWxlIn0sY2F1dG86e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LGNtYXg6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsfSxjbWluOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbH0sYXV0b2NvbG9yc2NhbGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHJldmVyc2VzY2FsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX19fSx0ZXh0cG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCBsZWZ0IiwidG9wIGNlbnRlciIsInRvcCByaWdodCIsIm1pZGRsZSBsZWZ0IiwibWlkZGxlIGNlbnRlciIsIm1pZGRsZSByaWdodCIsImJvdHRvbSBsZWZ0IiwiYm90dG9tIGNlbnRlciIsImJvdHRvbSByaWdodCJdLGRmbHQ6Im1pZGRsZSBjZW50ZXIiLGFycmF5T2s6ITB9LHRleHRmb250OntmYW1pbHk6e3ZhbFR5cGU6InN0cmluZyIsbm9CbGFuazohMCxzdHJpY3Q6ITAsYXJyYXlPazohMH0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MSxhcnJheU9rOiEwfSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITB9fSxyOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sdDp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LF9uZXN0ZWRNb2R1bGVzOntlcnJvcl95OiJFcnJvckJhcnMiLGVycm9yX3g6IkVycm9yQmFycyIsIm1hcmtlci5jb2xvcmJhciI6IkNvbG9yYmFyIn19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6MzE5LCIuL2NvbnN0YW50cyI6NTMyfV0sNTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vbGliIiksYT10KCIuL3N1YnR5cGVzIikscz10KCIuL21hcmtlcl9jb2xvcnNjYWxlX2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1pLmdldEZyb21JZCh0LGUueGF4aXN8fCJ4IiksbD1pLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5Iik7by5tYXJrVGltZSgiaW4gU2NhdHRlci5jYWxjIik7dmFyIGM9ci5tYWtlQ2FsY2RhdGEoZSwieCIpO28ubWFya1RpbWUoImZpbmlzaGVkIGNvbnZlcnQgeCIpO3ZhciB1PWwubWFrZUNhbGNkYXRhKGUsInkiKTtvLm1hcmtUaW1lKCJmaW5pc2hlZCBjb252ZXJ0IHkiKTt2YXIgaCxmLGQscD1NYXRoLm1pbihjLmxlbmd0aCx1Lmxlbmd0aCk7ci5fbWluRHRpY2s9MCxsLl9taW5EdGljaz0wLGMubGVuZ3RoPnAmJmMuc3BsaWNlKHAsYy5sZW5ndGgtcCksdS5sZW5ndGg+cCYmdS5zcGxpY2UocCx1Lmxlbmd0aC1wKTt2YXIgZz17cGFkZGVkOiEwfSx2PXtwYWRkZWQ6ITB9O2lmKGEuaGFzTWFya2VycyhlKSl7aWYoaD1lLm1hcmtlcixmPWguc2l6ZSxBcnJheS5pc0FycmF5KGYpKXt2YXIgbT17dHlwZToibGluZWFyIn07aS5zZXRDb252ZXJ0KG0pLGY9bS5tYWtlQ2FsY2RhdGEoZS5tYXJrZXIsInNpemUiKSxmLmxlbmd0aD5wJiZmLnNwbGljZShwLGYubGVuZ3RoLXApfXZhciB5LGI9MS42KihlLm1hcmtlci5zaXplcmVmfHwxKTt5PSJhcmVhIj09PWUubWFya2VyLnNpemVtb2RlP2Z1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heChNYXRoLnNxcnQoKHR8fDApL2IpLDMpfTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoKHR8fDApL2IsMyl9LGcucHBhZD12LnBwYWQ9QXJyYXkuaXNBcnJheShmKT9mLm1hcCh5KTp5KGYpfXMoZSksISgidG96ZXJveCI9PT1lLmZpbGx8fCJ0b25leHR4Ij09PWUuZmlsbCYmdC5maXJzdHNjYXR0ZXIpfHxjWzBdPT09Y1twLTFdJiZ1WzBdPT09dVtwLTFdP2UuZXJyb3JfeS52aXNpYmxlfHwtMT09PVsidG9uZXh0eSIsInRvemVyb3kiXS5pbmRleE9mKGUuZmlsbCkmJihhLmhhc01hcmtlcnMoZSl8fGEuaGFzVGV4dChlKSl8fChnLnBhZGRlZD0hMSxnLnBwYWQ9MCk6Zy50b3plcm89ITAsISgidG96ZXJveSI9PT1lLmZpbGx8fCJ0b25leHR5Ij09PWUuZmlsbCYmdC5maXJzdHNjYXR0ZXIpfHxjWzBdPT09Y1twLTFdJiZ1WzBdPT09dVtwLTFdPy0xIT09WyJ0b25leHR4IiwidG96ZXJveCJdLmluZGV4T2YoZS5maWxsKSYmKHYucGFkZGVkPSExKTp2LnRvemVybz0hMCxvLm1hcmtUaW1lKCJyZWFkeSBmb3IgQXhlcy5leHBhbmQiKSxpLmV4cGFuZChyLGMsZyksby5tYXJrVGltZSgiZG9uZSBleHBhbmQgeCIpLGkuZXhwYW5kKGwsdSx2KSxvLm1hcmtUaW1lKCJkb25lIGV4cGFuZCB5Iik7dmFyIHg9bmV3IEFycmF5KHApO2ZvcihkPTA7cD5kO2QrKyl4W2RdPW4oY1tkXSkmJm4odVtkXSk/e3g6Y1tkXSx5OnVbZF19Ont4OiExLHk6ITF9O3JldHVybiB2b2lkIDAhPT10eXBlb2YgZiYmby5tZXJnZUFycmF5KGYseCwibXMiKSx0LmZpcnN0c2NhdHRlcj0hMSx4fX0seyIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjM5MywiLi9tYXJrZXJfY29sb3JzY2FsZV9jYWxjIjo1NDEsIi4vc3VidHlwZXMiOjU0NiwiZmFzdC1pc251bWVyaWMiOjc0fV0sNTMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxvO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaWYocj10W2VdLG49ci5maWxsLCJub25lIiE9PW4mJiJzY2F0dGVyIj09PXIudHlwZSYmKHIub3BhY2l0eT12b2lkIDAsInRvbmV4dHkiPT09bnx8InRvbmV4dHgiPT09bikpZm9yKGk9ZS0xO2k+PTA7aS0tKWlmKG89dFtpXSwic2NhdHRlciI9PT1vLnR5cGUmJm8ueGF4aXM9PT1yLnhheGlzJiZvLnlheGlzPT09ci55YXhpcyl7by5vcGFjaXR5PXZvaWQgMDticmVha319fSx7fV0sNTMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksaT10KCJmYXN0LWlzbnVtZXJpYyIpLG89dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2dldF9zY2FsZSIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcmJhci9kcmF3Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS50cmFjZSxjPXIubWFya2VyLHU9ImNiIityLnVpZDtpZih0Ll9mdWxsTGF5b3V0Ll9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuIit1KS5yZW1vdmUoKSx2b2lkIDA9PT1jfHwhYy5zaG93c2NhbGUpcmV0dXJuIHZvaWQgYS5hdXRvTWFyZ2luKHQsdSk7dmFyIGg9cyhjLmNvbG9yc2NhbGUpLGY9Yy5jb2xvcixkPWMuY21pbixwPWMuY21heDtpKGQpfHwoZD1vLmFnZ051bXMoTWF0aC5taW4sbnVsbCxmKSksaShwKXx8KHA9by5hZ2dOdW1zKE1hdGgubWF4LG51bGwsZikpO3ZhciBnPWVbMF0udC5jYj1sKHQsdSk7Zy5maWxsY29sb3Iobi5zY2FsZS5saW5lYXIoKS5kb21haW4oaC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGQrdFswXSoocC1kKX0pKS5yYW5nZShoLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFsxXX0pKSkuZmlsbGxldmVscyh7c3RhcnQ6ZCxlbmQ6cCxzaXplOihwLWQpLzI1NH0pLm9wdGlvbnMoYy5jb2xvcmJhcikoKSxvLm1hcmtUaW1lKCJkb25lIGNvbG9yYmFyIil9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JiYXIvZHJhdyI6MzA0LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZ2V0X3NjYWxlIjozMTIsIi4uLy4uL2xpYiI6MzczLCIuLi8uLi9wbG90cy9wbG90cyI6NDM3LGQzOjcwLCJmYXN0LWlzbnVtZXJpYyI6NzR9XSw1MzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtQVFNfTElORVNPTkxZOjIwfX0se31dLDUzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj1yKCJsaW5lLnNoYXBlIik7InNwbGluZSI9PT1uJiZyKCJsaW5lLnNtb290aGluZyIpfXZhciBpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi9hdHRyaWJ1dGVzIiksYT10KCIuL2NvbnN0YW50cyIpLHM9dCgiLi9zdWJ0eXBlcyIpLGw9dCgiLi94eV9kZWZhdWx0cyIpLGM9dCgiLi9tYXJrZXJfZGVmYXVsdHMiKSx1PXQoIi4vbGluZV9kZWZhdWx0cyIpLGg9dCgiLi90ZXh0X2RlZmF1bHRzIiksZj10KCIuL2ZpbGxjb2xvcl9kZWZhdWx0cyIpLGQ9dCgiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMvZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscCl7ZnVuY3Rpb24gZyhyLG4pe3JldHVybiBpLmNvZXJjZSh0LGUsbyxyLG4pfXZhciB2PWwodCxlLGcpLG09djxhLlBUU19MSU5FU09OTFk/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyI7cmV0dXJuIHY/KGcoInRleHQiKSxnKCJtb2RlIixtKSxzLmhhc0xpbmVzKGUpJiYodSh0LGUscixnKSxuKHQsZSxnKSxnKCJjb25uZWN0Z2FwcyIpKSxzLmhhc01hcmtlcnMoZSkmJmModCxlLHIscCxnKSxzLmhhc1RleHQoZSkmJmgodCxlLHAsZyksKHMuaGFzTWFya2VycyhlKXx8cy5oYXNUZXh0KGUpKSYmZygibWFya2VyLm1heGRpc3BsYXllZCIpLGcoImZpbGwiKSwibm9uZSIhPT1lLmZpbGwmJihmKHQsZSxyLGcpLHMuaGFzTGluZXMoZSl8fG4odCxlLGcpKSxkKHQsZSxyLHtheGlzOiJ5In0pLHZvaWQgZCh0LGUscix7YXhpczoieCIsaW5oZXJpdDoieSJ9KSk6dm9pZChlLnZpc2libGU9ITEpfX0seyIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycy9kZWZhdWx0cyI6MzI0LCIuLi8uLi9saWIiOjM3MywiLi9hdHRyaWJ1dGVzIjo1MjgsIi4vY29uc3RhbnRzIjo1MzIsIi4vZmlsbGNvbG9yX2RlZmF1bHRzIjo1MzQsIi4vbGluZV9kZWZhdWx0cyI6NTM4LCIuL21hcmtlcl9kZWZhdWx0cyI6NTQyLCIuL3N1YnR5cGVzIjo1NDYsIi4vdGV4dF9kZWZhdWx0cyI6NTQ3LCIuL3h5X2RlZmF1bHRzIjo1NDh9XSw1MzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz0hMTtpZihlLm1hcmtlcil7dmFyIGE9ZS5tYXJrZXIuY29sb3Iscz0oZS5tYXJrZXIubGluZXx8e30pLmNvbG9yO2EmJiFBcnJheS5pc0FycmF5KGEpP289YTpzJiYhQXJyYXkuaXNBcnJheShzKSYmKG89cyl9aSgiZmlsbGNvbG9yIixuLmFkZE9wYWNpdHkoKGUubGluZXx8e30pLmNvbG9yfHxvfHxyLC41KSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMX1dLDUzNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuL3N1YnR5cGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbztpZigibGluZXMiPT09dC5tb2RlKXJldHVybiByPXQubGluZS5jb2xvcixyJiZuLm9wYWNpdHkocik/cjp0LmZpbGxjb2xvcjtpZigibm9uZSI9PT10Lm1vZGUpcmV0dXJuIHQuZmlsbD90LmZpbGxjb2xvcjoiIjt2YXIgYT1lLm1jY3x8KHQubWFya2VyfHx7fSkuY29sb3Iscz1lLm1sY2N8fCgodC5tYXJrZXJ8fHt9KS5saW5lfHx7fSkuY29sb3I7cmV0dXJuIG89YSYmbi5vcGFjaXR5KGEpP2E6cyYmbi5vcGFjaXR5KHMpJiYoZS5tbHd8fCgodC5tYXJrZXJ8fHt9KS5saW5lfHx7fSkud2lkdGgpP3M6IiIsbz9uLm9wYWNpdHkobyk8LjM/bi5hZGRPcGFjaXR5KG8sLjMpOm86KHI9KHQubGluZXx8e30pLmNvbG9yLHImJm4ub3BhY2l0eShyKSYmaS5oYXNMaW5lcyh0KSYmdC5saW5lLndpZHRoP3I6dC5maWxsY29sb3IpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozMDEsIi4vc3VidHlwZXMiOjU0Nn1dLDUzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzIiksbz10KCIuL2dldF90cmFjZV9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgcz10LmNkLGw9c1swXS50cmFjZSxjPXQueGEsdT10LnlhLGg9ZnVuY3Rpb24odCl7dmFyIHI9TWF0aC5tYXgoMyx0Lm1yY3x8MCk7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKGMuYzJwKHQueCktYy5jMnAoZSkpLXIsMS0zL3IpfSxmPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDMsdC5tcmN8fDApO3JldHVybiBNYXRoLm1heChNYXRoLmFicyh1LmMycCh0LnkpLXUuYzJwKHIpKS1lLDEtMy9lKX0sZD1mdW5jdGlvbih0KXt2YXIgbj1NYXRoLm1heCgzLHQubXJjfHwwKSxpPU1hdGguYWJzKGMuYzJwKHQueCktYy5jMnAoZSkpLG89TWF0aC5hYnModS5jMnAodC55KS11LmMycChyKSk7cmV0dXJuIE1hdGgubWF4KE1hdGguc3FydChpKmkrbypvKS1uLDEtMy9uKX0scD1uLmdldERpc3RhbmNlRnVuY3Rpb24oYSxoLGYsZCk7aWYobi5nZXRDbG9zZXN0KHMscCx0KSx0LmluZGV4IT09ITEpe3ZhciBnPXNbdC5pbmRleF0sdj1jLmMycChnLngsITApLG09dS5jMnAoZy55LCEwKSx5PWcubXJjfHwxO3JldHVybiB0LmNvbG9yPW8obCxnKSx0LngwPXYteSx0LngxPXYreSx0LnhMYWJlbFZhbD1nLngsdC55MD1tLXksdC55MT1tK3ksdC55TGFiZWxWYWw9Zy55LGcudHg/dC50ZXh0PWcudHg6bC50ZXh0JiYodC50ZXh0PWwudGV4dCksaS5ob3ZlckluZm8oZyxsLHQpLFt0XX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzIjozMjUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCI6Mzk4LCIuL2dldF90cmFjZV9jb2xvciI6NTM1fV0sNTM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9LGk9dCgiLi9zdWJ0eXBlcyIpO24uaGFzTGluZXM9aS5oYXNMaW5lcyxuLmhhc01hcmtlcnM9aS5oYXNNYXJrZXJzLG4uaGFzVGV4dD1pLmhhc1RleHQsbi5pc0J1YmJsZT1pLmlzQnViYmxlLG4uYXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxuLnN1cHBseURlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLmNsZWFuRGF0YT10KCIuL2NsZWFuX2RhdGEiKSxuLmNhbGM9dCgiLi9jYWxjIiksbi5hcnJheXNUb0NhbGNkYXRhPXQoIi4vYXJyYXlzX3RvX2NhbGNkYXRhIiksbi5wbG90PXQoIi4vcGxvdCIpLG4uY29sb3JiYXI9dCgiLi9jb2xvcmJhciIpLG4uc3R5bGU9dCgiLi9zdHlsZSIpLG4uaG92ZXJQb2ludHM9dCgiLi9ob3ZlciIpLG4uc2VsZWN0UG9pbnRzPXQoIi4vc2VsZWN0Iiksbi5tb2R1bGVUeXBlPSJ0cmFjZSIsbi5uYW1lPSJzY2F0dGVyIixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLG4uY2F0ZWdvcmllcz1bImNhcnRlc2lhbiIsInN5bWJvbHMiLCJtYXJrZXJDb2xvcnNjYWxlIiwiZXJyb3JCYXJzT0siLCJzaG93TGVnZW5kIl0sbi5tZXRhPXt9LGUuZXhwb3J0cz1ufSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Mzk5LCIuL2FycmF5c190b19jYWxjZGF0YSI6NTI3LCIuL2F0dHJpYnV0ZXMiOjUyOCwiLi9jYWxjIjo1MjksIi4vY2xlYW5fZGF0YSI6NTMwLCIuL2NvbG9yYmFyIjo1MzEsIi4vZGVmYXVsdHMiOjUzMywiLi9ob3ZlciI6NTM2LCIuL3Bsb3QiOjU0MywiLi9zZWxlY3QiOjU0NCwiLi9zdHlsZSI6NTQ1LCIuL3N1YnR5cGVzIjo1NDZ9XSw1Mzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPSh0Lm1hcmtlcnx8e30pLmNvbG9yO24oImxpbmUuY29sb3IiLChBcnJheS5pc0FycmF5KGkpPyExOmkpfHxyKSxuKCJsaW5lLndpZHRoIiksbigibGluZS5kYXNoIil9fSx7fV0sNTM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihlKXt2YXIgcj13LmMycCh0W2VdLngpLG49QS5jMnAodFtlXS55KTtyZXR1cm4gcj09PUx8fG49PT1MPyExOltyLG5dfWZ1bmN0aW9uIGkodCl7dmFyIGU9dFswXS93Ll9sZW5ndGgscj10WzFdL0EuX2xlbmd0aDtyZXR1cm4oMSsxMCpNYXRoLm1heCgwLC1lLGUtMSwtcixyLTEpKSpNfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj10WzBdLWVbMF0sbj10WzFdLWVbMV07cmV0dXJuIE1hdGguc3FydChyKnIrbipuKX12YXIgYSxzLGwsYyx1LGgsZixkLHAsZyx2LG0seSxiLHgsXyx3PWUueGF4aXMsQT1lLnlheGlzLGs9ZS5jb25uZWN0R2FwcyxNPWUuYmFzZVRvbGVyYW5jZSxUPWUubGluZWFyLEU9W10sTD1uLkJBRE5VTSxTPS4yLEM9bmV3IEFycmF5KHQubGVuZ3RoKSxQPTA7Zm9yKGE9MDthPHQubGVuZ3RoO2ErKylpZihzPXIoYSkpe2ZvcihQPTAsQ1tQKytdPXMsYSsrO2E8dC5sZW5ndGg7YSsrKXtpZihjPXIoYSksIWMpe2lmKGspY29udGludWU7YnJlYWt9aWYoVCl7aWYoZj1vKGMscyksIShmPGkoYykqUykpe2ZvcihwPVsoY1swXS1zWzBdKS9mLChjWzFdLXNbMV0pL2ZdLHU9cyx2PWYsbT1iPXg9MCxkPSExLGw9YyxhKys7YTx0Lmxlbmd0aDthKyspe2lmKGg9cihhKSwhaCl7aWYoayljb250aW51ZTticmVha31pZihnPVtoWzBdLXNbMF0saFsxXS1zWzFdXSxfPWdbMF0qcFsxXS1nWzFdKnBbMF0sYj1NYXRoLm1pbihiLF8pLHg9TWF0aC5tYXgoeCxfKSx4LWI+aShoKSlicmVhaztsPWgseT1nWzBdKnBbMF0rZ1sxXSpwWzFdLHk+dj8odj15LGM9aCxkPSExKTptPnkmJihtPXksdT1oLGQ9ITApfWlmKGQ/KENbUCsrXT1jLGwhPT11JiYoQ1tQKytdPXUpKToodSE9PXMmJihDW1ArK109dSksbCE9PWMmJihDW1ArK109YykpLENbUCsrXT1sLGE+PXQubGVuZ3RofHwhaClicmVhaztDW1ArK109aCxzPWh9fWVsc2UgQ1tQKytdPWN9RS5wdXNoKEMuc2xpY2UoMCxQKSl9cmV0dXJuIEV9fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjozOTN9XSw1NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXJrZXIscj1lLnNpemVyZWZ8fDEsaT1lLnNpemVtaW58fDAsbz0iYXJlYSI9PT1lLnNpemVtb2RlP2Z1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQodC9yKX06ZnVuY3Rpb24odCl7cmV0dXJuIHQvcn07cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPW8odC8yKTtyZXR1cm4gbihlKSYmZT4wP01hdGgubWF4KGUsaSk6MH19fSx7ImZhc3QtaXNudW1lcmljIjo3NH1dLDU0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGFzX2NvbG9yc2NhbGUiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIiksbz10KCIuL3N1YnR5cGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKG8uaGFzTWFya2Vycyh0KSl7dmFyIGU9dC5tYXJrZXI7bih0LCJtYXJrZXIiKSYmaSh0LGUuY29sb3IsIm1hcmtlciIsImMiKSxuKHQsIm1hcmtlci5saW5lIikmJmkodCxlLmxpbmUuY29sb3IsIm1hcmtlci5saW5lIiwiYyIpfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjMwOCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hhc19jb2xvcnNjYWxlIjozMTMsIi4vc3VidHlwZXMiOjU0Nn1dLDU0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGFzX2NvbG9yc2NhbGUiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLGE9dCgiLi9zdWJ0eXBlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzLGwpe3ZhciBjLHU9YS5pc0J1YmJsZSh0KSxoPSh0LmxpbmV8fHt9KS5jb2xvcjtoJiYocj1oKSxsKCJtYXJrZXIuc3ltYm9sIiksbCgibWFya2VyLm9wYWNpdHkiLHU/Ljc6MSksbCgibWFya2VyLnNpemUiKSxsKCJtYXJrZXIuY29sb3IiLHIpLGkodCwibWFya2VyIikmJm8odCxlLHMsbCx7cHJlZml4OiJtYXJrZXIuIixjTGV0dGVyOiJjIn0pLGM9aCYmZS5tYXJrZXIuY29sb3IhPT1oP2g6dT9uLmJhY2tncm91bmQ6bi5kZWZhdWx0TGluZSxsKCJtYXJrZXIubGluZS5jb2xvciIsYyksaSh0LCJtYXJrZXIubGluZSIpJiZvKHQsZSxzLGwse3ByZWZpeDoibWFya2VyLmxpbmUuIixjTGV0dGVyOiJjIn0pLGwoIm1hcmtlci5saW5lLndpZHRoIix1PzE6MCksdSYmKGwoIm1hcmtlci5zaXplcmVmIiksbCgibWFya2VyLnNpemVtaW4iKSxsKCJtYXJrZXIuc2l6ZW1vZGUiKSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjozMTAsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oYXNfY29sb3JzY2FsZSI6MzEzLCIuL3N1YnR5cGVzIjo1NDZ9XSw1NDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49ZS54KCksbz1lLnkoKSxhPWkuZXh0ZW50KG4ucmFuZ2UubWFwKG4ubDJjKSkscz1pLmV4dGVudChvLnJhbmdlLm1hcChvLmwyYykpO3IuZm9yRWFjaChmdW5jdGlvbih0LGUpe3ZhciBuPXRbMF0udHJhY2U7aWYobC5oYXNNYXJrZXJzKG4pKXt2YXIgaT1uLm1hcmtlci5tYXhkaXNwbGF5ZWQ7aWYoMCE9PWkpe3ZhciBvPXQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng+PWFbMF0mJnQueDw9YVsxXSYmdC55Pj1zWzBdJiZ0Lnk8PXNbMV19KSxjPU1hdGguY2VpbChvLmxlbmd0aC9pKSx1PTA7ci5mb3JFYWNoKGZ1bmN0aW9uKHQscil7dmFyIG49dFswXS50cmFjZTtsLmhhc01hcmtlcnMobikmJm4ubWFya2VyLm1heGRpc3BsYXllZD4wJiZlPnImJnUrK30pO3ZhciBoPU1hdGgucm91bmQodSpjLzMrTWF0aC5mbG9vcih1LzMpKmMvNy4xKTt0LmZvckVhY2goZnVuY3Rpb24odCl7ZGVsZXRlIHQudmlzfSksby5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7MD09PU1hdGgucm91bmQoKGUraCklYykmJih0LnZpcz0hMCl9KX19fSl9dmFyIGk9dCgiZDMiKSxvPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIikscz10KCIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycyIpLGw9dCgiLi9zdWJ0eXBlcyIpLGM9dCgiLi9hcnJheXNfdG9fY2FsY2RhdGEiKSx1PXQoIi4vbGluZV9wb2ludHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGgodCl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZpc30pfW4odCxlLHIpO3ZhciBmPWUueCgpLGQ9ZS55KCkscD1lLnBsb3Quc2VsZWN0KCIuc2NhdHRlcmxheWVyIikuc2VsZWN0QWxsKCJnLnRyYWNlLnNjYXR0ZXIiKS5kYXRhKHIpO3AuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRyYWNlIHNjYXR0ZXIiKS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDIpLHAuY2FsbChzLnBsb3QsZSk7dmFyIGcsdixtLHk9IiI7cC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1lLmxpbmUsbj1pLnNlbGVjdCh0aGlzKTtpZihlLnZpc2libGU9PT0hMCYmKHRbMF0ubm9kZTM9bixjKHQpLGwuaGFzTGluZXMoZSl8fCJub25lIiE9PWUuZmlsbCkpe3ZhciBvLHMsaCxwLGI9IiIseD0iIjtnPSJ0b3plcm8iPT09ZS5maWxsLnN1YnN0cigwLDYpfHwidG8iPT09ZS5maWxsLnN1YnN0cigwLDIpJiYheT9uLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWZpbGwiLCEwKTpudWxsLG0mJih2PW0uZGF0dW0odCkpLG09bi5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJqcy1maWxsIiwhMCksLTEhPT1bImh2IiwidmgiLCJodmgiLCJ2aHYiXS5pbmRleE9mKHIuc2hhcGUpPyhzPWEuc3RlcHMoci5zaGFwZSksaD1hLnN0ZXBzKHIuc2hhcGUuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKSkpOnM9aD0ic3BsaW5lIj09PXIuc2hhcGU/ZnVuY3Rpb24odCl7cmV0dXJuIGEuc21vb3Rob3Blbih0LHIuc21vb3RoaW5nKX06ZnVuY3Rpb24odCl7cmV0dXJuIk0iK3Quam9pbigiTCIpfSxwPWZ1bmN0aW9uKHQpe3JldHVybiJMIitoKHQucmV2ZXJzZSgpKS5zdWJzdHIoMSl9O3ZhciBfPXUodCx7eGF4aXM6Zix5YXhpczpkLGNvbm5lY3RHYXBzOmUuY29ubmVjdGdhcHMsYmFzZVRvbGVyYW5jZTpNYXRoLm1heChyLndpZHRofHwxLDMpLzQsbGluZWFyOiJsaW5lYXIiPT09ci5zaGFwZX0pO2lmKF8ubGVuZ3RoKXtmb3IodmFyIHc9X1swXVswXSxBPV9bXy5sZW5ndGgtMV0saz1BW0EubGVuZ3RoLTFdLE09MDtNPF8ubGVuZ3RoO00rKyl7dmFyIFQ9X1tNXTtvPXMoVCksYis9Yj8iTCIrby5zdWJzdHIoMSk6byx4PXAoVCkreCxsLmhhc0xpbmVzKGUpJiZULmxlbmd0aD4xJiZuLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWxpbmUiLCEwKS5hdHRyKCJkIixvKX1nP3cmJmsmJigieSI9PT1lLmZpbGwuY2hhckF0KGUuZmlsbC5sZW5ndGgtMSk/d1sxXT1rWzFdPWQuYzJwKDAsITApOndbMF09a1swXT1mLmMycCgwLCEwKSxnLmF0dHIoImQiLGIrIkwiK2srIkwiK3crIloiKSk6InRvbmV4dCI9PT1lLmZpbGwuc3Vic3RyKDAsNikmJmImJnkmJnYuYXR0cigiZCIsYit5KyJaIikseT14fX19KSxwLnNlbGVjdEFsbCgicGF0aDpub3QoW2RdKSIpLnJlbW92ZSgpLHAuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJwb2ludHMiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1pLnNlbGVjdCh0aGlzKSxuPWwuaGFzTWFya2VycyhlKSxzPWwuaGFzVGV4dChlKTshbiYmIXN8fGUudmlzaWJsZSE9PSEwP3IucmVtb3ZlKCk6KG4mJnIuc2VsZWN0QWxsKCJwYXRoLnBvaW50IikuZGF0YShlLm1hcmtlci5tYXhkaXNwbGF5ZWQ/aDpvLmlkZW50aXR5KS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoInBvaW50IiwhMCkuY2FsbChhLnRyYW5zbGF0ZVBvaW50cyxmLGQpLHMmJnIuc2VsZWN0QWxsKCJnIikuZGF0YShlLm1hcmtlci5tYXhkaXNwbGF5ZWQ/aDpvLmlkZW50aXR5KS5lbnRlcigpLmFwcGVuZCgiZyIpLmFwcGVuZCgidGV4dCIpLmNhbGwoYS50cmFuc2xhdGVQb2ludHMsZixkKSl9KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozMTksIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzIjozMjUsIi4uLy4uL2xpYiI6MzczLCIuL2FycmF5c190b19jYWxjZGF0YSI6NTI3LCIuL2xpbmVfcG9pbnRzIjo1MzksIi4vc3VidHlwZXMiOjU0NixkMzo3MH1dLDU0NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3N1YnR5cGVzIiksaT0uMjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixvLGEscyxsPXQuY2QsYz10LnhheGlzLHU9dC55YXhpcyxoPVtdLGY9bFswXS50cmFjZSxkPWYuaW5kZXgscD1mLm1hcmtlcjtpZihuLmhhc01hcmtlcnMoZil8fG4uaGFzVGV4dChmKSl7dmFyIGc9QXJyYXkuaXNBcnJheShwLm9wYWNpdHkpPzE6cC5vcGFjaXR5O2lmKGU9PT0hMSlmb3Iocj0wO3I8bC5sZW5ndGg7cisrKWxbcl0uZGltPTA7ZWxzZSBmb3Iocj0wO3I8bC5sZW5ndGg7cisrKW89bFtyXSxhPWMuYzJwKG8ueCkscz11LmMycChvLnkpLGUuY29udGFpbnMoW2Esc10pPyhoLnB1c2goe2N1cnZlTnVtYmVyOmQscG9pbnROdW1iZXI6cix4Om8ueCx5Om8ueX0pLG8uZGltPTApOm8uZGltPTE7cmV0dXJuIGxbMF0ubm9kZTMuc2VsZWN0QWxsKCJwYXRoLnBvaW50Iikuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybigodC5tbysxfHxnKzEpLTEpKih0LmRpbT9pOjEpfSksbFswXS5ub2RlMy5zZWxlY3RBbGwoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZGltP2k6MX0pLGh9fX0seyIuL3N1YnR5cGVzIjo1NDZ9XSw1NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLnRyYWNlLnNjYXR0ZXIiKTtlLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFjaXR5fSksZS5zZWxlY3RBbGwoImcucG9pbnRzIikuZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgucG9pbnQiKS5jYWxsKGkucG9pbnRTdHlsZSx0LnRyYWNlfHx0WzBdLnRyYWNlKSxuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInRleHQiKS5jYWxsKGkudGV4dFBvaW50U3R5bGUsdC50cmFjZXx8dFswXS50cmFjZSl9KSxlLnNlbGVjdEFsbCgiZy50cmFjZSBwYXRoLmpzLWxpbmUiKS5jYWxsKGkubGluZUdyb3VwU3R5bGUpLGUuc2VsZWN0QWxsKCJnLnRyYWNlIHBhdGguanMtZmlsbCIpLmNhbGwoaS5maWxsR3JvdXBTdHlsZSksZS5jYWxsKG8uc3R5bGUpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjMxOSwiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiOjMyNSxkMzo3MH1dLDU0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2hhc0xpbmVzOmZ1bmN0aW9uKHQpe3JldHVybiB0LnZpc2libGUmJnQubW9kZSYmLTEhPT10Lm1vZGUuaW5kZXhPZigibGluZXMiKX0saGFzTWFya2VyczpmdW5jdGlvbih0KXtyZXR1cm4gdC52aXNpYmxlJiZ0Lm1vZGUmJi0xIT09dC5tb2RlLmluZGV4T2YoIm1hcmtlcnMiKX0saGFzVGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdC52aXNpYmxlJiZ0Lm1vZGUmJi0xIT09dC5tb2RlLmluZGV4T2YoInRleHQiKX0saXNCdWJibGU6ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0Lm1hcmtlciYmQXJyYXkuaXNBcnJheSh0Lm1hcmtlci5zaXplKX19fSx7fV0sNTQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXtpKCJ0ZXh0cG9zaXRpb24iKSxuLmNvZXJjZUZvbnQoaSwidGV4dGZvbnQiLHIuZm9udCl9fSx7Ii4uLy4uL2xpYiI6MzczfV0sNTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG4saT1yKCJ4Iiksbz1yKCJ5Iik7aWYoaSlvPyhuPU1hdGgubWluKGkubGVuZ3RoLG8ubGVuZ3RoKSxuPGkubGVuZ3RoJiYoZS54PWkuc2xpY2UoMCxuKSksbjxvLmxlbmd0aCYmKGUueT1vLnNsaWNlKDAsbikpKToobj1pLmxlbmd0aCxyKCJ5MCIpLHIoImR5IikpO2Vsc2V7aWYoIW8pcmV0dXJuIDA7bj1lLnkubGVuZ3RoLHIoIngwIikscigiZHgiKX1yZXR1cm4gbn19LHt9XSw1NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm57c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LHNjYWxlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxMCxkZmx0OjIvM319fXZhciBpPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29uc3RhbnRzL2dsX21hcmtlcnMiKSxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHM9aS5saW5lLGw9aS5tYXJrZXIsYz1sLmxpbmU7ZS5leHBvcnRzPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx0ZXh0OmEoe30saS50ZXh0LHt9KSxtb2RlOmEoe30saS5tb2RlLHtkZmx0OiJsaW5lcyttYXJrZXJzIn0pLHN1cmZhY2VheGlzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6Wy0xLDAsMSwyXSxkZmx0Oi0xfSxzdXJmYWNlY29sb3I6e3ZhbFR5cGU6ImNvbG9yIn0scHJvamVjdGlvbjp7eDpuKCJ4IikseTpuKCJ5IiksejpuKCJ6Iil9LGNvbm5lY3RnYXBzOmkuY29ubmVjdGdhcHMsbGluZTp7Y29sb3I6cy5jb2xvcix3aWR0aDpzLndpZHRoLGRhc2g6cy5kYXNofSxtYXJrZXI6e2NvbG9yOmwuY29sb3Isc3ltYm9sOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6T2JqZWN0LmtleXMobyksZGZsdDoiY2lyY2xlIixhcnJheU9rOiEwfSxzaXplOmEoe30sbC5zaXplLHtkZmx0Ojh9KSxzaXplcmVmOmwuc2l6ZXJlZixzaXplbWluOmwuc2l6ZW1pbixzaXplbW9kZTpsLnNpemVtb2RlLG9wYWNpdHk6YSh7fSxsLm9wYWNpdHkse2FycmF5T2s6ITF9KSxjb2xvcnNjYWxlOmwuY29sb3JzY2FsZSxjYXV0bzpsLmNhdXRvLGNtYXg6bC5jbWF4LGNtaW46bC5jbWluLGF1dG9jb2xvcnNjYWxlOmwuYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOmwucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTpsLnNob3dzY2FsZSxsaW5lOntjb2xvcjpjLmNvbG9yLHdpZHRoOmEoe30sYy53aWR0aCx7YXJyYXlPazohMX0pLGNvbG9yc2NhbGU6Yy5jb2xvcnNjYWxlLGNhdXRvOmMuY2F1dG8sY21heDpjLmNtYXgsY21pbjpjLmNtaW4sYXV0b2NvbG9yc2NhbGU6Yy5hdXRvY29sb3JzY2FsZSxyZXZlcnNlc2NhbGU6Yy5yZXZlcnNlc2NhbGV9fSx0ZXh0cG9zaXRpb246YSh7fSxpLnRleHRwb3NpdGlvbix7ZGZsdDoidG9wIGNlbnRlciJ9KSx0ZXh0Zm9udDppLnRleHRmb250LF9uZXN0ZWRNb2R1bGVzOntlcnJvcl94OiJFcnJvckJhcnMiLGVycm9yX3k6IkVycm9yQmFycyIsZXJyb3JfejoiRXJyb3JCYXJzIiwibWFya2VyLmNvbG9yYmFyIjoiQ29sb3JiYXIifX19LHsiLi4vLi4vY29uc3RhbnRzL2dsX21hcmtlcnMiOjM2MSwiLi4vLi4vbGliL2V4dGVuZCI6MzY5LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjUyOH1dLDU1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSIpLGk9dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JzY2FsZV9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W3t4OiExLHk6ITEsdHJhY2U6ZSx0Ont9fV07cmV0dXJuIG4ociksaShlKSxyfX0seyIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSI6NTI3LCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcnNjYWxlX2NhbGMiOjU0MX1dLDU1MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtpZighZXx8IWUudmlzaWJsZSlyZXR1cm4gbnVsbDtmb3IodmFyIG49YShlKSxpPW5ldyBBcnJheSh0Lmxlbmd0aCksbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz1uKCt0W29dLG8pO2lbb109Wy1zWzBdKnIsc1sxXSpyXX1yZXR1cm4gaX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0pcmV0dXJuIHRbZV0ubGVuZ3RoO3JldHVybiAwfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1bbih0LngsdC5lcnJvcl94LGVbMF0pLG4odC55LHQuZXJyb3JfeSxlWzFdKSxuKHQueix0LmVycm9yX3osZVsyXSldLG89aShyKTtpZigwPT09bylyZXR1cm4gbnVsbDtmb3IodmFyIGE9bmV3IEFycmF5KG8pLHM9MDtvPnM7cysrKXtmb3IodmFyIGw9W1swLDAsMF0sWzAsMCwwXV0sYz0wOzM+YztjKyspaWYocltjXSlmb3IodmFyIHU9MDsyPnU7dSsrKWxbdV1bY109cltjXVtzXVt1XTthW3NdPWx9cmV0dXJuIGF9dmFyIGE9dCgiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMvY29tcHV0ZV9lcnJvciIpO2UuZXhwb3J0cz1vfSx7Ii4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzL2NvbXB1dGVfZXJyb3IiOjMyM31dLDU1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dGhpcy5zY2VuZT10LHRoaXMudWlkPWUsdGhpcy5saW5lUGxvdD1udWxsLHRoaXMuc2NhdHRlclBsb3Q9bnVsbCx0aGlzLmVycm9yQmFycz1udWxsLHRoaXMudGV4dE1hcmtlcnM9bnVsbCx0aGlzLmRlbGF1bmF5TWVzaD1udWxsLHRoaXMuY29sb3I9bnVsbCx0aGlzLm1vZGU9IiIsdGhpcy5kYXRhUG9pbnRzPVtdLHRoaXMuYXhlc0JvdW5kcz1bWy0oMS8wKSwtKDEvMCksLSgxLzApXSxbMS8wLDEvMCwxLzBdXSx0aGlzLnRleHRMYWJlbHM9bnVsbCx0aGlzLmRhdGE9bnVsbH1mdW5jdGlvbiBpKHQsZSxyKXt2YXIgbixpPShyKzEpJTMsbz0ocisyKSUzLGE9W10scz1bXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKXt2YXIgbD10W25dOyFpc05hTihsW2ldKSYmaXNGaW5pdGUobFtpXSkmJiFpc05hTihsW29dKSYmaXNGaW5pdGUobFtvXSkmJihhLnB1c2goW2xbaV0sbFtvXV0pLHMucHVzaChuKSl9dmFyIGM9bShhKTtmb3Iobj0wO248Yy5sZW5ndGg7KytuKWZvcih2YXIgdT1jW25dLGg9MDtoPHUubGVuZ3RoOysraCl1W2hdPXNbdVtoXV07cmV0dXJue3Bvc2l0aW9uczp0LGNlbGxzOmMsbWVzaENvbG9yOmV9fWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPVswLDAsMF0scj1bWzAsMCwwXSxbMCwwLDBdLFswLDAsMF1dLG49WzAsMCwwXSxpPTA7Mz5pO2krKyl7dmFyIG89dFtpXTtvJiZvLmNvcHlfenN0eWxlIT09ITEmJihvPXRbMl0pLG8mJihlW2ldPW8ud2lkdGgvMixyW2ldPWIoby5jb2xvciksbj1vLnRoaWNrbmVzcyl9cmV0dXJue2NhcFNpemU6ZSxjb2xvcjpyLGxpbmVXaWR0aDpufX1mdW5jdGlvbiBhKHQpe3ZhciBlPVswLDBdO3JldHVybiBBcnJheS5pc0FycmF5KHQpP1swLC0xXToodC5pbmRleE9mKCJib3R0b20iKT49MCYmKGVbMV0rPTEpLHQuaW5kZXhPZigidG9wIik+PTAmJihlWzFdLT0xKSx0LmluZGV4T2YoImxlZnQiKT49MCYmKGVbMF0tPTEpLHQuaW5kZXhPZigicmlnaHQiKT49MCYmKGVbMF0rPTEpLGUpfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gZSg0KnQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIEFbdF19ZnVuY3Rpb24gYyh0LGUscixuLGkpe3ZhciBvPW51bGw7aWYoQXJyYXkuaXNBcnJheSh0KSl7bz1bXTtmb3IodmFyIGE9MDtlPmE7YSsrKXZvaWQgMD09PXRbYV0/b1thXT1uOm9bYV09cih0W2FdLGkpfWVsc2Ugbz1yKHQseS5pZGVudGl0eSk7cmV0dXJuIG99ZnVuY3Rpb24gdSh0LGUpe3ZhciByLG4saSx1LGgsZixkPVtdLHA9dC5mdWxsU2NlbmVMYXlvdXQsZz10LmRhdGFTY2FsZSx2PXAueGF4aXMsbT1wLnlheGlzLHc9cC56YXhpcyxBPWUubWFya2VyLE09ZS5saW5lLFQ9ZS54fHxbXSxFPWUueXx8W10sTD1lLnp8fFtdLFM9VC5sZW5ndGg7Zm9yKG49MDtTPm47bisrKWk9di5kMmwoVFtuXSkqZ1swXSx1PW0uZDJsKEVbbl0pKmdbMV0saD13LmQybChMW25dKSpnWzJdLGRbbl09W2ksdSxoXTtpZihBcnJheS5pc0FycmF5KGUudGV4dCkpZj1lLnRleHQ7ZWxzZSBpZih2b2lkIDAhPT1lLnRleHQpZm9yKGY9bmV3IEFycmF5KFMpLG49MDtTPm47bisrKWZbbl09ZS50ZXh0O2lmKHI9e3Bvc2l0aW9uOmQsbW9kZTplLm1vZGUsdGV4dDpmfSwibGluZSJpbiBlJiYoci5saW5lQ29sb3I9YihNLmNvbG9yKSxyLmxpbmVXaWR0aD1NLndpZHRoLHIubGluZURhc2hlcz1NLmRhc2gpLCJtYXJrZXIiaW4gZSl7dmFyIEM9XyhlKTtyLnNjYXR0ZXJDb2xvcj14KEEsMSxTKSxyLnNjYXR0ZXJTaXplPWMoQS5zaXplLFMscywyMCxDKSxyLnNjYXR0ZXJNYXJrZXI9YyhBLnN5bWJvbCxTLGwsIlx1MjVjZiIpLHIuc2NhdHRlckxpbmVXaWR0aD1BLmxpbmUud2lkdGgsci5zY2F0dGVyTGluZUNvbG9yPXgoQS5saW5lLDEsUyksci5zY2F0dGVyQW5nbGU9MH0idGV4dHBvc2l0aW9uImluIGUmJihyLnRleHRPZmZzZXQ9YShlLnRleHRwb3NpdGlvbiksci50ZXh0Q29sb3I9eChlLnRleHRmb250LDEsUyksci50ZXh0U2l6ZT1jKGUudGV4dGZvbnQuc2l6ZSxTLHkuaWRlbnRpdHksMTIpLHIudGV4dEZvbnQ9ZS50ZXh0Zm9udC5mYW1pbHksci50ZXh0QW5nbGU9MCk7dmFyIFA9WyJ4IiwieSIsInoiXTtmb3Ioci5wcm9qZWN0PVshMSwhMSwhMV0sci5wcm9qZWN0U2NhbGU9WzEsMSwxXSxyLnByb2plY3RPcGFjaXR5PVsxLDEsMV0sbj0wOzM+bjsrK24pe3ZhciB6PWUucHJvamVjdGlvbltQW25dXTsoci5wcm9qZWN0W25dPXouc2hvdykmJihyLnByb2plY3RPcGFjaXR5W25dPXoub3BhY2l0eSxyLnByb2plY3RTY2FsZVtuXT16LnNjYWxlKX1yLmVycm9yQm91bmRzPWsoZSxnKTt2YXIgUj1vKFtlLmVycm9yX3gsZS5lcnJvcl95LGUuZXJyb3Jfel0pO3JldHVybiByLmVycm9yQ29sb3I9Ui5jb2xvcixyLmVycm9yTGluZVdpZHRoPVIubGluZVdpZHRoLHIuZXJyb3JDYXBTaXplPVIuY2FwU2l6ZSxyLmRlbGF1bmF5QXhpcz1lLnN1cmZhY2VheGlzLHIuZGVsYXVuYXlDb2xvcj1iKGUuc3VyZmFjZWNvbG9yKSxyfWZ1bmN0aW9uIGgodCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGU9dFswXTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKHQ9ZSksInJnYigiK3Quc2xpY2UoMCwzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQoMjU1KnQpfSkrIikifXJldHVybiBudWxsfWZ1bmN0aW9uIGYodCxlKXt2YXIgcj1uZXcgbih0LGUudWlkKTtyZXR1cm4gci51cGRhdGUoZSkscn12YXIgZD10KCJnbC1saW5lM2QiKSxwPXQoImdsLXNjYXR0ZXIzZCIpLGc9dCgiZ2wtZXJyb3IzZCIpLHY9dCgiZ2wtbWVzaDNkIiksbT10KCJkZWxhdW5heS10cmlhbmd1bGF0ZSIpLHk9dCgiLi4vLi4vbGliIiksYj10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IikseD10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIiksXz10KCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLHc9dCgiLi4vLi4vY29uc3RhbnRzL2dsM2RfZGFzaGVzIiksQT10KCIuLi8uLi9jb25zdGFudHMvZ2xfbWFya2VycyIpLGs9dCgiLi9jYWxjX2Vycm9ycyIpLE09bi5wcm90b3R5cGU7TS5oYW5kbGVQaWNrPWZ1bmN0aW9uKHQpe2lmKHQub2JqZWN0JiYodC5vYmplY3Q9PT10aGlzLmxpbmVQbG90fHx0Lm9iamVjdD09PXRoaXMuZGVsYXVuYXlNZXNofHx0Lm9iamVjdD09PXRoaXMudGV4dE1hcmtlcnN8fHQub2JqZWN0PT09dGhpcy5zY2F0dGVyUGxvdCkpe3Qub2JqZWN0LmhpZ2hsaWdodCYmdC5vYmplY3QuaGlnaGxpZ2h0KG51bGwpLHRoaXMuc2NhdHRlclBsb3QmJih0Lm9iamVjdD10aGlzLnNjYXR0ZXJQbG90LHRoaXMuc2NhdHRlclBsb3QuaGlnaGxpZ2h0KHQuZGF0YSkpLHRoaXMudGV4dExhYmVscyYmdm9pZCAwIT09dGhpcy50ZXh0TGFiZWxzW3QuZGF0YS5pbmRleF0/dC50ZXh0TGFiZWw9dGhpcy50ZXh0TGFiZWxzW3QuZGF0YS5pbmRleF06dC50ZXh0TGFiZWw9IiI7dmFyIGU9dC5kYXRhLmluZGV4O3JldHVybiB0LnRyYWNlQ29vcmRpbmF0ZT1bdGhpcy5kYXRhLnhbZV0sdGhpcy5kYXRhLnlbZV0sdGhpcy5kYXRhLnpbZV1dLCEwfX0sTS51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGUscixuLG8sYT10aGlzLnNjZW5lLmdscGxvdC5nbCxzPXcuc29saWQ7dGhpcy5kYXRhPXQ7dmFyIGw9dSh0aGlzLnNjZW5lLHQpOyJtb2RlImluIGwmJih0aGlzLm1vZGU9bC5tb2RlKSwibGluZURhc2hlcyJpbiBsJiZsLmxpbmVEYXNoZXMgaW4gdyYmKHM9d1tsLmxpbmVEYXNoZXNdKSx0aGlzLmNvbG9yPWgobC5zY2F0dGVyQ29sb3IpfHxoKGwubGluZUNvbG9yKSx0aGlzLmRhdGFQb2ludHM9bC5wb3NpdGlvbixlPXtnbDphLHBvc2l0aW9uOmwucG9zaXRpb24sY29sb3I6bC5saW5lQ29sb3IsbGluZVdpZHRoOmwubGluZVdpZHRofHwxLGRhc2hlczpzWzBdLGRhc2hTY2FsZTpzWzFdLG9wYWNpdHk6dC5vcGFjaXR5LGNvbm5lY3RHYXBzOnQuY29ubmVjdGdhcHN9LC0xIT09dGhpcy5tb2RlLmluZGV4T2YoImxpbmVzIik/dGhpcy5saW5lUGxvdD90aGlzLmxpbmVQbG90LnVwZGF0ZShlKToodGhpcy5saW5lUGxvdD1kKGUpLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLmxpbmVQbG90KSk6dGhpcy5saW5lUGxvdCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmxpbmVQbG90KSx0aGlzLmxpbmVQbG90LmRpc3Bvc2UoKSx0aGlzLmxpbmVQbG90PW51bGwpO3ZhciBjPXQub3BhY2l0eTtpZih0Lm1hcmtlciYmdC5tYXJrZXIub3BhY2l0eSYmKGMqPXQubWFya2VyLm9wYWNpdHkpLHI9e2dsOmEscG9zaXRpb246bC5wb3NpdGlvbixjb2xvcjpsLnNjYXR0ZXJDb2xvcixzaXplOmwuc2NhdHRlclNpemUsZ2x5cGg6bC5zY2F0dGVyTWFya2VyLG9wYWNpdHk6YyxvcnRob2dyYXBoaWM6ITAsbGluZVdpZHRoOmwuc2NhdHRlckxpbmVXaWR0aCxsaW5lQ29sb3I6bC5zY2F0dGVyTGluZUNvbG9yLHByb2plY3Q6bC5wcm9qZWN0LHByb2plY3RTY2FsZTpsLnByb2plY3RTY2FsZSxwcm9qZWN0T3BhY2l0eTpsLnByb2plY3RPcGFjaXR5fSwtMSE9PXRoaXMubW9kZS5pbmRleE9mKCJtYXJrZXJzIik/dGhpcy5zY2F0dGVyUGxvdD90aGlzLnNjYXR0ZXJQbG90LnVwZGF0ZShyKToodGhpcy5zY2F0dGVyUGxvdD1wKHIpLHRoaXMuc2NhdHRlclBsb3QuaGlnaGxpZ2h0U2NhbGU9MSx0aGlzLnNjZW5lLmdscGxvdC5hZGQodGhpcy5zY2F0dGVyUGxvdCkpOnRoaXMuc2NhdHRlclBsb3QmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5zY2F0dGVyUGxvdCksdGhpcy5zY2F0dGVyUGxvdC5kaXNwb3NlKCksdGhpcy5zY2F0dGVyUGxvdD1udWxsKSxvPXtnbDphLHBvc2l0aW9uOmwucG9zaXRpb24sZ2x5cGg6bC50ZXh0LGNvbG9yOmwudGV4dENvbG9yLHNpemU6bC50ZXh0U2l6ZSxhbmdsZTpsLnRleHRBbmdsZSxhbGlnbm1lbnQ6bC50ZXh0T2Zmc2V0LGZvbnQ6bC50ZXh0Rm9udCxvcnRob2dyYXBoaWM6ITAsbGluZVdpZHRoOjAscHJvamVjdDohMSxvcGFjaXR5OnQub3BhY2l0eX0sdGhpcy50ZXh0TGFiZWxzPWwudGV4dCwtMSE9PXRoaXMubW9kZS5pbmRleE9mKCJ0ZXh0Iik/dGhpcy50ZXh0TWFya2Vycz90aGlzLnRleHRNYXJrZXJzLnVwZGF0ZShvKToodGhpcy50ZXh0TWFya2Vycz1wKG8pLHRoaXMudGV4dE1hcmtlcnMuaGlnaGxpZ2h0U2NhbGU9MSx0aGlzLnNjZW5lLmdscGxvdC5hZGQodGhpcy50ZXh0TWFya2VycykpOnRoaXMudGV4dE1hcmtlcnMmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy50ZXh0TWFya2VycyksdGhpcy50ZXh0TWFya2Vycy5kaXNwb3NlKCksdGhpcy50ZXh0TWFya2Vycz1udWxsKSxuPXtnbDphLHBvc2l0aW9uOmwucG9zaXRpb24sY29sb3I6bC5lcnJvckNvbG9yLGVycm9yOmwuZXJyb3JCb3VuZHMsbGluZVdpZHRoOmwuZXJyb3JMaW5lV2lkdGgsY2FwU2l6ZTpsLmVycm9yQ2FwU2l6ZSxvcGFjaXR5OnQub3BhY2l0eX0sdGhpcy5lcnJvckJhcnM/bC5lcnJvckJvdW5kcz90aGlzLmVycm9yQmFycy51cGRhdGUobik6KHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmVycm9yQmFycyksdGhpcy5lcnJvckJhcnMuZGlzcG9zZSgpLHRoaXMuZXJyb3JCYXJzPW51bGwpOmwuZXJyb3JCb3VuZHMmJih0aGlzLmVycm9yQmFycz1nKG4pLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLmVycm9yQmFycykpLGwuZGVsYXVuYXlBeGlzPj0wKXt2YXIgZj1pKGwucG9zaXRpb24sbC5kZWxhdW5heUNvbG9yLGwuZGVsYXVuYXlBeGlzKTt0aGlzLmRlbGF1bmF5TWVzaD90aGlzLmRlbGF1bmF5TWVzaC51cGRhdGUoZik6KGYuZ2w9YSx0aGlzLmRlbGF1bmF5TWVzaD12KGYpLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLmRlbGF1bmF5TWVzaCkpfWVsc2UgdGhpcy5kZWxhdW5heU1lc2gmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5kZWxhdW5heU1lc2gpLHRoaXMuZGVsYXVuYXlNZXNoLmRpc3Bvc2UoKSx0aGlzLmRlbGF1bmF5TWVzaD1udWxsKX0sTS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5saW5lUGxvdCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmxpbmVQbG90KSx0aGlzLmxpbmVQbG90LmRpc3Bvc2UoKSksdGhpcy5zY2F0dGVyUGxvdCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLnNjYXR0ZXJQbG90KSx0aGlzLnNjYXR0ZXJQbG90LmRpc3Bvc2UoKSksdGhpcy5lcnJvckJhcnMmJih0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLmVycm9yQmFycyksdGhpcy5lcnJvckJhcnMuZGlzcG9zZSgpKSx0aGlzLnRleHRNYXJrZXJzJiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMudGV4dE1hcmtlcnMpLHRoaXMudGV4dE1hcmtlcnMuZGlzcG9zZSgpKSx0aGlzLmRlbGF1bmF5TWVzaCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLnRleHRNYXJrZXJzKSx0aGlzLmRlbGF1bmF5TWVzaC5kaXNwb3NlKCkpfSxlLmV4cG9ydHM9Zn0seyIuLi8uLi9jb25zdGFudHMvZ2wzZF9kYXNoZXMiOjM2MCwiLi4vLi4vY29uc3RhbnRzL2dsX21hcmtlcnMiOjM2MSwiLi4vLi4vbGliIjozNzMsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjM3MSwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6MzgzLCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyI6NTQwLCIuL2NhbGNfZXJyb3JzIjo1NTEsImRlbGF1bmF5LXRyaWFuZ3VsYXRlIjo3MSwiZ2wtZXJyb3IzZCI6NzgsImdsLWxpbmUzZCI6ODQsImdsLW1lc2gzZCI6MTA3LCJnbC1zY2F0dGVyM2QiOjE1MH1dLDU1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj0wLGk9cigieCIpLG89cigieSIpLGE9cigieiIpO3JldHVybiBpJiZvJiZhJiYobj1NYXRoLm1pbihpLmxlbmd0aCxvLmxlbmd0aCxhLmxlbmd0aCksbjxpLmxlbmd0aCYmKGUueD1pLnNsaWNlKDAsbikpLG48by5sZW5ndGgmJihlLnk9by5zbGljZSgwLG4pKSxuPGEubGVuZ3RoJiYoZS56PWEuc2xpY2UoMCxuKSkpLG59dmFyIGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksYT10KCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzL2RlZmF1bHRzIiksdT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaCl7ZnVuY3Rpb24gZihyLG4pe3JldHVybiBpLmNvZXJjZSh0LGUsdSxyLG4pfXZhciBkPW4odCxlLGYpO2lmKCFkKXJldHVybiB2b2lkKGUudmlzaWJsZT0hMSk7ZigidGV4dCIpLGYoIm1vZGUiKSxvLmhhc0xpbmVzKGUpJiYoZigiY29ubmVjdGdhcHMiKSxzKHQsZSxyLGYpKSxvLmhhc01hcmtlcnMoZSkmJmEodCxlLHIsaCxmKSxvLmhhc1RleHQoZSkmJmwodCxlLGgsZik7dmFyIHA9KGUubGluZXx8e30pLmNvbG9yLGc9KGUubWFya2VyfHx7fSkuY29sb3I7Zigic3VyZmFjZWF4aXMiKT49MCYmZigic3VyZmFjZWNvbG9yIixwfHxnKTtmb3IodmFyIHY9WyJ4IiwieSIsInoiXSxtPTA7Mz5tOysrbSl7dmFyIHk9InByb2plY3Rpb24uIit2W21dO2YoeSsiLnNob3ciKSYmKGYoeSsiLm9wYWNpdHkiKSxmKHkrIi5zY2FsZSIpKX1jKHQsZSxyLHtheGlzOiJ6In0pLGModCxlLHIse2F4aXM6InkiLGluaGVyaXQ6InoifSksYyh0LGUscix7YXhpczoieCIsaW5oZXJpdDoieiJ9KX19LHsiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMvZGVmYXVsdHMiOjMyNCwiLi4vLi4vbGliIjozNzMsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6NTM4LCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6NTQyLCIuLi9zY2F0dGVyL3N1YnR5cGVzIjo1NDYsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6NTQ3LCIuL2F0dHJpYnV0ZXMiOjU0OX1dLDU1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17fTtuLnBsb3Q9dCgiLi9jb252ZXJ0Iiksbi5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG4ubWFya2VyU3ltYm9scz10KCIuLi8uLi9jb25zdGFudHMvZ2xfbWFya2VycyIpLG4uc3VwcGx5RGVmYXVsdHM9dCgiLi9kZWZhdWx0cyIpLG4uY29sb3JiYXI9dCgiLi4vc2NhdHRlci9jb2xvcmJhciIpLG4uY2FsYz10KCIuL2NhbGMiKSxuLm1vZHVsZVR5cGU9InRyYWNlIixuLm5hbWU9InNjYXR0ZXIzZCIsbi5iYXNlUGxvdE1vZHVsZT10KCIuLi8uLi9wbG90cy9nbDNkIiksbi5jYXRlZ29yaWVzPVsiZ2wzZCIsInN5bWJvbHMiLCJtYXJrZXJDb2xvcnNjYWxlIiwic2hvd0xlZ2VuZCJdLG4ubWV0YT17fSxlLmV4cG9ydHM9bn0seyIuLi8uLi9jb25zdGFudHMvZ2xfbWFya2VycyI6MzYxLCIuLi8uLi9wbG90cy9nbDNkIjo0MjQsIi4uL3NjYXR0ZXIvY29sb3JiYXIiOjUzMSwiLi9hdHRyaWJ1dGVzIjo1NDksIi4vY2FsYyI6NTUwLCIuL2NvbnZlcnQiOjU1MiwiLi9kZWZhdWx0cyI6NTUzfV0sNTU1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsYT1uLm1hcmtlcixzPW4ubGluZSxsPWEubGluZTtlLmV4cG9ydHM9e2xvbjp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGxhdDp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGxvY2F0aW9uczp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGxvY2F0aW9ubW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiSVNPLTMiLCJVU0Etc3RhdGVzIiwiY291bnRyeSBuYW1lcyJdLGRmbHQ6IklTTy0zIn0sbW9kZTpvKHt9LG4ubW9kZSx7ZGZsdDoibWFya2VycyJ9KSx0ZXh0Om8oe30sbi50ZXh0LHt9KSxsaW5lOntjb2xvcjpzLmNvbG9yLHdpZHRoOnMud2lkdGgsZGFzaDpzLmRhc2h9LG1hcmtlcjp7c3ltYm9sOmEuc3ltYm9sLG9wYWNpdHk6YS5vcGFjaXR5LHNpemU6YS5zaXplLHNpemVyZWY6YS5zaXplcmVmLHNpemVtaW46YS5zaXplbWluLHNpemVtb2RlOmEuc2l6ZW1vZGUsY29sb3I6YS5jb2xvcixjb2xvcnNjYWxlOmEuY29sb3JzY2FsZSxjYXV0bzphLmNhdXRvLGNtYXg6YS5jbWF4LGNtaW46YS5jbWluLGF1dG9jb2xvcnNjYWxlOmEuYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOmEucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTphLnNob3dzY2FsZSxsaW5lOntjb2xvcjpsLmNvbG9yLHdpZHRoOmwud2lkdGgsY29sb3JzY2FsZTpsLmNvbG9yc2NhbGUsY2F1dG86bC5jYXV0byxjbWF4OmwuY21heCxjbWluOmwuY21pbixhdXRvY29sb3JzY2FsZTpsLmF1dG9jb2xvcnNjYWxlLHJldmVyc2VzY2FsZTpsLnJldmVyc2VzY2FsZX19LHRleHRmb250Om4udGV4dGZvbnQsdGV4dHBvc2l0aW9uOm4udGV4dHBvc2l0aW9uLGhvdmVyaW5mbzpvKHt9LGkuaG92ZXJpbmZvLHtmbGFnczpbImxvbiIsImxhdCIsImxvY2F0aW9uIiwidGV4dCIsIm5hbWUiXX0pLF9uZXN0ZWRNb2R1bGVzOnsibWFya2VyLmNvbG9yYmFyIjoiQ29sb3JiYXIifX19LHsiLi4vLi4vbGliL2V4dGVuZCI6MzY5LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjozOTEsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6NTI4fV0sNTU2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yc2NhbGVfY2FsYyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPVt7eDohMSx5OiExLHRyYWNlOmUsdDp7fX1dO3JldHVybiBuKGUpLHJ9fSx7Ii4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yc2NhbGVfY2FsYyI6NTQxfV0sNTU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3ZhciBuLGksbz0wLGE9cigibG9jYXRpb25zIik7cmV0dXJuIGE/KHIoImxvY2F0aW9ubW9kZSIpLG89YS5sZW5ndGgpOihuPXIoImxvbiIpfHxbXSxpPXIoImxhdCIpfHxbXSxvPU1hdGgubWluKG4ubGVuZ3RoLGkubGVuZ3RoKSxvPG4ubGVuZ3RoJiYoZS5sb249bi5zbGljZSgwLG8pKSxvPGkubGVuZ3RoJiYoZS5sYXQ9aS5zbGljZSgwLG8pKSxvKX12YXIgaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxhPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIikscz10KCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIpLGM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHUpe2Z1bmN0aW9uIGgocixuKXtyZXR1cm4gaS5jb2VyY2UodCxlLGMscixuKX12YXIgZj1uKHQsZSxoKTtyZXR1cm4gZj8oaCgidGV4dCIpLGgoIm1vZGUiKSxvLmhhc0xpbmVzKGUpJiZzKHQsZSxyLGgpLG8uaGFzTWFya2VycyhlKSYmYSh0LGUscix1LGgpLG8uaGFzVGV4dChlKSYmbCh0LGUsdSxoKSx2b2lkIGgoImhvdmVyaW5mbyIsMT09PXUuX2RhdGFMZW5ndGg/ImxvbitsYXQrbG9jYXRpb24rdGV4dCI6dm9pZCAwKSk6dm9pZChlLnZpc2libGU9ITEpfX0seyIuLi8uLi9saWIiOjM3MywiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjo1MzgsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo1NDIsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjU0NiwiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjo1NDcsIi4vYXR0cmlidXRlcyI6NTU1fV0sNTU4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9O24uYXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxuLnN1cHBseURlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLmNvbG9yYmFyPXQoIi4uL3NjYXR0ZXIvY29sb3JiYXIiKSxuLmNhbGM9dCgiLi9jYWxjIiksbi5wbG90PXQoIi4vcGxvdCIpLnBsb3Qsbi5tb2R1bGVUeXBlPSJ0cmFjZSIsbi5uYW1lPSJzY2F0dGVyZ2VvIixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2dlbyIpLG4uY2F0ZWdvcmllcz1bImdlbyIsInN5bWJvbHMiLCJtYXJrZXJDb2xvcnNjYWxlIiwic2hvd0xlZ2VuZCJdLG4ubWV0YT17fSxlLmV4cG9ydHM9bn0seyIuLi8uLi9wbG90cy9nZW8iOjQwOSwiLi4vc2NhdHRlci9jb2xvcmJhciI6NTMxLCIuL2F0dHJpYnV0ZXMiOjU1NSwiLi9jYWxjIjo1NTYsIi4vZGVmYXVsdHMiOjU1NywiLi9wbG90Ijo1NTl9XSw1NTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7ZnVuY3Rpb24gbih0LG4pe2YodCxlLG4scil9dmFyIGk9dC5tYXJrZXI7aWYobih0LnRleHQsInR4Iiksbih0LnRleHRwb3NpdGlvbiwidHAiKSx0LnRleHRmb250JiYobih0LnRleHRmb250LnNpemUsInRzIiksbih0LnRleHRmb250LmNvbG9yLCJ0YyIpLG4odC50ZXh0Zm9udC5mYW1pbHksInRmIikpLGkmJmkubGluZSl7dmFyIG89aS5saW5lO24oaS5vcGFjaXR5LCJtbyIpLG4oaS5zeW1ib2wsIm14IiksbihpLmNvbG9yLCJtYyIpLG4oaS5zaXplLCJtcyIpLG4oby5jb2xvciwibWxjIiksbihvLndpZHRoLCJtbHciKX19ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9dC5sb24ubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtlPm47bisrKXJbbl09W3QubG9uW25dLHQubGF0W25dXTtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6cix0cmFjZTp0fX1mdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gcihlKXt2YXIgcj10Lm1vY2tBeGlzO3JldHVybiBjLnRpY2tUZXh0KHIsci5jMmwoZSksImhvdmVyIikudGV4dCsiXHhiMCJ9dmFyIG49ZS5ob3ZlcmluZm87aWYoIm5vbmUiPT09bilyZXR1cm4gZnVuY3Rpb24odCl7ZGVsZXRlIHQudGV4dExhYmVsfTt2YXIgaT0iYWxsIj09PW4/di5ob3ZlcmluZm8uZmxhZ3M6bi5zcGxpdCgiKyIpLG89LTEhPT1pLmluZGV4T2YoImxvY2F0aW9uIikmJkFycmF5LmlzQXJyYXkoZS5sb2NhdGlvbnMpLGE9LTEhPT1pLmluZGV4T2YoImxvbiIpLHM9LTEhPT1pLmluZGV4T2YoImxhdCIpLGw9LTEhPT1pLmluZGV4T2YoInRleHQiKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49W107bz9uLnB1c2godC5sb2NhdGlvbik6YSYmcz9uLnB1c2goIigiK3IodC5sb24pKyIsICIrcih0LmxhdCkrIikiKTphP24ucHVzaCgibG9uOiAiK3IodC5sb24pKTpzJiZuLnB1c2goImxhdDogIityKHQubGF0KSksbCYmbi5wdXNoKHQudHh8fGUudGV4dCksdC50ZXh0TGFiZWw9bi5qb2luKCI8YnI+Iil9fWZ1bmN0aW9uIGEodCl7dmFyIGU9QXJyYXkuaXNBcnJheSh0LmxvY2F0aW9ucyk7cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJue3BvaW50czpbe2RhdGE6dC5faW5wdXQsZnVsbERhdGE6dCxjdXJ2ZU51bWJlcjp0LmluZGV4LHBvaW50TnVtYmVyOm4sbG9uOnIubG9uLGxhdDpyLmxhdCxsb2NhdGlvbjplP3IubG9jYXRpb246bnVsbH1dfX19dmFyIHM9dCgiZDMiKSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCIpLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSx1PXQoIi4uLy4uL2xpYi90b3BvanNvbl91dGlscyIpLmdldFRvcG9qc29uRmVhdHVyZXMsaD10KCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0aWxzIikubG9jYXRpb25Ub0ZlYXR1cmUsZj10KCIuLi8uLi9saWIvYXJyYXlfdG9fY2FsY19pdGVtIiksZD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIikscD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxnPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSx2PXQoIi4vYXR0cmlidXRlcyIpLG09ZS5leHBvcnRzPXt9O20uY2FsY0dlb0pTT049ZnVuY3Rpb24odCxlKXt2YXIgcixpLG8sYSxzPVtdLGw9QXJyYXkuaXNBcnJheSh0LmxvY2F0aW9ucyk7bD8oYT10LmxvY2F0aW9ucyxyPWEubGVuZ3RoLGk9dSh0LGUpLG89ZnVuY3Rpb24odCxlKXt2YXIgcj1oKHQubG9jYXRpb25tb2RlLGFbZV0saSk7cmV0dXJuIHZvaWQgMCE9PXI/ci5wcm9wZXJ0aWVzLmN0OnZvaWQgMH0pOihyPXQubG9uLmxlbmd0aCxvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QubG9uW2VdLHQubGF0W2VdXX0pO2Zvcih2YXIgYz0wO3I+YztjKyspe3ZhciBmPW8odCxjKTtpZihmKXt2YXIgZD17bG9uOmZbMF0sbGF0OmZbMV0sbG9jYXRpb246bD90LmxvY2F0aW9uc1tjXTpudWxsfTtuKHQsZCxjKSxzLnB1c2goZCl9fXJldHVybiBzLmxlbmd0aD4wJiYoc1swXS50cmFjZT10KSxzfSxtLnBsb3Q9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmZyYW1ld29yay5zZWxlY3QoIi5zY2F0dGVyZ2VvbGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2Uuc2NhdHRlcmdlbyIpLmRhdGEoZSxmdW5jdGlvbih0KXtyZXR1cm4gdC51aWR9KTtyLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0cmFjZSBzY2F0dGVyZ2VvIiksci5leGl0KCkucmVtb3ZlKCksci5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKSxyLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9cy5zZWxlY3QodGhpcyk7Zy5oYXNMaW5lcyh0KSYmZS5zZWxlY3RBbGwoInBhdGguanMtbGluZSIpLmRhdGEoW2kodCldKS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWxpbmUiLCEwKTsKfSksci5lYWNoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocixuKXtpZih0LnNob3dIb3Zlcil7dmFyIGk9dC5wcm9qZWN0aW9uKFtyLmxvbixyLmxhdF0pO2YociksbC5sb25lSG92ZXIoe3g6aVswXSx5OmlbMV0sbmFtZTp2P2UubmFtZTp2b2lkIDAsdGV4dDpyLnRleHRMYWJlbCxjb2xvcjpyLm1jfHwoZS5tYXJrZXJ8fHt9KS5jb2xvcn0se2NvbnRhaW5lcjp0LmhvdmVyQ29udGFpbmVyLm5vZGUoKX0pLHQuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X2hvdmVyIixkKHIsbikpfX1mdW5jdGlvbiBuKGUscil7dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfY2xpY2siLGQoZSxyKSl9dmFyIGk9cy5zZWxlY3QodGhpcyksYz1nLmhhc01hcmtlcnMoZSksdT1nLmhhc1RleHQoZSk7aWYoY3x8dSl7dmFyIGg9bS5jYWxjR2VvSlNPTihlLHQudG9wb2pzb24pLGY9byh0LGUpLGQ9YShlKSxwPWUuaG92ZXJpbmZvLHY9ImFsbCI9PT1wfHwtMSE9PXAuaW5kZXhPZigibmFtZSIpO2MmJmkuc2VsZWN0QWxsKCJwYXRoLnBvaW50IikuZGF0YShoKS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoInBvaW50IiwhMCkub24oIm1vdXNlb3ZlciIscikub24oImNsaWNrIixuKS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7bC5sb25lVW5ob3Zlcih0LmhvdmVyQ29udGFpbmVyKX0pLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7bC5sb25lVW5ob3Zlcih0LmhvdmVyQ29udGFpbmVyKX0pLm9uKCJtb3VzZXVwIixyKSx1JiZpLnNlbGVjdEFsbCgiZyIpLmRhdGEoaCkuZW50ZXIoKS5hcHBlbmQoImciKS5hcHBlbmQoInRleHQiKX19KSxtLnN0eWxlKHQpfSxtLnN0eWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZnJhbWV3b3JrLnNlbGVjdEFsbCgiZy50cmFjZS5zY2F0dGVyZ2VvIik7ZS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQub3BhY2l0eX0pLGUuZWFjaChmdW5jdGlvbih0KXtzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgucG9pbnQiKS5jYWxsKHAucG9pbnRTdHlsZSx0KSxzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInRleHQiKS5jYWxsKHAudGV4dFBvaW50U3R5bGUsdCl9KSxlLnNlbGVjdEFsbCgicGF0aC5qcy1saW5lIikuc3R5bGUoImZpbGwiLCJub25lIikuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10LnRyYWNlLHI9ZS5saW5lfHx7fTtzLnNlbGVjdCh0aGlzKS5jYWxsKGQuc3Ryb2tlLHIuY29sb3IpLmNhbGwocC5kYXNoTGluZSxyLmRhc2h8fCIiLHIud2lkdGh8fDApfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjMwMSwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozMTksIi4uLy4uL2xpYi9hcnJheV90b19jYWxjX2l0ZW0iOjM2NSwiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyI6MzcwLCIuLi8uLi9saWIvdG9wb2pzb25fdXRpbHMiOjM4NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjM5MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IjozOTgsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjU0NiwiLi9hdHRyaWJ1dGVzIjo1NTUsZDM6NzB9XSw1NjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb25zdGFudHMvZ2wyZF9kYXNoZXMiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9nbF9tYXJrZXJzIiksYT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxzPW4ubGluZSxsPW4ubWFya2VyLGM9bC5saW5lO2UuZXhwb3J0cz17eDpuLngseDA6bi54MCxkeDpuLmR4LHk6bi55LHkwOm4ueTAsZHk6bi5keSx0ZXh0OmEoe30sbi50ZXh0LHt9KSxtb2RlOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsaW5lcyIsIm1hcmtlcnMiXSxleHRyYXM6WyJub25lIl19LGxpbmU6e2NvbG9yOnMuY29sb3Isd2lkdGg6cy53aWR0aCxkYXNoOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6T2JqZWN0LmtleXMoaSksZGZsdDoic29saWQifX0sbWFya2VyOntjb2xvcjpsLmNvbG9yLHN5bWJvbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOk9iamVjdC5rZXlzKG8pLGRmbHQ6ImNpcmNsZSIsYXJyYXlPazohMH0sc2l6ZTpsLnNpemUsc2l6ZXJlZjpsLnNpemVyZWYsc2l6ZW1pbjpsLnNpemVtaW4sc2l6ZW1vZGU6bC5zaXplbW9kZSxvcGFjaXR5Omwub3BhY2l0eSxjb2xvcnNjYWxlOmwuY29sb3JzY2FsZSxjYXV0bzpsLmNhdXRvLGNtYXg6bC5jbWF4LGNtaW46bC5jbWluLGF1dG9jb2xvcnNjYWxlOmwuYXV0b2NvbG9yc2NhbGUscmV2ZXJzZXNjYWxlOmwucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTpsLnNob3dzY2FsZSxsaW5lOntjb2xvcjpjLmNvbG9yLHdpZHRoOmMud2lkdGgsY29sb3JzY2FsZTpjLmNvbG9yc2NhbGUsY2F1dG86Yy5jYXV0byxjbWF4OmMuY21heCxjbWluOmMuY21pbixhdXRvY29sb3JzY2FsZTpjLmF1dG9jb2xvcnNjYWxlLHJldmVyc2VzY2FsZTpjLnJldmVyc2VzY2FsZX19LGZpbGw6YSh7fSxuLmZpbGwse3ZhbHVlczpbIm5vbmUiLCJ0b3plcm95IiwidG96ZXJveCJdfSksZmlsbGNvbG9yOm4uZmlsbGNvbG9yLF9uZXN0ZWRNb2R1bGVzOntlcnJvcl94OiJFcnJvckJhcnMiLGVycm9yX3k6IkVycm9yQmFycyIsIm1hcmtlci5jb2xvcmJhciI6IkNvbG9yYmFyIn19fSx7Ii4uLy4uL2NvbnN0YW50cy9nbDJkX2Rhc2hlcyI6MzU5LCIuLi8uLi9jb25zdGFudHMvZ2xfbWFya2VycyI6MzYxLCIuLi8uLi9saWIvZXh0ZW5kIjozNjksIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6NTI4fV0sNTYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0aGlzLnhEYXRhPVtdLHRoaXMueURhdGE9W10sdGhpcy50ZXh0TGFiZWxzPVtdLHRoaXMuY29sb3I9InJnYigwLCAwLCAwKSIsdGhpcy5uYW1lPSIiLHRoaXMuaG92ZXJpbmZvPSJhbGwiLHRoaXMuaWRUb0luZGV4PVtdLHRoaXMuYm91bmRzPVswLDAsMCwwXSx0aGlzLmhhc0xpbmVzPSExLHRoaXMubGluZU9wdGlvbnM9e3Bvc2l0aW9uczpuZXcgRmxvYXQzMkFycmF5LGNvbG9yOlswLDAsMCwxXSx3aWR0aDoxLGZpbGw6WyExLCExLCExLCExXSxmaWxsQ29sb3I6W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sZGFzaGVzOlsxXX0sdGhpcy5saW5lPWQodC5nbHBsb3QsdGhpcy5saW5lT3B0aW9ucyksdGhpcy5saW5lLl90cmFjZT10aGlzLHRoaXMuaGFzRXJyb3JYPSExLHRoaXMuZXJyb3JYT3B0aW9ucz17cG9zaXRpb25zOm5ldyBGbG9hdDMyQXJyYXksZXJyb3JzOm5ldyBGbG9hdDMyQXJyYXksbGluZVdpZHRoOjEsY2FwU2l6ZTowLGNvbG9yOlswLDAsMCwxXX0sdGhpcy5lcnJvclg9cCh0LmdscGxvdCx0aGlzLmVycm9yWE9wdGlvbnMpLHRoaXMuZXJyb3JYLl90cmFjZT10aGlzLHRoaXMuaGFzRXJyb3JZPSExLHRoaXMuZXJyb3JZT3B0aW9ucz17cG9zaXRpb25zOm5ldyBGbG9hdDMyQXJyYXksZXJyb3JzOm5ldyBGbG9hdDMyQXJyYXksbGluZVdpZHRoOjEsY2FwU2l6ZTowLGNvbG9yOlswLDAsMCwxXX0sdGhpcy5lcnJvclk9cCh0LmdscGxvdCx0aGlzLmVycm9yWU9wdGlvbnMpLHRoaXMuZXJyb3JZLl90cmFjZT10aGlzLHRoaXMuaGFzTWFya2Vycz0hMSx0aGlzLnNjYXR0ZXJPcHRpb25zPXtwb3NpdGlvbnM6bmV3IEZsb2F0MzJBcnJheSxzaXplczpbXSxjb2xvcnM6W10sZ2x5cGhzOltdLGJvcmRlcldpZHRoczpbXSxib3JkZXJDb2xvcnM6W10sc2l6ZToxMixjb2xvcjpbMCwwLDAsMV0sYm9yZGVyU2l6ZToxLGJvcmRlckNvbG9yOlswLDAsMCwxXX0sdGhpcy5zY2F0dGVyPWgodC5nbHBsb3QsdGhpcy5zY2F0dGVyT3B0aW9ucyksdGhpcy5zY2F0dGVyLl90cmFjZT10aGlzLHRoaXMuZmFuY3lTY2F0dGVyPWYodC5nbHBsb3QsdGhpcy5zY2F0dGVyT3B0aW9ucyksdGhpcy5mYW5jeVNjYXR0ZXIuX3RyYWNlPXRoaXN9ZnVuY3Rpb24gaSh0LGUscil7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksbyh0LGUscil9ZnVuY3Rpb24gbyh0LGUscil7Zm9yKHZhciBuPW5ldyBBcnJheShyKSxpPWVbMF0sbz0wO3I+bzsrK28pbltvXT10KG8+PWUubGVuZ3RoP2k6ZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gYSh0LGUscil7cmV0dXJuIGwoUyh0LHIpLEwoZSxyKSxyKX1mdW5jdGlvbiBzKHQsZSxyLG4pe3ZhciBpPXgodCxlLG4pO3JldHVybiBpPUFycmF5LmlzQXJyYXkoaVswXSk/aTpvKHYuaWRlbnRpdHksW2ldLG4pLGwoaSxMKHIsbiksbil9ZnVuY3Rpb24gbCh0LGUscil7Zm9yKHZhciBuPW5ldyBBcnJheSg0KnIpLGk9MDtyPmk7KytpKXtmb3IodmFyIG89MDszPm87KytvKW5bNCppK29dPXRbaV1bb107bls0KmkrM109dFtpXVszXSplW2ldfXJldHVybiBufWZ1bmN0aW9uIGModCxlKXtpZih2b2lkIDA9PT1GbG9hdDMyQXJyYXkuc2xpY2Upe2Zvcih2YXIgcj1uZXcgRmxvYXQzMkFycmF5KGUpLG49MDtlPm47bisrKXJbbl09dFtuXTtyZXR1cm4gcn1yZXR1cm4gdC5zbGljZSgwLGUpfWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1uZXcgbih0LGUudWlkKTtyZXR1cm4gci51cGRhdGUoZSkscn12YXIgaD10KCJnbC1zY2F0dGVyMmQiKSxmPXQoImdsLXNjYXR0ZXIyZC1mYW5jeSIpLGQ9dCgiZ2wtbGluZTJkIikscD10KCJnbC1lcnJvcjJkIiksZz10KCJmYXN0LWlzbnVtZXJpYyIpLHY9dCgiLi4vLi4vbGliIiksbT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLHk9dCgiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiKSxiPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSx4PXQoIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiKSxfPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSx3PXQoIi4uL3NjYXR0ZXIvbWFrZV9idWJibGVfc2l6ZV9mdW5jIiksQT10KCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciIpLGs9dCgiLi4vLi4vY29uc3RhbnRzL2dsX21hcmtlcnMiKSxNPXQoIi4uLy4uL2NvbnN0YW50cy9nbDJkX2Rhc2hlcyIpLFQ9WyJ4YXhpcyIsInlheGlzIl0sRT1uLnByb3RvdHlwZTtFLmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pZFRvSW5kZXhbdC5wb2ludElkXTtyZXR1cm57dHJhY2U6dGhpcyxkYXRhQ29vcmQ6dC5kYXRhQ29vcmQsdHJhY2VDb29yZDpbdGhpcy54RGF0YVtlXSx0aGlzLnlEYXRhW2VdXSx0ZXh0TGFiZWw6QXJyYXkuaXNBcnJheSh0aGlzLnRleHRMYWJlbHMpP3RoaXMudGV4dExhYmVsc1tlXTp0aGlzLnRleHRMYWJlbHMsY29sb3I6QXJyYXkuaXNBcnJheSh0aGlzLmNvbG9yKT90aGlzLmNvbG9yW2VdOnRoaXMuY29sb3IsbmFtZTp0aGlzLm5hbWUsaG92ZXJpbmZvOnRoaXMuaG92ZXJpbmZvfX0sRS5pc0ZhbmN5PWZ1bmN0aW9uKHQpe2lmKCJsaW5lYXIiIT09dGhpcy5zY2VuZS54YXhpcy50eXBlKXJldHVybiEwO2lmKCJsaW5lYXIiIT09dGhpcy5zY2VuZS55YXhpcy50eXBlKXJldHVybiEwO2lmKCF0Lnh8fCF0LnkpcmV0dXJuITA7dmFyIGU9dC5tYXJrZXJ8fHt9O2lmKEFycmF5LmlzQXJyYXkoZS5zeW1ib2wpfHwiY2lyY2xlIiE9PWUuc3ltYm9sfHxBcnJheS5pc0FycmF5KGUuc2l6ZSl8fEFycmF5LmlzQXJyYXkoZS5saW5lLndpZHRoKXx8QXJyYXkuaXNBcnJheShlLm9wYWNpdHkpKXJldHVybiEwO3ZhciByPWUuY29sb3I7aWYoQXJyYXkuaXNBcnJheShyKSlyZXR1cm4hMDt2YXIgbj1BcnJheS5pc0FycmF5KGUubGluZS5jb2xvcik7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/ITA6dGhpcy5oYXNFcnJvclg/ITA6ISF0aGlzLmhhc0Vycm9yWX07dmFyIEw9aS5iaW5kKG51bGwsZnVuY3Rpb24odCl7cmV0dXJuK3R9KSxTPWkuYmluZChudWxsLGIpLEM9aS5iaW5kKG51bGwsZnVuY3Rpb24odCl7cmV0dXJuIGtbdF18fCJcdTI1Y2YifSk7RS51cGRhdGU9ZnVuY3Rpb24odCl7dC52aXNpYmxlIT09ITA/KHRoaXMuaGFzTGluZXM9ITEsdGhpcy5oYXNFcnJvclg9ITEsdGhpcy5oYXNFcnJvclk9ITEsdGhpcy5oYXNNYXJrZXJzPSExKToodGhpcy5oYXNMaW5lcz1fLmhhc0xpbmVzKHQpLHRoaXMuaGFzRXJyb3JYPXQuZXJyb3JfeC52aXNpYmxlPT09ITAsdGhpcy5oYXNFcnJvclk9dC5lcnJvcl95LnZpc2libGU9PT0hMCx0aGlzLmhhc01hcmtlcnM9Xy5oYXNNYXJrZXJzKHQpKSx0aGlzLnRleHRMYWJlbHM9dC50ZXh0LHRoaXMubmFtZT10Lm5hbWUsdGhpcy5ob3ZlcmluZm89dC5ob3ZlcmluZm8sdGhpcy5ib3VuZHM9WzEvMCwxLzAsLSgxLzApLC0oMS8wKV0sdGhpcy5pc0ZhbmN5KHQpP3RoaXMudXBkYXRlRmFuY3kodCk6dGhpcy51cGRhdGVGYXN0KHQpLHRoaXMuY29sb3I9QSh0LHt9KX0sRS51cGRhdGVGYXN0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG49dGhpcy54RGF0YT10LngsaT10aGlzLnlEYXRhPXQueSxvPW4ubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEZsb2F0MzJBcnJheSgyKm8pLGw9dGhpcy5ib3VuZHMsdT0wLGg9MCxmPTA7bz5mOysrZillPW5bZl0scj1pW2ZdLGcoZSkmJmcocikmJihhW3UrK109ZixzW2grK109ZSxzW2grK109cixsWzBdPU1hdGgubWluKGxbMF0sZSksbFsxXT1NYXRoLm1pbihsWzFdLHIpLGxbMl09TWF0aC5tYXgobFsyXSxlKSxsWzNdPU1hdGgubWF4KGxbM10scikpO3M9YyhzLGgpLHRoaXMuaWRUb0luZGV4PWEsdGhpcy51cGRhdGVMaW5lcyh0LHMpLHRoaXMudXBkYXRlRXJyb3IoIlgiLHQpLHRoaXMudXBkYXRlRXJyb3IoIlkiLHQpO3ZhciBkO2lmKHRoaXMuaGFzTWFya2Vycyl7dGhpcy5zY2F0dGVyT3B0aW9ucy5wb3NpdGlvbnM9czt2YXIgcD1iKHQubWFya2VyLmNvbG9yKSx2PWIodC5tYXJrZXIubGluZS5jb2xvciksbT10Lm9wYWNpdHkqdC5tYXJrZXIub3BhY2l0eTtwWzNdKj1tLHRoaXMuc2NhdHRlck9wdGlvbnMuY29sb3I9cCx2WzNdKj1tLHRoaXMuc2NhdHRlck9wdGlvbnMuYm9yZGVyQ29sb3I9dixkPXQubWFya2VyLnNpemUsdGhpcy5zY2F0dGVyT3B0aW9ucy5zaXplPWQsdGhpcy5zY2F0dGVyT3B0aW9ucy5ib3JkZXJTaXplPXQubWFya2VyLmxpbmUud2lkdGgsdGhpcy5zY2F0dGVyLnVwZGF0ZSh0aGlzLnNjYXR0ZXJPcHRpb25zKX1lbHNlIHRoaXMuc2NhdHRlck9wdGlvbnMucG9zaXRpb25zPW5ldyBGbG9hdDMyQXJyYXksdGhpcy5zY2F0dGVyT3B0aW9ucy5nbHlwaHM9W10sdGhpcy5zY2F0dGVyLnVwZGF0ZSh0aGlzLnNjYXR0ZXJPcHRpb25zKTt0aGlzLnNjYXR0ZXJPcHRpb25zLnBvc2l0aW9ucz1uZXcgRmxvYXQzMkFycmF5LHRoaXMuc2NhdHRlck9wdGlvbnMuZ2x5cGhzPVtdLHRoaXMuZmFuY3lTY2F0dGVyLnVwZGF0ZSh0aGlzLnNjYXR0ZXJPcHRpb25zKSx0aGlzLmV4cGFuZEF4ZXNGYXN0KGwsZCl9LEUudXBkYXRlRmFuY3k9ZnVuY3Rpb24odCl7dmFyIGUscixuLG8sYSxsLHUsaCxmPXRoaXMuc2NlbmUsZD1mLnhheGlzLHA9Zi55YXhpcyxnPXRoaXMuYm91bmRzLHY9dGhpcy54RGF0YT1kLm1ha2VDYWxjZGF0YSh0LCJ4IiksbT10aGlzLnlEYXRhPXAubWFrZUNhbGNkYXRhKHQsInkiKSxiPXkuY2FsY0Zyb21UcmFjZSh0LGYuZnVsbExheW91dCkseD12Lmxlbmd0aCxfPW5ldyBBcnJheSh4KSxBPW5ldyBGbG9hdDMyQXJyYXkoMip4KSxrPW5ldyBGbG9hdDMyQXJyYXkoNCp4KSxNPW5ldyBGbG9hdDMyQXJyYXkoNCp4KSxUPTAsRT0wLFM9MCxQPTAsej0ibG9nIj09PWQudHlwZT9mdW5jdGlvbih0KXtyZXR1cm4gZC5kMmwodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxSPSJsb2ciPT09cC50eXBlP2Z1bmN0aW9uKHQpe3JldHVybiBwLmQybCh0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHR9O2ZvcihlPTA7eD5lOysrZSluPXoodltlXSksbz1SKG1bZV0pLGlzTmFOKG4pfHxpc05hTihvKXx8KF9bVCsrXT1lLEFbRSsrXT1uLEFbRSsrXT1vLGE9a1tTKytdPW4tYltlXS54c3x8MCxsPWtbUysrXT1iW2VdLnhoLW58fDAsa1tTKytdPTAsa1tTKytdPTAsTVtQKytdPTAsTVtQKytdPTAsdT1NW1ArK109by1iW2VdLnlzfHwwLGg9TVtQKytdPWJbZV0ueWgtb3x8MCxnWzBdPU1hdGgubWluKGdbMF0sbi1hKSxnWzFdPU1hdGgubWluKGdbMV0sby11KSxnWzJdPU1hdGgubWF4KGdbMl0sbitsKSxnWzNdPU1hdGgubWF4KGdbM10sbytoKSk7QT1jKEEsRSksdGhpcy5pZFRvSW5kZXg9Xyx0aGlzLnVwZGF0ZUxpbmVzKHQsQSksdGhpcy51cGRhdGVFcnJvcigiWCIsdCxBLGspLHRoaXMudXBkYXRlRXJyb3IoIlkiLHQsQSxNKTt2YXIgTztpZih0aGlzLmhhc01hcmtlcnMpe3RoaXMuc2NhdHRlck9wdGlvbnMucG9zaXRpb25zPUEsdGhpcy5zY2F0dGVyT3B0aW9ucy5zaXplcz1uZXcgQXJyYXkoVCksdGhpcy5zY2F0dGVyT3B0aW9ucy5nbHlwaHM9bmV3IEFycmF5KFQpLHRoaXMuc2NhdHRlck9wdGlvbnMuYm9yZGVyV2lkdGhzPW5ldyBBcnJheShUKSx0aGlzLnNjYXR0ZXJPcHRpb25zLmNvbG9ycz1uZXcgQXJyYXkoNCpUKSx0aGlzLnNjYXR0ZXJPcHRpb25zLmJvcmRlckNvbG9ycz1uZXcgQXJyYXkoNCpUKTt2YXIgSSxOPXcodCksaj10Lm1hcmtlcixGPWoub3BhY2l0eSxEPXQub3BhY2l0eSxCPXMoaixGLEQseCksVT1DKGouc3ltYm9sLHgpLFY9TChqLmxpbmUud2lkdGgseCkscT1zKGoubGluZSxGLEQseCk7Zm9yKE89aShOLGouc2l6ZSx4KSxlPTA7VD5lOysrZSlmb3IoST1fW2VdLHRoaXMuc2NhdHRlck9wdGlvbnMuc2l6ZXNbZV09NCpPW0ldLHRoaXMuc2NhdHRlck9wdGlvbnMuZ2x5cGhzW2VdPVVbSV0sdGhpcy5zY2F0dGVyT3B0aW9ucy5ib3JkZXJXaWR0aHNbZV09LjUqVltJXSxyPTA7ND5yOysrcil0aGlzLnNjYXR0ZXJPcHRpb25zLmNvbG9yc1s0KmUrcl09Qls0Kkkrcl0sdGhpcy5zY2F0dGVyT3B0aW9ucy5ib3JkZXJDb2xvcnNbNCplK3JdPXFbNCpJK3JdO3RoaXMuZmFuY3lTY2F0dGVyLnVwZGF0ZSh0aGlzLnNjYXR0ZXJPcHRpb25zKX1lbHNlIHRoaXMuc2NhdHRlck9wdGlvbnMucG9zaXRpb25zPW5ldyBGbG9hdDMyQXJyYXksdGhpcy5zY2F0dGVyT3B0aW9ucy5nbHlwaHM9W10sdGhpcy5mYW5jeVNjYXR0ZXIudXBkYXRlKHRoaXMuc2NhdHRlck9wdGlvbnMpO3RoaXMuc2NhdHRlck9wdGlvbnMucG9zaXRpb25zPW5ldyBGbG9hdDMyQXJyYXksdGhpcy5zY2F0dGVyT3B0aW9ucy5nbHlwaHM9W10sdGhpcy5zY2F0dGVyLnVwZGF0ZSh0aGlzLnNjYXR0ZXJPcHRpb25zKSx0aGlzLmV4cGFuZEF4ZXNGYW5jeSh2LG0sTyl9LEUudXBkYXRlTGluZXM9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmhhc0xpbmVzKXt0aGlzLmxpbmVPcHRpb25zLnBvc2l0aW9ucz1lO3ZhciByPWIodC5saW5lLmNvbG9yKTt0aGlzLmhhc01hcmtlcnMmJihyWzNdKj10Lm1hcmtlci5vcGFjaXR5KTtmb3IodmFyIG49TWF0aC5yb3VuZCguNSp0aGlzLmxpbmVPcHRpb25zLndpZHRoKSxpPShNW3QubGluZS5kYXNoXXx8WzFdKS5zbGljZSgpLG89MDtvPGkubGVuZ3RoOysrbylpW29dKj1uO3N3aXRjaCh0LmZpbGwpe2Nhc2UidG96ZXJveSI6dGhpcy5saW5lT3B0aW9ucy5maWxsPVshMSwhMCwhMSwhMV07YnJlYWs7Y2FzZSJ0b3plcm94Ijp0aGlzLmxpbmVPcHRpb25zLmZpbGw9WyEwLCExLCExLCExXTticmVhaztkZWZhdWx0OnRoaXMubGluZU9wdGlvbnMuZmlsbD1bITEsITEsITEsITFdfXZhciBhPWIodC5maWxsY29sb3IpO3RoaXMubGluZU9wdGlvbnMuY29sb3I9cix0aGlzLmxpbmVPcHRpb25zLndpZHRoPTIqdC5saW5lLndpZHRoLHRoaXMubGluZU9wdGlvbnMuZGFzaGVzPWksdGhpcy5saW5lT3B0aW9ucy5maWxsQ29sb3I9W2EsYSxhLGFdfWVsc2UgdGhpcy5saW5lT3B0aW9ucy5wb3NpdGlvbnM9bmV3IEZsb2F0MzJBcnJheTt0aGlzLmxpbmUudXBkYXRlKHRoaXMubGluZU9wdGlvbnMpfSxFLnVwZGF0ZUVycm9yPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXNbImVycm9yIit0XSxvPWVbImVycm9yXyIrdC50b0xvd2VyQ2FzZSgpXSxzPXRoaXNbImVycm9yIit0KyJPcHRpb25zIl07IngiPT09dC50b0xvd2VyQ2FzZSgpJiZvLmNvcHlfeXN0eWxlJiYobz1lLmVycm9yX3kpLHRoaXNbImhhc0Vycm9yIit0XT8ocy5wb3NpdGlvbnM9cixzLmVycm9ycz1uLHMuY2FwU2l6ZT1vLndpZHRoLHMubGluZVdpZHRoPW8udGhpY2tuZXNzLzIscy5jb2xvcj1hKG8uY29sb3IsMSwxKSk6cy5wb3NpdGlvbnM9bmV3IEZsb2F0MzJBcnJheSxpLnVwZGF0ZShzKX0sRS5leHBhbmRBeGVzRmFzdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGksbz1lfHwxMCxhPTA7Mj5hO2ErKylyPXRoaXMuc2NlbmVbVFthXV0sbj1yLl9taW4sbnx8KG49W10pLG4ucHVzaCh7dmFsOnRbYV0scGFkOm99KSxpPXIuX21heCxpfHwoaT1bXSksaS5wdXNoKHt2YWw6dFthKzJdLHBhZDpvfSl9LEUuZXhwYW5kQXhlc0ZhbmN5PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnNjZW5lLGk9e3BhZGRlZDohMCxwcGFkOnJ9O20uZXhwYW5kKG4ueGF4aXMsdCxpKSxtLmV4cGFuZChuLnlheGlzLGUsaSl9LEUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMubGluZS5kaXNwb3NlKCksdGhpcy5lcnJvclguZGlzcG9zZSgpLHRoaXMuZXJyb3JZLmRpc3Bvc2UoKSx0aGlzLnNjYXR0ZXIuZGlzcG9zZSgpLHRoaXMuZmFuY3lTY2F0dGVyLmRpc3Bvc2UoKX0sZS5leHBvcnRzPXV9LHsiLi4vLi4vY29tcG9uZW50cy9lcnJvcmJhcnMiOjMyNSwiLi4vLi4vY29uc3RhbnRzL2dsMmRfZGFzaGVzIjozNTksIi4uLy4uL2NvbnN0YW50cy9nbF9tYXJrZXJzIjozNjEsIi4uLy4uL2xpYiI6MzczLCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIjozNzEsIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjM4MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjM5MywiLi4vc2NhdHRlci9nZXRfdHJhY2VfY29sb3IiOjUzNSwiLi4vc2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiOjU0MCwiLi4vc2NhdHRlci9zdWJ0eXBlcyI6NTQ2LCJmYXN0LWlzbnVtZXJpYyI6NzQsImdsLWVycm9yMmQiOjc2LCJnbC1saW5lMmQiOjgyLCJnbC1zY2F0dGVyMmQiOjE0NywiZ2wtc2NhdHRlcjJkLWZhbmN5IjoxNDJ9XSw1NjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIpLG89dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGE9dCgiLi4vc2NhdHRlci94eV9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLGM9dCgiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiKSx1PXQoIi4uLy4uL2NvbXBvbmVudHMvZXJyb3JiYXJzL2RlZmF1bHRzIiksaD10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsZil7ZnVuY3Rpb24gZChyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsaCxyLGkpfXZhciBwPWEodCxlLGQpO3JldHVybiBwPyhkKCJ0ZXh0IiksZCgibW9kZSIscDxpLlBUU19MSU5FU09OTFk/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyIpLG8uaGFzTGluZXMoZSkmJmwodCxlLHIsZCksby5oYXNNYXJrZXJzKGUpJiZzKHQsZSxyLGYsZCksZCgiZmlsbCIpLCJub25lIiE9PWUuZmlsbCYmYyh0LGUscixkKSx1KHQsZSxyLHtheGlzOiJ5In0pLHZvaWQgdSh0LGUscix7YXhpczoieCIsaW5oZXJpdDoieSJ9KSk6dm9pZChlLnZpc2libGU9ITEpfX0seyIuLi8uLi9jb21wb25lbnRzL2Vycm9yYmFycy9kZWZhdWx0cyI6MzI0LCIuLi8uLi9saWIiOjM3MywiLi4vc2NhdHRlci9jb25zdGFudHMiOjUzMiwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjUzNCwiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjo1MzgsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo1NDIsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjU0NiwiLi4vc2NhdHRlci94eV9kZWZhdWx0cyI6NTQ4LCIuL2F0dHJpYnV0ZXMiOjU2MH1dLDU2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17fTtuLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksbi5zdXBwbHlEZWZhdWx0cz10KCIuL2RlZmF1bHRzIiksbi5jb2xvcmJhcj10KCIuLi9zY2F0dGVyL2NvbG9yYmFyIiksbi5jYWxjPXQoIi4uL3NjYXR0ZXIzZC9jYWxjIiksbi5wbG90PXQoIi4vY29udmVydCIpLG4ubW9kdWxlVHlwZT0idHJhY2UiLG4ubmFtZT0ic2NhdHRlcmdsIixuLmJhc2VQbG90TW9kdWxlPXQoIi4uLy4uL3Bsb3RzL2dsMmQiKSxuLmNhdGVnb3JpZXM9WyJnbDJkIiwic3ltYm9scyIsImVycm9yQmFyc09LIiwibWFya2VyQ29sb3JzY2FsZSIsInNob3dMZWdlbmQiXSxuLm1ldGE9e30sZS5leHBvcnRzPW59LHsiLi4vLi4vcGxvdHMvZ2wyZCI6NDIxLCIuLi9zY2F0dGVyL2NvbG9yYmFyIjo1MzEsIi4uL3NjYXR0ZXIzZC9jYWxjIjo1NTAsIi4vYXR0cmlidXRlcyI6NTYwLCIuL2NvbnZlcnQiOjU2MSwiLi9kZWZhdWx0cyI6NTYyfV0sNTY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJue3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9fWZ1bmN0aW9uIGkodCl7cmV0dXJue3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LHByb2plY3Q6e3g6bigieCIpLHk6bigieSIpLHo6bigieiIpfSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6IiMwMDAifSx1c2Vjb2xvcm1hcDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEsbWF4OjE2LGRmbHQ6Mn0saGlnaGxpZ2h0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxoaWdobGlnaHRDb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6IiMwMDAifSxoaWdobGlnaHRXaWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MSxtYXg6MTYsZGZsdDoyfX19dmFyIG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17ejp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHg6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHN1cmZhY2Vjb2xvcjp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGNhdXRvOm8uemF1dG8sY21pbjpvLnptaW4sY21heDpvLnptYXgsY29sb3JzY2FsZTpvLmNvbG9yc2NhbGUsYXV0b2NvbG9yc2NhbGU6YSh7fSxvLmF1dG9jb2xvcnNjYWxlLHtkZmx0OiExfSkscmV2ZXJzZXNjYWxlOm8ucmV2ZXJzZXNjYWxlLHNob3dzY2FsZTpvLnNob3dzY2FsZSxjb250b3Vyczp7eDppKCJ4IikseTppKCJ5IiksejppKCJ6Iil9LGhpZGVzdXJmYWNlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsaWdodGluZzp7YW1iaWVudDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi44fSxkaWZmdXNlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6Ljh9LHNwZWN1bGFyOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoyLGRmbHQ6LjA1fSxyb3VnaG5lc3M6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouNX0sZnJlc25lbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6NSxkZmx0Oi4yfX0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LF9uZXN0ZWRNb2R1bGVzOntjb2xvcmJhcjoiQ29sb3JiYXIifSxfZGVwcmVjYXRlZDp7emF1dG86YSh7fSxvLnphdXRvLHt9KSx6bWluOmEoe30sby56bWluLHt9KSx6bWF4OmEoe30sby56bWF4LHt9KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozMDcsIi4uLy4uL2xpYi9leHRlbmQiOjM2OX1dLDU2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Uuc3VyZmFjZWNvbG9yP24oZSxlLnN1cmZhY2Vjb2xvciwiIiwiYyIpOm4oZSxlLnosIiIsImMiKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjMwOH1dLDU2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGk9dCgiZmFzdC1pc251bWVyaWMiKSxvPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9nZXRfc2NhbGUiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JiYXIvZHJhdyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0udHJhY2UsYz0iY2IiK3IudWlkLHU9cyhyLmNvbG9yc2NhbGUpLGg9ci5jbWluLGY9ci5jbWF4LGQ9ci5zdXJmYWNlY29sb3J8fHIuejtpZihpKGgpfHwoaD1vLmFnZ051bXMoTWF0aC5taW4sbnVsbCxkKSksaShmKXx8KGY9by5hZ2dOdW1zKE1hdGgubWF4LG51bGwsZCkpLHQuX2Z1bGxMYXlvdXQuX2luZm9sYXllci5zZWxlY3RBbGwoIi4iK2MpLnJlbW92ZSgpLCFyLnNob3dzY2FsZSlyZXR1cm4gdm9pZCBhLmF1dG9NYXJnaW4odCxjKTt2YXIgcD1lWzBdLnQuY2I9bCh0LGMpO3AuZmlsbGNvbG9yKG4uc2NhbGUubGluZWFyKCkuZG9tYWluKHUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBoK3RbMF0qKGYtaCl9KSkucmFuZ2UodS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkpLmZpbGxsZXZlbHMoe3N0YXJ0OmgsZW5kOmYsc2l6ZTooZi1oKS8yNTR9KS5vcHRpb25zKHIuY29sb3JiYXIpKCksby5tYXJrVGltZSgiZG9uZSBjb2xvcmJhciIpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yYmFyL2RyYXciOjMwNCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2dldF9zY2FsZSI6MzEyLCIuLi8uLi9saWIiOjM3MywiLi4vLi4vcGxvdHMvcGxvdHMiOjQzNyxkMzo3MCwiZmFzdC1pc251bWVyaWMiOjc0fV0sNTY3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIpe3RoaXMuc2NlbmU9dCx0aGlzLnVpZD1yLHRoaXMuc3VyZmFjZT1lLHRoaXMuZGF0YT1udWxsLHRoaXMuc2hvd0NvbnRvdXI9WyExLCExLCExXSx0aGlzLmRhdGFTY2FsZT0xfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MSksdC5tYXAoZnVuY3Rpb24odCl7dmFyIHI9dFswXSxuPWQodFsxXSksaT1uLnRvUmdiKCk7cmV0dXJue2luZGV4OnIscmdiOltpLnIsaS5nLGkuYixlXX19KX1mdW5jdGlvbiBvKHQpe3ZhciBlPXQuc2hhcGUscj1bZVswXSsyLGVbMV0rMl0sbj1jKG5ldyBGbG9hdDMyQXJyYXkoclswXSpyWzFdKSxyKTtyZXR1cm4gZi5hc3NpZ24obi5sbygxLDEpLmhpKGVbMF0sZVsxXSksdCksZi5hc3NpZ24obi5sbygxKS5oaShlWzBdLDEpLHQuaGkoZVswXSwxKSksZi5hc3NpZ24obi5sbygxLHJbMV0tMSkuaGkoZVswXSwxKSx0LmxvKDAsZVsxXS0xKS5oaShlWzBdLDEpKSxmLmFzc2lnbihuLmxvKDAsMSkuaGkoMSxlWzFdKSx0LmhpKDEpKSxmLmFzc2lnbihuLmxvKHJbMF0tMSwxKS5oaSgxLGVbMV0pLHQubG8oZVswXS0xKSksbi5zZXQoMCwwLHQuZ2V0KDAsMCkpLG4uc2V0KDAsclsxXS0xLHQuZ2V0KDAsZVsxXS0xKSksbi5zZXQoclswXS0xLDAsdC5nZXQoZVswXS0xLDApKSxuLnNldChyWzBdLTEsclsxXS0xLHQuZ2V0KGVbMF0tMSxlWzFdLTEpKSxufWZ1bmN0aW9uIGEodCl7dmFyIGU9TWF0aC5tYXgodFswXS5zaGFwZVswXSx0WzBdLnNoYXBlWzFdKTtpZihnPmUpe2Zvcih2YXIgcj1nL2Usbj1bMHxNYXRoLmZsb29yKHRbMF0uc2hhcGVbMF0qcisxKSwwfE1hdGguZmxvb3IodFswXS5zaGFwZVsxXSpyKzEpXSxpPW5bMF0qblsxXSxhPTA7YTx0Lmxlbmd0aDsrK2Epe3ZhciBzPW8odFthXSksbD1jKG5ldyBGbG9hdDMyQXJyYXkoaSksbik7dShsLHMsW3IsMCwwLDAsciwwLDAsMCwxXSksdFthXT1sfXJldHVybiByfXJldHVybiAxfWZ1bmN0aW9uIHModCxlKXt2YXIgcj10LmdscGxvdC5nbCxpPWwoe2dsOnJ9KSxvPW5ldyBuKHQsaSxlLnVpZCk7cmV0dXJuIG8udXBkYXRlKGUpLHQuZ2xwbG90LmFkZChpKSxvfXZhciBsPXQoImdsLXN1cmZhY2UzZCIpLGM9dCgibmRhcnJheSIpLHU9dCgibmRhcnJheS1ob21vZ3JhcGh5IiksaD10KCJuZGFycmF5LWZpbGwiKSxmPXQoIm5kYXJyYXktb3BzIiksZD10KCJ0aW55Y29sb3IyIikscD10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksZz0xMjgsdj1uLnByb3RvdHlwZTt2LmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7aWYodC5vYmplY3Q9PT10aGlzLnN1cmZhY2Upe3ZhciBlPVtNYXRoLm1pbigwfE1hdGgucm91bmQodC5kYXRhLmluZGV4WzBdL3RoaXMuZGF0YVNjYWxlLTEpLHRoaXMuZGF0YS56WzBdLmxlbmd0aC0xKSxNYXRoLm1pbigwfE1hdGgucm91bmQodC5kYXRhLmluZGV4WzFdL3RoaXMuZGF0YVNjYWxlLTEpLHRoaXMuZGF0YS56Lmxlbmd0aC0xKV0scj1bMCwwLDBdO0FycmF5LmlzQXJyYXkodGhpcy5kYXRhLnhbMF0pP3JbMF09dGhpcy5kYXRhLnhbZVsxXV1bZVswXV06clswXT10aGlzLmRhdGEueFtlWzBdXSxBcnJheS5pc0FycmF5KHRoaXMuZGF0YS55WzBdKT9yWzFdPXRoaXMuZGF0YS55W2VbMV1dW2VbMF1dOnJbMV09dGhpcy5kYXRhLnlbZVsxXV0sclsyXT10aGlzLmRhdGEueltlWzFdXVtlWzBdXSx0LnRyYWNlQ29vcmRpbmF0ZT1yO3ZhciBuPXRoaXMuc2NlbmUuZnVsbFNjZW5lTGF5b3V0O3QuZGF0YUNvb3JkaW5hdGU9W24ueGF4aXMuZDJsKHJbMF0pKnRoaXMuc2NlbmUuZGF0YVNjYWxlWzBdLG4ueWF4aXMuZDJsKHJbMV0pKnRoaXMuc2NlbmUuZGF0YVNjYWxlWzFdLG4uemF4aXMuZDJsKHJbMl0pKnRoaXMuc2NlbmUuZGF0YVNjYWxlWzJdXTt2YXIgaT10aGlzLmRhdGEudGV4dDtyZXR1cm4gaSYmaVtlWzFdXSYmdm9pZCAwIT09aVtlWzFdXVtlWzBdXT90LnRleHRMYWJlbD1pW2VbMV1dW2VbMF1dOnQudGV4dExhYmVsPSIiLHQuZGF0YS5kYXRhQ29vcmRpbmF0ZT10LmRhdGFDb29yZGluYXRlLnNsaWNlKCksdGhpcy5zdXJmYWNlLmhpZ2hsaWdodCh0LmRhdGEpLHRoaXMuc2NlbmUuZ2xwbG90LnNwaWtlcy5wb3NpdGlvbj10LmRhdGFDb29yZGluYXRlLCEwfX0sdi5zZXRDb250b3VyTGV2ZWxzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtbXSxbXSxbXV0sZT0hMSxyPTA7Mz5yOysrcil0aGlzLnNob3dDb250b3VyW3JdJiYoZT0hMCx0W3JdPXRoaXMuc2NlbmUuY29udG91ckxldmVsc1tyXSk7ZSYmdGhpcy5zdXJmYWNlLnVwZGF0ZSh7bGV2ZWxzOnR9KX0sdi51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGUscj10aGlzLnNjZW5lLG49ci5mdWxsU2NlbmVMYXlvdXQsbz10aGlzLnN1cmZhY2Uscz10Lm9wYWNpdHksbD1pKHQuY29sb3JzY2FsZSxzKSx1PXQueixmPXQueCxkPXQueSxnPW4ueGF4aXMsdj1uLnlheGlzLG09bi56YXhpcyx5PXIuZGF0YVNjYWxlLGI9dVswXS5sZW5ndGgseD11Lmxlbmd0aCxfPVtjKG5ldyBGbG9hdDMyQXJyYXkoYip4KSxbYix4XSksYyhuZXcgRmxvYXQzMkFycmF5KGIqeCksW2IseF0pLGMobmV3IEZsb2F0MzJBcnJheShiKngpLFtiLHhdKV0sdz1fWzBdLEE9X1sxXSxrPXIuY29udG91ckxldmVsczt0aGlzLmRhdGE9dCxoKF9bMl0sZnVuY3Rpb24odCxlKXtyZXR1cm4gbS5kMmwodVtlXVt0XSkqeVsyXX0pLEFycmF5LmlzQXJyYXkoZlswXSk/aCh3LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGcuZDJsKGZbZV1bdF0pKnlbMF19KTpoKHcsZnVuY3Rpb24odCl7cmV0dXJuIGcuZDJsKGZbdF0pKnlbMF19KSxBcnJheS5pc0FycmF5KGRbMF0pP2goQSxmdW5jdGlvbih0LGUpe3JldHVybiB2LmQybChkW2VdW3RdKSp5WzFdfSk6aChBLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHYuZDJsKGRbZV0pKnlbMV19KTt2YXIgTT17Y29sb3JtYXA6bCxsZXZlbHM6W1tdLFtdLFtdXSxzaG93Q29udG91cjpbITAsITAsITBdLHNob3dTdXJmYWNlOiF0LmhpZGVzdXJmYWNlLGNvbnRvdXJQcm9qZWN0OltbITEsITEsITFdLFshMSwhMSwhMV0sWyExLCExLCExXV0sY29udG91cldpZHRoOlsxLDEsMV0sY29udG91ckNvbG9yOltbMSwxLDEsMV0sWzEsMSwxLDFdLFsxLDEsMSwxXV0sY29udG91clRpbnQ6WzEsMSwxXSxkeW5hbWljQ29sb3I6W1sxLDEsMSwxXSxbMSwxLDEsMV0sWzEsMSwxLDFdXSxkeW5hbWljV2lkdGg6WzEsMSwxXSxkeW5hbWljVGludDpbMSwxLDFdLG9wYWNpdHk6MX07aWYoTS5pbnRlbnNpdHlCb3VuZHM9W3QuY21pbix0LmNtYXhdLHQuc3VyZmFjZWNvbG9yKXt2YXIgVD1jKG5ldyBGbG9hdDMyQXJyYXkoYip4KSxbYix4XSk7aChULGZ1bmN0aW9uKGUscil7cmV0dXJuIHQuc3VyZmFjZWNvbG9yW3JdW2VdfSksXy5wdXNoKFQpfWVsc2UgTS5pbnRlbnNpdHlCb3VuZHNbMF0qPXlbMl0sTS5pbnRlbnNpdHlCb3VuZHNbMV0qPXlbMl07dGhpcy5kYXRhU2NhbGU9YShfKSx0LnN1cmZhY2Vjb2xvciYmKE0uaW50ZW5zaXR5PV8ucG9wKCkpLCJvcGFjaXR5ImluIHQmJnQub3BhY2l0eTwxJiYoTS5vcGFjaXR5PS4yNSp0Lm9wYWNpdHkpO3ZhciBFPVshMCwhMCwhMF0sTD1bITAsITAsITBdLFM9WyJ4IiwieSIsInoiXTtmb3IoZT0wOzM+ZTsrK2Upe3ZhciBDPXQuY29udG91cnNbU1tlXV07RVtlXT1DLmhpZ2hsaWdodCxMW2VdPUMuc2hvdyxNLnNob3dDb250b3VyW2VdPUMuc2hvd3x8Qy5oaWdobGlnaHQsTS5zaG93Q29udG91cltlXSYmKE0uY29udG91clByb2plY3RbZV09W0MucHJvamVjdC54LEMucHJvamVjdC55LEMucHJvamVjdC56XSxDLnNob3c/KHRoaXMuc2hvd0NvbnRvdXJbZV09ITAsTS5sZXZlbHNbZV09a1tlXSxvLmhpZ2hsaWdodENvbG9yW2VdPU0uY29udG91ckNvbG9yW2VdPXAoQy5jb2xvciksQy51c2Vjb2xvcm1hcD9vLmhpZ2hsaWdodFRpbnRbZV09TS5jb250b3VyVGludFtlXT0wOm8uaGlnaGxpZ2h0VGludFtlXT1NLmNvbnRvdXJUaW50W2VdPTEsTS5jb250b3VyV2lkdGhbZV09Qy53aWR0aCk6dGhpcy5zaG93Q29udG91cltlXT0hMSxDLmhpZ2hsaWdodCYmKE0uZHluYW1pY0NvbG9yW2VdPXAoQy5oaWdobGlnaHRDb2xvciksTS5keW5hbWljV2lkdGhbZV09Qy5oaWdobGlnaHRXaWR0aCkpfU0uY29vcmRzPV8sby51cGRhdGUoTSksby5oaWdobGlnaHRFbmFibGU9RSxvLmNvbnRvdXJFbmFibGU9TCxvLnZpc2libGU9dC52aXNpYmxlLG8uc25hcFRvRGF0YT0hMCwibGlnaHRpbmciaW4gdCYmKG8uYW1iaWVudExpZ2h0PXQubGlnaHRpbmcuYW1iaWVudCxvLmRpZmZ1c2VMaWdodD10LmxpZ2h0aW5nLmRpZmZ1c2Usby5zcGVjdWxhckxpZ2h0PXQubGlnaHRpbmcuc3BlY3VsYXIsby5yb3VnaG5lc3M9dC5saWdodGluZy5yb3VnaG5lc3Msby5mcmVzbmVsPXQubGlnaHRpbmcuZnJlc25lbCkscyYmMT5zJiYoby5zdXBwb3J0c1RyYW5zcGFyZW5jeT0hMCl9LHYuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLnN1cmZhY2UpLHRoaXMuc3VyZmFjZS5kaXNwb3NlKCl9LGUuZXhwb3J0cz1zfSx7Ii4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjM4MywiZ2wtc3VyZmFjZTNkIjoxNzksbmRhcnJheToyMTAsIm5kYXJyYXktZmlsbCI6MjAzLCJuZGFycmF5LWhvbW9ncmFwaHkiOjIwOCwibmRhcnJheS1vcHMiOjIwOSx0aW55Y29sb3IyOjIzMX1dLDU2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtlIGluIHQmJiEociBpbiB0KSYmKHRbcl09dFtlXSl9dmFyIGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxhPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBsKHIsbil7cmV0dXJuIGkuY29lcmNlKHQsZSxhLHIsbil9dmFyIGMsdSxoPWwoInoiKTtpZighaClyZXR1cm4gdm9pZChlLnZpc2libGU9ITEpO3ZhciBmPWhbMF0ubGVuZ3RoLGQ9aC5sZW5ndGg7aWYobCgieCIpLGwoInkiKSwhQXJyYXkuaXNBcnJheShlLngpKWZvcihlLng9W10sYz0wO2Y+YzsrK2MpZS54W2NdPWM7aWYobCgidGV4dCIpLCFBcnJheS5pc0FycmF5KGUueSkpZm9yKGUueT1bXSxjPTA7ZD5jOysrYyllLnlbY109YztsKCJsaWdodGluZy5hbWJpZW50IiksbCgibGlnaHRpbmcuZGlmZnVzZSIpLGwoImxpZ2h0aW5nLnNwZWN1bGFyIiksbCgibGlnaHRpbmcucm91Z2huZXNzIiksbCgibGlnaHRpbmcuZnJlc25lbCIpLGwoImhpZGVzdXJmYWNlIiksbCgib3BhY2l0eSIpO3ZhciBwPWwoInN1cmZhY2Vjb2xvciIpO2woImNvbG9yc2NhbGUiKTt2YXIgZz1bIngiLCJ5IiwieiJdO2ZvcihjPTA7Mz5jOysrYyl7dmFyIHY9ImNvbnRvdXJzLiIrZ1tjXSxtPWwodisiLnNob3ciKSx5PWwodisiLmhpZ2hsaWdodCIpO2lmKG18fHkpZm9yKHU9MDszPnU7Kyt1KWwodisiLnByb2plY3QuIitnW3VdKTttJiYobCh2KyIuY29sb3IiKSxsKHYrIi53aWR0aCIpLGwodisiLnVzZWNvbG9ybWFwIikpLHkmJihsKHYrIi5oaWdobGlnaHRDb2xvciIpLGwodisiLmhpZ2hsaWdodFdpZHRoIikpfXB8fChuKHQsInptaW4iLCJjbWluIiksbih0LCJ6bWF4IiwiY21heCIpLG4odCwiemF1dG8iLCJjYXV0byIpKSxvKHQsZSxzLGwse3ByZWZpeDoiIixjTGV0dGVyOiJjIn0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjMxMCwiLi4vLi4vbGliIjozNzMsIi4vYXR0cmlidXRlcyI6NTY0fV0sNTY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9O24uYXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxuLnN1cHBseURlZmF1bHRzPXQoIi4vZGVmYXVsdHMiKSxuLmNvbG9yYmFyPXQoIi4vY29sb3JiYXIiKSxuLmNhbGM9dCgiLi9jYWxjIiksbi5wbG90PXQoIi4vY29udmVydCIpLG4ubW9kdWxlVHlwZT0idHJhY2UiLG4ubmFtZT0ic3VyZmFjZSIsbi5iYXNlUGxvdE1vZHVsZT10KCIuLi8uLi9wbG90cy9nbDNkIiksbi5jYXRlZ29yaWVzPVsiZ2wzZCIsIm5vT3BhY2l0eSJdLG4ubWV0YT17fSxlLmV4cG9ydHM9bn0seyIuLi8uLi9wbG90cy9nbDNkIjo0MjQsIi4vYXR0cmlidXRlcyI6NTY0LCIuL2NhbGMiOjU2NSwiLi9jb2xvcmJhciI6NTY2LCIuL2NvbnZlcnQiOjU2NywiLi9kZWZhdWx0cyI6NTY4fV19LHt9LFsxMl0pKDEyKX0pOw=="></script>
<script src="data:application/x-javascript;base64,CkhUTUxXaWRnZXRzLndpZGdldCh7CiAgbmFtZTogInBsb3RseSIsCiAgdHlwZTogIm91dHB1dCIsCiAgCiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgIHJldHVybiB7fTsKICB9LAogIAogIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICBpZiAoaW5zdGFuY2UuYXV0b3NpemUpIHsKICAgICAgUGxvdGx5LnJlbGF5b3V0KGVsLmlkLCB7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgfQogIH0sICAKICAKICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIHgsIGluc3RhbmNlKSB7CiAgICAKICAgIHZhciBzaGlueU1vZGU7CiAgICBpZiAodHlwZW9mKHdpbmRvdykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIC8vIG1ha2Ugc3VyZSBwbG90cyBkb24ndCBnZXQgY3JlYXRlZCBvdXRzaWRlIHRoZSBuZXR3b3JrCiAgICAgIHdpbmRvdy5QTE9UTFlFTlYgPSB3aW5kb3cuUExPVExZRU5WIHx8IHt9OwogICAgICB3aW5kb3cuUExPVExZRU5WLkJBU0VfVVJMID0geC5iYXNlX3VybDsKICAgICAgc2hpbnlNb2RlID0gISF3aW5kb3cuU2hpbnk7CiAgICB9CiAgICAKICAgIHZhciBncmFwaERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsLmlkKTsKICAgIAogICAgLy8gaWYgbm8gcGxvdCBleGlzdHMgeWV0LCBjcmVhdGUgb25lIHdpdGggYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24KICAgIGlmICghaW5zdGFuY2UucGxvdGx5KSB7CiAgICAgIFBsb3RseS5wbG90KGdyYXBoRGl2LCB4LmRhdGEsIHgubGF5b3V0LCB4LmNvbmZpZyk7CiAgICAgIGluc3RhbmNlLnBsb3RseSA9IHRydWU7CiAgICAgIGluc3RhbmNlLmF1dG9zaXplID0geC5sYXlvdXQuYXV0b3NpemU7CiAgICB9IGVsc2UgewogICAgICBQbG90bHkubmV3UGxvdChncmFwaERpdiwgeC5kYXRhLCB4LmxheW91dCk7CiAgICB9CiAgICAKICAgIHNlbmRFdmVudERhdGEgPSBmdW5jdGlvbihldmVudFR5cGUpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50RGF0YSkgewogICAgICAgIGlmIChldmVudERhdGEgPT09IHVuZGVmaW5lZCB8fCAhZXZlbnREYXRhLmhhc093blByb3BlcnR5KCJwb2ludHMiKSkgewogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHZhciBkID0gZXZlbnREYXRhLnBvaW50cy5tYXAoZnVuY3Rpb24ocHQpIHsKICAgICAgICAgIHZhciBvYmogPSB7CiAgICAgICAgICAgICAgICBjdXJ2ZU51bWJlcjogcHQuY3VydmVOdW1iZXIsIAogICAgICAgICAgICAgICAgcG9pbnROdW1iZXI6IHB0LnBvaW50TnVtYmVyLCAKICAgICAgICAgICAgICAgIHg6IHB0LngsCiAgICAgICAgICAgICAgICB5OiBwdC55CiAgICAgICAgICB9OwogICAgICAgICAgLy8gZ3JhYiB0aGUgdHJhY2UgY29ycmVzcG9uZGluZyB0byB0aGlzIHBvaW50CiAgICAgICAgICB2YXIgdHIgPSB4LmRhdGFbcHQuY3VydmVOdW1iZXJdOwogICAgICAgICAgLy8gYWRkIG9uIGFkZGl0aW9uYWwgdHJhY2UgaW5mbywgaWYgaXQgZXhpc3RzCiAgICAgICAgICBhdHRhY2hLZXkgPSBmdW5jdGlvbihrZXlOYW1lKSB7CiAgICAgICAgICAgIGlmICh0ci5oYXNPd25Qcm9wZXJ0eShrZXlOYW1lKSAmJiB0cltrZXlOYW1lXSAhPT0gbnVsbCkgewogICAgICAgICAgICAgIGlmICh0eXBlb2YgcHQucG9pbnROdW1iZXIgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICBvYmpba2V5TmFtZV0gPSB0cltrZXlOYW1lXVtwdC5wb2ludE51bWJlcl07CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG9ialtrZXlOYW1lXSA9IHRyW2tleU5hbWVdW3B0LnBvaW50TnVtYmVyWzBdXVtwdC5wb2ludE51bWJlclsxXV07CiAgICAgICAgICAgICAgfS8vIFRPRE86IGNhbiBwb2ludE51bWJlciBiZSAzRD8KICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIGF0dGFjaEtleSgieiIpOwogICAgICAgICAgYXR0YWNoS2V5KCJrZXkiKTsKICAgICAgICAgIHJldHVybiBvYmo7IAogICAgICAgIH0pOwogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoCiAgICAgICAgICAiLmNsaWVudFZhbHVlLSIgKyBldmVudFR5cGUgKyAiLSIgKyB4LnNvdXJjZSwgCiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkKQogICAgICAgICk7CiAgICAgIH07CiAgICB9OwogICAgCiAgICAvLyBzZW5kIHVzZXIgaW5wdXQgZXZlbnQgZGF0YSB0byBzaGlueQogICAgaWYgKHNoaW55TW9kZSkgewogICAgICAvLyBodHRwczovL3Bsb3QubHkvamF2YXNjcmlwdC96b29tLWV2ZW50cy8KICAgICAgZ3JhcGhEaXYub24oJ3Bsb3RseV9yZWxheW91dCcsIGZ1bmN0aW9uKGQpIHsKICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKAogICAgICAgICAgIi5jbGllbnRWYWx1ZS0iICsgInBsb3RseV9yZWxheW91dCIgKyAiLSIgKyB4LnNvdXJjZSwgCiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkKQogICAgICAgICk7CiAgICAgIH0pOwogICAgICBncmFwaERpdi5vbigncGxvdGx5X2hvdmVyJywgc2VuZEV2ZW50RGF0YSgncGxvdGx5X2hvdmVyJykpOwogICAgICBncmFwaERpdi5vbigncGxvdGx5X2NsaWNrJywgc2VuZEV2ZW50RGF0YSgncGxvdGx5X2NsaWNrJykpOwogICAgICBncmFwaERpdi5vbigncGxvdGx5X3NlbGVjdGVkJywgc2VuZEV2ZW50RGF0YSgncGxvdGx5X3NlbGVjdGVkJykpOwogICAgICBncmFwaERpdi5vbigncGxvdGx5X3VuaG92ZXInLCBmdW5jdGlvbihldmVudERhdGEpIHsKICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKCIuY2xpZW50VmFsdWUtcGxvdGx5X2hvdmVyLSIgKyB4LnNvdXJjZSwgbnVsbCk7CiAgICAgIH0pOwogICAgICBncmFwaERpdi5vbigncGxvdGx5X2RvdWJsZWNsaWNrJywgZnVuY3Rpb24oZXZlbnREYXRhKSB7CiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZSgiLmNsaWVudFZhbHVlLXBsb3RseV9jbGljay0iICsgeC5zb3VyY2UsIG51bGwpOwogICAgICB9KTsKICAgICAgLy8gJ3Bsb3RseV9kZXNlbGVjdCcgaXMgY29kZSBmb3IgZG91YmxlY2xpY2sgd2hlbiBpbiBzZWxlY3QgbW9kZQogICAgICBncmFwaERpdi5vbigncGxvdGx5X2Rlc2VsZWN0JywgZnVuY3Rpb24oZXZlbnREYXRhKSB7CiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZSgiLmNsaWVudFZhbHVlLXBsb3RseV9zZWxlY3RlZC0iICsgeC5zb3VyY2UsIG51bGwpOwogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoIi5jbGllbnRWYWx1ZS1wbG90bHlfY2xpY2stIiArIHguc291cmNlLCBudWxsKTsKICAgICAgfSk7CiAgICB9IAogICAgCiAgfSAKICAKfSk7Cg=="></script>
<style type="text/css">code{white-space: pre;}</style>
<link href="data:text/css;charset=utf-8,pre%20%2Eoperator%2C%0Apre%20%2Eparen%20%7B%0Acolor%3A%20rgb%28104%2C%20118%2C%20135%29%0A%7D%0Apre%20%2Eliteral%20%7B%0Acolor%3A%20%23990073%0A%7D%0Apre%20%2Enumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0Apre%20%2Ecomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%0A%7D%0Apre%20%2Ekeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%0A%7D%0Apre%20%2Eidentifier%20%7B%0Acolor%3A%20rgb%280%2C%200%2C%200%29%3B%0A%7D%0Apre%20%2Estring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" type="text/css" />
<script src="data:application/x-javascript;base64,CnZhciBobGpzPW5ldyBmdW5jdGlvbigpe2Z1bmN0aW9uIG0ocCl7cmV0dXJuIHAucmVwbGFjZSgvJi9nbSwiJmFtcDsiKS5yZXBsYWNlKC88L2dtLCImbHQ7Iil9ZnVuY3Rpb24gZihyLHEscCl7cmV0dXJuIFJlZ0V4cChxLCJtIisoci5jST8iaSI6IiIpKyhwPyJnIjoiIikpfWZ1bmN0aW9uIGIocil7Zm9yKHZhciBwPTA7cDxyLmNoaWxkTm9kZXMubGVuZ3RoO3ArKyl7dmFyIHE9ci5jaGlsZE5vZGVzW3BdO2lmKHEubm9kZU5hbWU9PSJDT0RFIil7cmV0dXJuIHF9aWYoIShxLm5vZGVUeXBlPT0zJiZxLm5vZGVWYWx1ZS5tYXRjaCgvXHMrLykpKXticmVha319fWZ1bmN0aW9uIGgodCxzKXt2YXIgcD0iIjtmb3IodmFyIHI9MDtyPHQuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3ZhciBxPXQuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWU7aWYocyl7cT1xLnJlcGxhY2UoL1xuL2csIiIpfXArPXF9ZWxzZXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZU5hbWU9PSJCUiIpe3ArPSJcbiJ9ZWxzZXtwKz1oKHQuY2hpbGROb2Rlc1tyXSl9fX1pZigvTVNJRSBbNjc4XS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7cD1wLnJlcGxhY2UoL1xyL2csIlxuIil9cmV0dXJuIHB9ZnVuY3Rpb24gYShzKXt2YXIgcj1zLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7cj1yLmNvbmNhdChzLnBhcmVudE5vZGUuY2xhc3NOYW1lLnNwbGl0KC9ccysvKSk7Zm9yKHZhciBxPTA7cTxyLmxlbmd0aDtxKyspe3ZhciBwPXJbcV0ucmVwbGFjZSgvXmxhbmd1YWdlLS8sIiIpO2lmKGVbcF0pe3JldHVybiBwfX19ZnVuY3Rpb24gYyhxKXt2YXIgcD1bXTsoZnVuY3Rpb24ocyx0KXtmb3IodmFyIHI9MDtyPHMuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZihzLmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3QrPXMuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWUubGVuZ3RofWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVOYW1lPT0iQlIiKXt0Kz0xfWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVUeXBlPT0xKXtwLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OnQsbm9kZTpzLmNoaWxkTm9kZXNbcl19KTt0PWFyZ3VtZW50cy5jYWxsZWUocy5jaGlsZE5vZGVzW3JdLHQpO3AucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDp0LG5vZGU6cy5jaGlsZE5vZGVzW3JdfSl9fX19cmV0dXJuIHR9KShxLDApO3JldHVybiBwfWZ1bmN0aW9uIGsoeSx3LHgpe3ZhciBxPTA7dmFyIHo9IiI7dmFyIHM9W107ZnVuY3Rpb24gdSgpe2lmKHkubGVuZ3RoJiZ3Lmxlbmd0aCl7aWYoeVswXS5vZmZzZXQhPXdbMF0ub2Zmc2V0KXtyZXR1cm4oeVswXS5vZmZzZXQ8d1swXS5vZmZzZXQpP3k6d31lbHNle3JldHVybiB3WzBdLmV2ZW50PT0ic3RhcnQiP3k6d319ZWxzZXtyZXR1cm4geS5sZW5ndGg/eTp3fX1mdW5jdGlvbiB0KEQpe3ZhciBBPSI8IitELm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBCPTA7QjxELmF0dHJpYnV0ZXMubGVuZ3RoO0IrKyl7dmFyIEM9RC5hdHRyaWJ1dGVzW0JdO0ErPSIgIitDLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoQy52YWx1ZSE9PXVuZGVmaW5lZCYmQy52YWx1ZSE9PWZhbHNlJiZDLnZhbHVlIT09bnVsbCl7QSs9Jz0iJyttKEMudmFsdWUpKyciJ319cmV0dXJuIEErIj4ifXdoaWxlKHkubGVuZ3RofHx3Lmxlbmd0aCl7dmFyIHY9dSgpLnNwbGljZSgwLDEpWzBdO3orPW0oeC5zdWJzdHIocSx2Lm9mZnNldC1xKSk7cT12Lm9mZnNldDtpZih2LmV2ZW50PT0ic3RhcnQiKXt6Kz10KHYubm9kZSk7cy5wdXNoKHYubm9kZSl9ZWxzZXtpZih2LmV2ZW50PT0ic3RvcCIpe3ZhciBwLHI9cy5sZW5ndGg7ZG97ci0tO3A9c1tyXTt6Kz0oIjwvIitwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkrIj4iKX13aGlsZShwIT12Lm5vZGUpO3Muc3BsaWNlKHIsMSk7d2hpbGUocjxzLmxlbmd0aCl7eis9dChzW3JdKTtyKyt9fX19cmV0dXJuIHorbSh4LnN1YnN0cihxKSl9ZnVuY3Rpb24gaigpe2Z1bmN0aW9uIHEoeCx5LHYpe2lmKHguY29tcGlsZWQpe3JldHVybn12YXIgdTt2YXIgcz1bXTtpZih4Lmspe3gubFI9Zih5LHgubHx8aGxqcy5JUix0cnVlKTtmb3IodmFyIHcgaW4geC5rKXtpZigheC5rLmhhc093blByb3BlcnR5KHcpKXtjb250aW51ZX1pZih4Lmtbd10gaW5zdGFuY2VvZiBPYmplY3Qpe3U9eC5rW3ddfWVsc2V7dT14Lms7dz0ia2V5d29yZCJ9Zm9yKHZhciByIGluIHUpe2lmKCF1Lmhhc093blByb3BlcnR5KHIpKXtjb250aW51ZX14Lmtbcl09W3csdVtyXV07cy5wdXNoKHIpfX19aWYoIXYpe2lmKHguYldLKXt4LmI9IlxcYigiK3Muam9pbigifCIpKyIpXFxzIn14LmJSPWYoeSx4LmI/eC5iOiJcXEJ8XFxiIik7aWYoIXguZSYmIXguZVcpe3guZT0iXFxCfFxcYiJ9aWYoeC5lKXt4LmVSPWYoeSx4LmUpfX1pZih4Lmkpe3guaVI9Zih5LHguaSl9aWYoeC5yPT09dW5kZWZpbmVkKXt4LnI9MX1pZigheC5jKXt4LmM9W119eC5jb21waWxlZD10cnVlO2Zvcih2YXIgdD0wO3Q8eC5jLmxlbmd0aDt0Kyspe2lmKHguY1t0XT09InNlbGYiKXt4LmNbdF09eH1xKHguY1t0XSx5LGZhbHNlKX1pZih4LnN0YXJ0cyl7cSh4LnN0YXJ0cyx5LGZhbHNlKX19Zm9yKHZhciBwIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHApKXtjb250aW51ZX1xKGVbcF0uZE0sZVtwXSx0cnVlKX19ZnVuY3Rpb24gZChCLEMpe2lmKCFqLmNhbGxlZCl7aigpO2ouY2FsbGVkPXRydWV9ZnVuY3Rpb24gcShyLE0pe2Zvcih2YXIgTD0wO0w8TS5jLmxlbmd0aDtMKyspe2lmKChNLmNbTF0uYlIuZXhlYyhyKXx8W251bGxdKVswXT09cil7cmV0dXJuIE0uY1tMXX19fWZ1bmN0aW9uIHYoTCxyKXtpZihEW0xdLmUmJkRbTF0uZVIudGVzdChyKSl7cmV0dXJuIDF9aWYoRFtMXS5lVyl7dmFyIE09dihMLTEscik7cmV0dXJuIE0/TSsxOjB9cmV0dXJuIDB9ZnVuY3Rpb24gdyhyLEwpe3JldHVybiBMLmkmJkwuaVIudGVzdChyKX1mdW5jdGlvbiBLKE4sTyl7dmFyIE09W107Zm9yKHZhciBMPTA7TDxOLmMubGVuZ3RoO0wrKyl7TS5wdXNoKE4uY1tMXS5iKX12YXIgcj1ELmxlbmd0aC0xO2Rve2lmKERbcl0uZSl7TS5wdXNoKERbcl0uZSl9ci0tfXdoaWxlKERbcisxXS5lVyk7aWYoTi5pKXtNLnB1c2goTi5pKX1yZXR1cm4gZihPLE0uam9pbigifCIpLHRydWUpfWZ1bmN0aW9uIHAoTSxMKXt2YXIgTj1EW0QubGVuZ3RoLTFdO2lmKCFOLnQpe04udD1LKE4sRSl9Ti50Lmxhc3RJbmRleD1MO3ZhciByPU4udC5leGVjKE0pO3JldHVybiByP1tNLnN1YnN0cihMLHIuaW5kZXgtTCksclswXSxmYWxzZV06W00uc3Vic3RyKEwpLCIiLHRydWVdfWZ1bmN0aW9uIHooTixyKXt2YXIgTD1FLmNJP3JbMF0udG9Mb3dlckNhc2UoKTpyWzBdO3ZhciBNPU4ua1tMXTtpZihNJiZNIGluc3RhbmNlb2YgQXJyYXkpe3JldHVybiBNfXJldHVybiBmYWxzZX1mdW5jdGlvbiBGKEwsUCl7TD1tKEwpO2lmKCFQLmspe3JldHVybiBMfXZhciByPSIiO3ZhciBPPTA7UC5sUi5sYXN0SW5kZXg9MDt2YXIgTT1QLmxSLmV4ZWMoTCk7d2hpbGUoTSl7cis9TC5zdWJzdHIoTyxNLmluZGV4LU8pO3ZhciBOPXooUCxNKTtpZihOKXt4Kz1OWzFdO3IrPSc8c3BhbiBjbGFzcz0iJytOWzBdKyciPicrTVswXSsiPC9zcGFuPiJ9ZWxzZXtyKz1NWzBdfU89UC5sUi5sYXN0SW5kZXg7TT1QLmxSLmV4ZWMoTCl9cmV0dXJuIHIrTC5zdWJzdHIoTyxMLmxlbmd0aC1PKX1mdW5jdGlvbiBKKEwsTSl7aWYoTS5zTCYmZVtNLnNMXSl7dmFyIHI9ZChNLnNMLEwpO3grPXIua2V5d29yZF9jb3VudDtyZXR1cm4gci52YWx1ZX1lbHNle3JldHVybiBGKEwsTSl9fWZ1bmN0aW9uIEkoTSxyKXt2YXIgTD1NLmNOPyc8c3BhbiBjbGFzcz0iJytNLmNOKyciPic6IiI7aWYoTS5yQil7eSs9TDtNLmJ1ZmZlcj0iIn1lbHNle2lmKE0uZUIpe3krPW0ocikrTDtNLmJ1ZmZlcj0iIn1lbHNle3krPUw7TS5idWZmZXI9cn19RC5wdXNoKE0pO0ErPU0ucn1mdW5jdGlvbiBHKE4sTSxRKXt2YXIgUj1EW0QubGVuZ3RoLTFdO2lmKFEpe3krPUooUi5idWZmZXIrTixSKTtyZXR1cm4gZmFsc2V9dmFyIFA9cShNLFIpO2lmKFApe3krPUooUi5idWZmZXIrTixSKTtJKFAsTSk7cmV0dXJuIFAuckJ9dmFyIEw9dihELmxlbmd0aC0xLE0pO2lmKEwpe3ZhciBPPVIuY04/Ijwvc3Bhbj4iOiIiO2lmKFIuckUpe3krPUooUi5idWZmZXIrTixSKStPfWVsc2V7aWYoUi5lRSl7eSs9SihSLmJ1ZmZlcitOLFIpK08rbShNKX1lbHNle3krPUooUi5idWZmZXIrTitNLFIpK099fXdoaWxlKEw+MSl7Tz1EW0QubGVuZ3RoLTJdLmNOPyI8L3NwYW4+IjoiIjt5Kz1PO0wtLTtELmxlbmd0aC0tfXZhciByPURbRC5sZW5ndGgtMV07RC5sZW5ndGgtLTtEW0QubGVuZ3RoLTFdLmJ1ZmZlcj0iIjtpZihyLnN0YXJ0cyl7SShyLnN0YXJ0cywiIil9cmV0dXJuIFIuckV9aWYodyhNLFIpKXt0aHJvdyJJbGxlZ2FsIn19dmFyIEU9ZVtCXTt2YXIgRD1bRS5kTV07dmFyIEE9MDt2YXIgeD0wO3ZhciB5PSIiO3RyeXt2YXIgcyx1PTA7RS5kTS5idWZmZXI9IiI7ZG97cz1wKEMsdSk7dmFyIHQ9RyhzWzBdLHNbMV0sc1syXSk7dSs9c1swXS5sZW5ndGg7aWYoIXQpe3UrPXNbMV0ubGVuZ3RofX13aGlsZSghc1syXSk7aWYoRC5sZW5ndGg+MSl7dGhyb3ciSWxsZWdhbCJ9cmV0dXJue3I6QSxrZXl3b3JkX2NvdW50OngsdmFsdWU6eX19Y2F0Y2goSCl7aWYoSD09IklsbGVnYWwiKXtyZXR1cm57cjowLGtleXdvcmRfY291bnQ6MCx2YWx1ZTptKEMpfX1lbHNle3Rocm93IEh9fX1mdW5jdGlvbiBnKHQpe3ZhciBwPXtrZXl3b3JkX2NvdW50OjAscjowLHZhbHVlOm0odCl9O3ZhciByPXA7Zm9yKHZhciBxIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHEpKXtjb250aW51ZX12YXIgcz1kKHEsdCk7cy5sYW5ndWFnZT1xO2lmKHMua2V5d29yZF9jb3VudCtzLnI+ci5rZXl3b3JkX2NvdW50K3Iucil7cj1zfWlmKHMua2V5d29yZF9jb3VudCtzLnI+cC5rZXl3b3JkX2NvdW50K3Aucil7cj1wO3A9c319aWYoci5sYW5ndWFnZSl7cC5zZWNvbmRfYmVzdD1yfXJldHVybiBwfWZ1bmN0aW9uIGkocixxLHApe2lmKHEpe3I9ci5yZXBsYWNlKC9eKCg8W14+XSs+fFx0KSspL2dtLGZ1bmN0aW9uKHQsdyx2LHUpe3JldHVybiB3LnJlcGxhY2UoL1x0L2cscSl9KX1pZihwKXtyPXIucmVwbGFjZSgvXG4vZywiPGJyPiIpfXJldHVybiByfWZ1bmN0aW9uIG4odCx3LHIpe3ZhciB4PWgodCxyKTt2YXIgdj1hKHQpO3ZhciB5LHM7aWYodil7eT1kKHYseCl9ZWxzZXtyZXR1cm59dmFyIHE9Yyh0KTtpZihxLmxlbmd0aCl7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcmUiKTtzLmlubmVySFRNTD15LnZhbHVlO3kudmFsdWU9ayhxLGMocykseCl9eS52YWx1ZT1pKHkudmFsdWUsdyxyKTt2YXIgdT10LmNsYXNzTmFtZTtpZighdS5tYXRjaCgiKFxcc3xeKShsYW5ndWFnZS0pPyIrdisiKFxcc3wkKSIpKXt1PXU/KHUrIiAiK3YpOnZ9aWYoL01TSUUgWzY3OF0vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnQudGFnTmFtZT09IkNPREUiJiZ0LnBhcmVudE5vZGUudGFnTmFtZT09IlBSRSIpe3M9dC5wYXJlbnROb2RlO3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuaW5uZXJIVE1MPSI8cHJlPjxjb2RlPiIreS52YWx1ZSsiPC9jb2RlPjwvcHJlPiI7dD1wLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDtwLmZpcnN0Q2hpbGQuY049cy5jTjtzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHAuZmlyc3RDaGlsZCxzKX1lbHNle3QuaW5uZXJIVE1MPXkudmFsdWV9dC5jbGFzc05hbWU9dTt0LnJlc3VsdD17bGFuZ3VhZ2U6dixrdzp5LmtleXdvcmRfY291bnQscmU6eS5yfTtpZih5LnNlY29uZF9iZXN0KXt0LnNlY29uZF9iZXN0PXtsYW5ndWFnZTp5LnNlY29uZF9iZXN0Lmxhbmd1YWdlLGt3Onkuc2Vjb25kX2Jlc3Qua2V5d29yZF9jb3VudCxyZTp5LnNlY29uZF9iZXN0LnJ9fX1mdW5jdGlvbiBvKCl7aWYoby5jYWxsZWQpe3JldHVybn1vLmNhbGxlZD10cnVlO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcmUiKTtmb3IodmFyIHA9MDtwPHIubGVuZ3RoO3ArKyl7dmFyIHE9YihyW3BdKTtpZihxKXtuKHEsaGxqcy50YWJSZXBsYWNlKX19fWZ1bmN0aW9uIGwoKXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLG8sZmFsc2UpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixvLGZhbHNlKX1lbHNle2lmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLG8pfWVsc2V7d2luZG93Lm9ubG9hZD1vfX19dmFyIGU9e307dGhpcy5MQU5HVUFHRVM9ZTt0aGlzLmhpZ2hsaWdodD1kO3RoaXMuaGlnaGxpZ2h0QXV0bz1nO3RoaXMuZml4TWFya3VwPWk7dGhpcy5oaWdobGlnaHRCbG9jaz1uO3RoaXMuaW5pdEhpZ2hsaWdodGluZz1vO3RoaXMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZD1sO3RoaXMuSVI9IlthLXpBLVpdW2EtekEtWjAtOV9dKiI7dGhpcy5VSVI9IlthLXpBLVpfXVthLXpBLVowLTlfXSoiO3RoaXMuTlI9IlxcYlxcZCsoXFwuXFxkKyk/Ijt0aGlzLkNOUj0iXFxiKDBbeFhdW2EtZkEtRjAtOV0rfChcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShbZUVdWy0rXT9cXGQrKT8pIjt0aGlzLkJOUj0iXFxiKDBiWzAxXSspIjt0aGlzLlJTUj0iIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcKnxcXCo9fFxcK3xcXCs9fCx8XFwufC18LT18L3wvPXw6fDt8PHw8PHw8PD18PD18PXw9PXw9PT18Pnw+PXw+Pnw+Pj18Pj4+fD4+Pj18XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+Ijt0aGlzLkVSPSIoPyFbXFxzXFxTXSkiO3RoaXMuQkU9e2I6IlxcXFwuIixyOjB9O3RoaXMuQVNNPXtjTjoic3RyaW5nIixiOiInIixlOiInIixpOiJcXG4iLGM6W3RoaXMuQkVdLHI6MH07dGhpcy5RU009e2NOOiJzdHJpbmciLGI6JyInLGU6JyInLGk6IlxcbiIsYzpbdGhpcy5CRV0scjowfTt0aGlzLkNMQ009e2NOOiJjb21tZW50IixiOiIvLyIsZToiJCJ9O3RoaXMuQ0JMQ0xNPXtjTjoiY29tbWVudCIsYjoiL1xcKiIsZToiXFwqLyJ9O3RoaXMuSENNPXtjTjoiY29tbWVudCIsYjoiIyIsZToiJCJ9O3RoaXMuTk09e2NOOiJudW1iZXIiLGI6dGhpcy5OUixyOjB9O3RoaXMuQ05NPXtjTjoibnVtYmVyIixiOnRoaXMuQ05SLHI6MH07dGhpcy5CTk09e2NOOiJudW1iZXIiLGI6dGhpcy5CTlIscjowfTt0aGlzLmluaGVyaXQ9ZnVuY3Rpb24ocixzKXt2YXIgcD17fTtmb3IodmFyIHEgaW4gcil7cFtxXT1yW3FdfWlmKHMpe2Zvcih2YXIgcSBpbiBzKXtwW3FdPXNbcV19fXJldHVybiBwfX0oKTtobGpzLkxBTkdVQUdFUy5jcHA9ZnVuY3Rpb24oKXt2YXIgYT17a2V5d29yZDp7ImZhbHNlIjoxLCJpbnQiOjEsImZsb2F0IjoxLCJ3aGlsZSI6MSwicHJpdmF0ZSI6MSwiY2hhciI6MSwiY2F0Y2giOjEsImV4cG9ydCI6MSx2aXJ0dWFsOjEsb3BlcmF0b3I6MixzaXplb2Y6MixkeW5hbWljX2Nhc3Q6Mix0eXBlZGVmOjIsY29uc3RfY2FzdDoyLCJjb25zdCI6MSxzdHJ1Y3Q6MSwiZm9yIjoxLHN0YXRpY19jYXN0OjIsdW5pb246MSxuYW1lc3BhY2U6MSx1bnNpZ25lZDoxLCJsb25nIjoxLCJ0aHJvdyI6MSwidm9sYXRpbGUiOjIsInN0YXRpYyI6MSwicHJvdGVjdGVkIjoxLGJvb2w6MSx0ZW1wbGF0ZToxLG11dGFibGU6MSwiaWYiOjEsInB1YmxpYyI6MSxmcmllbmQ6MiwiZG8iOjEsInJldHVybiI6MSwiZ290byI6MSxhdXRvOjEsInZvaWQiOjIsImVudW0iOjEsImVsc2UiOjEsImJyZWFrIjoxLCJuZXciOjEsZXh0ZXJuOjEsdXNpbmc6MSwidHJ1ZSI6MSwiY2xhc3MiOjEsYXNtOjEsImNhc2UiOjEsdHlwZWlkOjEsInNob3J0IjoxLHJlaW50ZXJwcmV0X2Nhc3Q6MiwiZGVmYXVsdCI6MSwiZG91YmxlIjoxLHJlZ2lzdGVyOjEsZXhwbGljaXQ6MSxzaWduZWQ6MSx0eXBlbmFtZToxLCJ0cnkiOjEsInRoaXMiOjEsInN3aXRjaCI6MSwiY29udGludWUiOjEsd2NoYXJfdDoxLGlubGluZToxLCJkZWxldGUiOjEsYWxpZ25vZjoxLGNoYXIxNl90OjEsY2hhcjMyX3Q6MSxjb25zdGV4cHI6MSxkZWNsdHlwZToxLG5vZXhjZXB0OjEsbnVsbHB0cjoxLHN0YXRpY19hc3NlcnQ6MSx0aHJlYWRfbG9jYWw6MSxyZXN0cmljdDoxLF9Cb29sOjEsY29tcGxleDoxfSxidWlsdF9pbjp7c3RkOjEsc3RyaW5nOjEsY2luOjEsY291dDoxLGNlcnI6MSxjbG9nOjEsc3RyaW5nc3RyZWFtOjEsaXN0cmluZ3N0cmVhbToxLG9zdHJpbmdzdHJlYW06MSxhdXRvX3B0cjoxLGRlcXVlOjEsbGlzdDoxLHF1ZXVlOjEsc3RhY2s6MSx2ZWN0b3I6MSxtYXA6MSxzZXQ6MSxiaXRzZXQ6MSxtdWx0aXNldDoxLG11bHRpbWFwOjEsdW5vcmRlcmVkX3NldDoxLHVub3JkZXJlZF9tYXA6MSx1bm9yZGVyZWRfbXVsdGlzZXQ6MSx1bm9yZGVyZWRfbXVsdGltYXA6MSxhcnJheToxLHNoYXJlZF9wdHI6MX19O3JldHVybntkTTp7azphLGk6IjwvIixjOltobGpzLkNMQ00saGxqcy5DQkxDTE0saGxqcy5RU00se2NOOiJzdHJpbmciLGI6IidcXFxcPy4iLGU6IiciLGk6Ii4ifSx7Y046Im51bWJlciIsYjoiXFxiKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKSJ9LGhsanMuQ05NLHtjTjoicHJlcHJvY2Vzc29yIixiOiIjIixlOiIkIn0se2NOOiJzdGxfY29udGFpbmVyIixiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YSxyOjEwLGM6WyJzZWxmIl19XX19fSgpO2hsanMuTEFOR1VBR0VTLnI9e2RNOntjOltobGpzLkhDTSx7Y046Im51bWJlciIsYjoiXFxiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjB9LHtjTjoibnVtYmVyIixiOiJcXGJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJrZXl3b3JkIixiOiIoPzp0cnlDYXRjaHxsaWJyYXJ5fHNldEdlbmVyaWN8c2V0R3JvdXBHZW5lcmljKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcLiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcZCsoPyFbXFx3Ll0pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MTB9LHtjTjoia2V5d29yZCIsYjoiXFxiKD86ZnVuY3Rpb24pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJrZXl3b3JkIixiOiIoPzppZnxpbnxicmVha3xuZXh0fHJlcGVhdHxlbHNlfGZvcnxyZXR1cm58c3dpdGNofHdoaWxlfHRyeXxzdG9wfHdhcm5pbmd8cmVxdWlyZXxhdHRhY2h8ZGV0YWNofHNvdXJjZXxzZXRNZXRob2R8c2V0Q2xhc3MpXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJsaXRlcmFsIixiOiIoPzpOQXxOQV9pbnRlZ2VyX3xOQV9yZWFsX3xOQV9jaGFyYWN0ZXJffE5BX2NvbXBsZXhfKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImxpdGVyYWwiLGI6Iig/Ok5VTEx8VFJVRXxGQUxTRXxUfEZ8SW5mfE5hTilcXGIiLGU6aGxqcy5JTU1FRElBVEVfUkUscjoxfSx7Y046ImlkZW50aWZpZXIiLGI6IlthLXpBLVouXVthLXpBLVowLTkuX10qXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJvcGVyYXRvciIsYjoiPFxcLSg/IVxccypcXGQpIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJvcGVyYXRvciIsYjoiXFwtPnw8XFwtIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJvcGVyYXRvciIsYjoiJSV8fiIsZTpobGpzLklNTUVESUFURV9SRX0se2NOOiJvcGVyYXRvciIsYjoiPj18PD18PT18IT18XFx8XFx8fCYmfD18XFwrfFxcLXxcXCp8L3xcXF58Pnw8fCF8JnxcXHx8XFwkfDoiLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfSx7Y046Im9wZXJhdG9yIixiOiIlIixlOiIlIixpOiJcXG4iLHI6MX0se2NOOiJpZGVudGlmaWVyIixiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixiOiciJyxlOiciJyxjOltobGpzLkJFXSxyOjB9LHtjTjoic3RyaW5nIixiOiInIixlOiInIixjOltobGpzLkJFXSxyOjB9LHtjTjoicGFyZW4iLGI6IltbKHtcXF0pfV0iLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfV19fTsKaGxqcy5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCk7Cgo="></script>
<style type="text/css">
pre:not([class]) {
background-color: white;
}
</style>
<script type="text/javascript">
if (window.hljs && document.readyState && document.readyState === "complete") {
window.setTimeout(function() {
hljs.initHighlighting();
}, 0);
}
</script>
<style type="text/css">
h1 {
font-size: 34px;
}
h1.title {
font-size: 38px;
}
h2 {
font-size: 30px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 18px;
}
h5 {
font-size: 16px;
}
h6 {
font-size: 12px;
}
.table th:not([align]) {
text-align: left;
}
</style>
</head>
<body>
<style type="text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.04);
}
img {
max-width:100%;
height: auto;
}
.tabbed-pane {
padding-top: 12px;
}
button.code-folding-btn:focus {
outline: none;
}
</style>
<div class="container-fluid main-container">
<!-- tabsets -->
<script src="data:application/x-javascript;base64,Cgp3aW5kb3cuYnVpbGRUYWJzZXRzID0gZnVuY3Rpb24odG9jSUQpIHsKCiAgLy8gYnVpbGQgYSB0YWJzZXQgZnJvbSBhIHNlY3Rpb24gZGl2IHdpdGggdGhlIC50YWJzZXQgY2xhc3MKICBmdW5jdGlvbiBidWlsZFRhYnNldCh0YWJzZXQpIHsKCiAgICAvLyBjaGVjayBmb3IgZmFkZSBhbmQgcGlsbHMgb3B0aW9ucwogICAgdmFyIGZhZGUgPSB0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1mYWRlIik7CiAgICB2YXIgcGlsbHMgPSB0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1waWxscyIpOwogICAgdmFyIG5hdkNsYXNzID0gcGlsbHMgPyAibmF2LXBpbGxzIiA6ICJuYXYtdGFicyI7CgogICAgLy8gZGV0ZXJtaW5lIHRoZSBoZWFkaW5nIGxldmVsIG9mIHRoZSB0YWJzZXQgYW5kIHRhYnMKICAgIHZhciBtYXRjaCA9IHRhYnNldC5hdHRyKCdjbGFzcycpLm1hdGNoKC9sZXZlbChcZCkgLyk7CiAgICBpZiAobWF0Y2ggPT09IG51bGwpCiAgICAgIHJldHVybjsKICAgIHZhciB0YWJzZXRMZXZlbCA9IE51bWJlcihtYXRjaFsxXSk7CiAgICB2YXIgdGFiTGV2ZWwgPSB0YWJzZXRMZXZlbCArIDE7CgogICAgLy8gZmluZCBhbGwgc3ViaGVhZGluZ3MgaW1tZWRpYXRlbHkgYmVsb3cKICAgIHZhciB0YWJzID0gdGFic2V0LmZpbmQoImRpdi5zZWN0aW9uLmxldmVsIiArIHRhYkxldmVsKTsKICAgIGlmICghdGFicy5sZW5ndGgpCiAgICAgIHJldHVybjsKCiAgICAvLyBjcmVhdGUgdGFibGlzdCBhbmQgdGFiLWNvbnRlbnQgZWxlbWVudHMKICAgIHZhciB0YWJMaXN0ID0gJCgnPHVsIGNsYXNzPSJuYXYgJyArIG5hdkNsYXNzICsgJyIgcm9sZT0idGFibGlzdCI+PC91bD4nKTsKICAgICQodGFic1swXSkuYmVmb3JlKHRhYkxpc3QpOwogICAgdmFyIHRhYkNvbnRlbnQgPSAkKCc8ZGl2IGNsYXNzPSJ0YWItY29udGVudCI+PC9kaXY+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJDb250ZW50KTsKCiAgICAvLyBidWlsZCB0aGUgdGFic2V0CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHJlbW92ZSBhbnkgdGFibGUgb2YgY29udGVudHMgZW50cmllcyBhc3NvY2lhdGVkIHdpdGgKICAgICAgLy8gdGhpcyBJRCAoc2luY2Ugd2UnbGwgYmUgcmVtb3ZpbmcgdGhlIGhlYWRpbmcgZWxlbWVudCkKICAgICAgJCgiZGl2IyIgKyB0b2NJRCArICIgbGkgYVtocmVmPScjIiArIGlkICsgIiddIikucGFyZW50KCkucmVtb3ZlKCk7CgogICAgICAvLyBzYW5pdGl6ZSB0aGUgaWQgZm9yIHVzZSB3aXRoIGJvb3RzdHJhcCB0YWJzCiAgICAgIGlkID0gaWQucmVwbGFjZSgvWy5cLz8mISM8Pl0vZywgJycpLnJlcGxhY2UoL1xzL2csICdfJyk7CiAgICAgIHRhYi5hdHRyKCdpZCcsIGlkKTsKCiAgICAgIC8vIGdldCB0aGUgaGVhZGluZyBlbGVtZW50IHdpdGhpbiBpdCwgZ3JhYiBpdCdzIHRleHQsIHRoZW4gcmVtb3ZlIGl0CiAgICAgIHZhciBoZWFkaW5nID0gdGFiLmZpbmQoJ2gnICsgdGFiTGV2ZWwgKyAnOmZpcnN0Jyk7CiAgICAgIHZhciBoZWFkaW5nVGV4dCA9IGhlYWRpbmcuaHRtbCgpOwogICAgICBoZWFkaW5nLnJlbW92ZSgpOwoKICAgICAgLy8gYnVpbGQgYW5kIGFwcGVuZCB0aGUgdGFiIGxpc3QgaXRlbQogICAgICB2YXIgYSA9ICQoJzxhIHJvbGU9InRhYiIgZGF0YS10b2dnbGU9InRhYiI+JyArIGhlYWRpbmdUZXh0ICsgJzwvYT4nKTsKICAgICAgYS5hdHRyKCdocmVmJywgJyMnICsgaWQpOwogICAgICBhLmF0dHIoJ2FyaWEtY29udHJvbHMnLCBpZCk7CiAgICAgIHZhciBsaSA9ICQoJzxsaSByb2xlPSJwcmVzZW50YXRpb24iPjwvbGk+Jyk7CiAgICAgIGxpLmFwcGVuZChhKTsKICAgICAgaWYgKGkgPT09IDApCiAgICAgICAgbGkuYXR0cignY2xhc3MnLCAnYWN0aXZlJyk7CiAgICAgIHRhYkxpc3QuYXBwZW5kKGxpKTsKCiAgICAgIC8vIHNldCBpdCdzIGF0dHJpYnV0ZXMKICAgICAgdGFiLmF0dHIoJ3JvbGUnLCAndGFicGFuZWwnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWItcGFuZScpOwogICAgICB0YWIuYWRkQ2xhc3MoJ3RhYmJlZC1wYW5lJyk7CiAgICAgIGlmIChmYWRlKQogICAgICAgIHRhYi5hZGRDbGFzcygnZmFkZScpOwogICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgIHRhYi5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgaWYgKGZhZGUpCiAgICAgICAgICB0YWIuYWRkQ2xhc3MoJ2luJyk7CiAgICAgIH0KCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwogIH0KCiAgLy8gY29udmVydCBzZWN0aW9uIGRpdnMgd2l0aCB0aGUgLnRhYnNldCBjbGFzcyB0byB0YWJzZXRzCiAgdmFyIHRhYnNldHMgPSAkKCJkaXYuc2VjdGlvbi50YWJzZXQiKTsKICB0YWJzZXRzLmVhY2goZnVuY3Rpb24oaSkgewogICAgYnVpbGRUYWJzZXQoJCh0YWJzZXRzW2ldKSk7CiAgfSk7Cn07Cgo="></script>
<script>
$(document).ready(function () {
window.buildTabsets("TOC");
});
</script>
<!-- code folding -->
<div class="fluid-row" id="header">
</div>
<p>When you adjust curve totals, the baseline curve is extended proportionately. The following illustrates that calculation given a baseline curve total of <strong>.2</strong> and a newly selected curve total of <strong>.25</strong>.</p>
<p><strong>Baseline Curve Total:</strong> <code>.04 + .06 + .1 = .2</code>.</p>
<div id="htmlwidget-9248" style="width:672px;height:480px;" class="plotly html-widget"></div>
<script type="application/json" data-for="htmlwidget-9248">{"x":{"data":[{"type":"lines","inherit":false,"x":[1,2,3],"y":[0.04,0.06,0.1],"group":"Baseline curve","name":"Baseline curve"},{"x":[1,2,3],"y":[0.05,0.075,0.125],"group":"New Curve","name":"New Curve"}],"layout":{"xaxis":{"autotick":false,"title":"Period"},"yaxis":{"autotick":false,"title":"Curve"},"margin":{"b":40,"l":60,"t":25,"r":10}},"url":null,"width":null,"height":null,"source":"A","config":{"modeBarButtonsToRemove":["sendDataToCloud"]},"base_url":"https://plot.ly"},"evals":[],"jsHooks":[]}</script>
<p>The model will rerun with:</p>
<p><strong>New Curve Total:</strong> <code>.05 + .075 + .125 = .25</code>.</p>
</div>
<script>
// add bootstrap table styles to pandoc tables
$(document).ready(function () {
$('tr.header').parent('thead').parent('table').addClass('table table-condensed');
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>